Exemple #1
0
        public List <int> CreatePeriodHistrogram(DadosEntrada Dados, DateTime startDate, DateTime endDate)
        {
            Calculos calc      = new Calculos();
            var      luminance = new List <double>();

            for (DateTime data = startDate; data <= endDate; data = data.AddDays(1))
            {
                Dados.Data = data;

                for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++)
                {
                    Dados.horas = hour;
                    calc.Calcula(Dados, hour);
                    luminance.Add(calc.Resultados.TotalLightCC);
                    luminance.Add(calc.Resultados.TotalLightPE);
                    luminance.Add(calc.Resultados.TotalLightCE);
                }
            }

            var qtyHour = new List <int>();

            //Func<string, bool> longBooks = delegate (double light) { return book.Length > 5; };
            for (double lumen = 0; lumen <= 200; lumen += 20.0)
            {
                qtyHour.Add(luminance.Count(k => k > lumen && k <= (lumen + 20.0)));
            }
            return(qtyHour);
        }
Exemple #2
0
        private PlotModel plotModelDln(DadosEntrada dados, int julianDate)
        {
            JulianCalendar julianCalendar = new JulianCalendar();
            DateTime       data           = new DateTime(DateTime.Now.Year, 1, 1);

            dados.Data = julianCalendar.AddDays(data, julianDate - 1);
            return(plotModelDln(dados));
        }
Exemple #3
0
 public void UpdateGraph(DadosEntrada dados, DateTime day)
 {
     if (dados == null)
     {
         return;
     }
     _dados        = dados;
     plotDln.Model = plotModelDln(_dados, day);
     plotDln.Invalidate();
 }
Exemple #4
0
 public void UpdateGraph(DadosEntrada dados, int julianDate)
 {
     if (dados == null)
     {
         return;
     }
     _dados        = dados;
     plotDln.Model = plotModelDln(dados, julianDate);
     plotDln.Invalidate();
 }
Exemple #5
0
        /// <summary>
        /// Shows a candle series graphics
        /// Based on <see href="https://www.investopedia.com/trading/candlestick-charting-what-is-it/"/>
        /// </summary>
        /// <param name="dados"></param>
        public void UpdateCandleGraph(DadosEntrada dados)
        {
            if (dados == null)
            {
                return;
            }
            _dados        = dados;
            plotDln.Model = plotModelHistogram(_dados);

            plotDln.Invalidate();
        }
Exemple #6
0
        private void BtTestNewGraph_Click(object sender, EventArgs e)
        {
            DadosEntrada dados = EntryData;

            dados.Data  = dateTimePickerInicial.Value;
            dados.horas = 8;

            Program.objParametros.UltimaDataInicial = dateTimePickerInicial.Value;
            Program.objParametros.UltimaDataFinal   = dateTimePickerFinal.Value;

            oxyDailyDlnTypicalDay.UpdateCandleGraph(dados);
        }
Exemple #7
0
        static IEnumerable <DadosSaida> Avalia(DadosEntrada dados, IFuncao f)
        {
            AchaRaiz ar = new AchaRaiz(f, dados.K);

            yield return(Avalia("Bissecão", () => ar.Bisseccao(dados.A, dados.B, dados.E0)));

            yield return(Avalia("Posição Falsa", () => ar.MPF(dados.A, dados.B, dados.E0, dados.E1)));

            yield return(Avalia("Posição Fixa (Prato Feito)", () => ar.MPF2(dados.X0, dados.E0, dados.E1)));

            yield return(Avalia("Raphson", () => ar.Raphson(dados.X0, dados.E0, dados.E1)));

            yield return(Avalia("Secante", () => ar.Secante(dados.X0, dados.X1, dados.E0, dados.E1)));
        }
Exemple #8
0
        private static DadosEntrada LerDados()
        {
            DadosEntrada d1 = new DadosEntrada();

            Console.Write("Estado: ");
            d1.Estado = Console.ReadLine();

            Console.Write("Cidade: ");
            d1.Cidade = Console.ReadLine();

            Console.Write("Rua: ");
            d1.Rua = Console.ReadLine();

            Console.Write("Numero: ");
            d1.Numero = Console.ReadLine();

            Console.Write("Cep: ");
            d1.Cep = Console.ReadLine();

            return d1;
        }
Exemple #9
0
        private static DadosEntrada LerDados()
        {
            DadosEntrada d1 = new DadosEntrada();

            Console.Write("Estado: ");
            d1.Estado = Console.ReadLine();

            Console.Write("Cidade: ");
            d1.Cidade = Console.ReadLine();

            Console.Write("Rua: ");
            d1.Rua = Console.ReadLine();

            Console.Write("Numero: ");
            d1.Numero = Console.ReadLine();

            Console.Write("Cep: ");
            d1.Cep = Console.ReadLine();

            return(d1);
        }
Exemple #10
0
        private void BtCalculaDiaTipico_Click(object sender, EventArgs e)
        {
            string       mensagemErro = "";
            DadosEntrada dados        = EntryData;

            dados.Data  = dateTimePickerInicial.Value;
            dados.horas = 8;

            Program.objParametros.UltimaDataInicial = dateTimePickerInicial.Value;
            Program.objParametros.UltimaDataFinal   = dateTimePickerFinal.Value;

            CalculaPeriodo calcDia = new CalculaPeriodo(dados, Program.objParametros.UltimaDataInicial, Program.objParametros.UltimaDataFinal);

            calcDia.Mensagem += new dlMensagem(SendMessage);

            if (!calcDia.Calcula(ref mensagemErro))
            {
                MessageBox.Show(mensagemErro);
                return;
            }
            oxyDailyDlnTypicalDay.UpdateGraph(dados, calcDia.TypicalDay);
        }
Exemple #11
0
        public ActionResult Index(DadosEntrada model)
        {
            if (ModelState.IsValid)
            {
                IFuncao f;
                #region Leitura da função
                if (!string.IsNullOrWhiteSpace(model.F))
                {
                    f = new FuncaoTexto(model.F);
                    #region "Validação" da função
                    try
                    {
                        //Gambiarra pra testar se a função é válida
                        string obj = f.Em(model.A).ToString();
                        obj = f.Em(model.X0).ToString();
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError("F", "Função inválida.");
                    }
                    #endregion
                }
                else
                {
                    f = new FuncaoDelegate(x => Pow(x, 2) + 2 * x);
                }
                #endregion

                if (ModelState.IsValid)
                {
                    var res = Avalia(model, f);
                    return(View("Result", res));
                }
            }

            return(View(model));
        }
Exemple #12
0
        public ActionResult Index()
        {
            DadosEntrada dados = new DadosEntrada();

            return(View(dados));
        }
Exemple #13
0
        private PlotModel plotModelDln(DadosEntrada dados)
        {
            Calculos calc = new Calculos();

            // Create the data collection
            var dataCC = new Collection <LuminanceData>();
            var dataPE = new Collection <LuminanceData>();
            var dataCE = new Collection <LuminanceData>();


            double maxValue = double.MinValue;

            for (double hora = dados.StartTime; hora <= dados.EndTime; hora += 0.2)
            {
                calc.Calcula(dados, hora);
                double value = calc.Resultados.TotalLightCC;
                maxValue = Math.Max(maxValue, value);
                dataCC.Add(new LuminanceData {
                    Hour = hora, Value = value
                });
                dataPE.Add(new LuminanceData {
                    Hour = hora, Value = calc.Resultados.TotalLightPE
                });
                dataCE.Add(new LuminanceData {
                    Hour = hora, Value = calc.Resultados.TotalLightCE
                });
            }
            var lineSeriesCC = new LineSeries()
            {
                DataFieldY  = "Value",
                Title       = "CC",
                DataFieldX  = "Hour",
                ItemsSource = dataCC,
                Smooth      = true,
            };
            //string xx= lineSeriesCC.TrackerFormatString;
            //{ 0}
            //{ 1}: { 2}
            //{ 3}: { 4}


            var lineSeriesPE = new LineSeries()
            {
                Title       = "PE",
                DataFieldY  = "Value",
                DataFieldX  = "Hour",
                ItemsSource = dataPE,
                Smooth      = true,
            };
            var lineSeriesCE = new LineSeries()
            {
                Title       = "CE",
                DataFieldY  = "Value",
                DataFieldX  = "Hour",
                ItemsSource = dataCE,
                Smooth      = true,
            };


            var tmp = new PlotModel {
                Title = dados.Data.ToShortDateString()
            };

            tmp.Axes.Add(new LinearAxis()
            {
                MajorGridlineStyle = LineStyle.Solid,
                MinorGridlineStyle = LineStyle.Dot,
                TickStyle          = TickStyle.Outside,
                Title    = "Day Light",
                Position = AxisPosition.Left,
                Maximum  = 200, //maxValue + 10,
                Minimum  = 0,
            });

            tmp.Axes.Add(new LinearAxis()
            {
                MajorGridlineStyle = LineStyle.Solid,
                MinorGridlineStyle = LineStyle.Dot,
                TickStyle          = TickStyle.Outside,
                Title    = "Hour",
                Position = AxisPosition.Bottom,
            });

            tmp.Series.Add(lineSeriesCC);
            tmp.Series.Add(lineSeriesPE);
            tmp.Series.Add(lineSeriesCE);

            return(tmp);
        }
Exemple #14
0
        private PlotModel plotModelHistogram(DadosEntrada dados)
        {
            string mensagemErro = "";

            try
            {
                DeedleAnalysis dataAnalysis = new DeedleAnalysis();
                DateTime       startDate    = Program.objParametros.UltimaDataInicial;
                DateTime       endDate      = Program.objParametros.UltimaDataFinal;
                //int maxCount = Convert.ToInt32(endDate.Subtract(startDate).TotalDays) * (Program.objParametros.EndTime - Program.objParametros.StartTime + 1);

                Calculos   calc      = new Calculos();
                var        luminance = new List <double>();
                List <int> dataCC    = new List <int>()
                {
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                };
                List <int> dataPE = new List <int>()
                {
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                };
                List <int> dataCE = new List <int>()
                {
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                };

                for (DateTime data = startDate; data <= endDate; data = data.AddDays(1))
                {
                    dados.Data = data;

                    for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++)
                    {
                        dados.horas = hour;
                        calc.Calcula(dados, hour);
                        dataCC[indValue(calc.Resultados.TotalLightCC)]++;
                        dataPE[indValue(calc.Resultados.TotalLightPE)]++;
                        dataCE[indValue(calc.Resultados.TotalLightCE)]++;
                    }
                }
                int maxCount = Math.Max(Math.Max(dataCC.Max(), dataCE.Max()), dataPE.Max());
                List <ColumnItem> itemsCC = dataCC.Select(x => new ColumnItem(x)).ToList();
                List <ColumnItem> itemsPE = dataPE.Select(x => new ColumnItem(x)).ToList();
                List <ColumnItem> itemsCE = dataCE.Select(x => new ColumnItem(x)).ToList();


                var histogramPlot = new PlotModel {
                    Title = "Hours with same light"
                };


                //return dataAnalysis.ColumnSeries();

                // Add 2 axis
                var categoryAxis = new CategoryAxis {
                    Position = AxisPosition.Bottom
                };
                categoryAxis.Labels.Add("20");
                categoryAxis.Labels.Add("40");
                categoryAxis.Labels.Add("60");
                categoryAxis.Labels.Add("80");
                categoryAxis.Labels.Add("100");
                categoryAxis.Labels.Add("120");
                categoryAxis.Labels.Add("140");
                categoryAxis.Labels.Add("160");
                categoryAxis.Labels.Add("180");
                categoryAxis.Labels.Add("200");
                categoryAxis.Labels.Add("220");

                histogramPlot.Axes.Add(categoryAxis);

                histogramPlot.Axes.Add(new LinearAxis()
                {
                    MajorGridlineStyle = LineStyle.Solid,
                    MinorGridlineStyle = LineStyle.Dot,
                    Maximum            = ((maxCount / 100) + 1) * 100,
                    Minimum            = 0,
                    TickStyle          = TickStyle.Outside,
                    Title    = "Qty Hours",
                    Position = AxisPosition.Left,
                });


                var serieCC = new ColumnSeries()
                {
                    Title = "Day Light CC",
                    //TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
                    ItemsSource = itemsCC,
                    //LabelPlacement = LabelPlacement.Inside,
                    //LabelFormatString = "{0} times",
                    //FillColor = OxyColor.FromRgb(44, 44, 44),
                };
                histogramPlot.Series.Add(serieCC);

                var seriePE = new ColumnSeries()
                {
                    Title          = "Day Light PE",
                    ItemsSource    = itemsPE,
                    LabelPlacement = LabelPlacement.Inside,
                };
                histogramPlot.Series.Add(seriePE);

                var serieCE = new ColumnSeries()
                {
                    Title          = "Day Light CE",
                    ItemsSource    = itemsCE,
                    LabelPlacement = LabelPlacement.Inside,
                };
                histogramPlot.Series.Add(serieCE);

                return(histogramPlot);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(null);
            }
        }
Exemple #15
0
        private PlotModel plotModelCAndleDln(DadosEntrada Dados)
        {
            string mensagemErro = "";

            try
            {
                var candlePlot = new PlotModel {
                    Title = "Candle"
                };
                DateTime DataInicial = Program.objParametros.UltimaDataInicial;
                DateTime DataFinal   = Program.objParametros.UltimaDataFinal;

                // Create two axis
                candlePlot.Axes.Add(new DateTimeAxis {
                    Position = AxisPosition.Bottom, Minimum = DateTimeAxis.ToDouble(DataInicial), Maximum = DateTimeAxis.ToDouble(DataFinal), StringFormat = "d/M"
                });
                LinearAxis linearAxis1 = new LinearAxis()
                {
                    Position           = AxisPosition.Right,
                    MajorGridlineStyle = LineStyle.Dot,
                    MinorGridlineStyle = LineStyle.Dot,
                    MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                    TicklineColor      = OxyColor.FromRgb(82, 82, 82)
                };
                candlePlot.Axes.Add(linearAxis1);


                Calculos calc = new Calculos();

                // Create the data collection
                var luminanceData = new Collection <LuminanceData>();


                for (DateTime data = DataInicial; data <= DataFinal; data = data.AddDays(1))
                {
                    Dados.Data = data;
                    EnviaMensagem("Calculating " + data.ToString("dd - MMM"));
                    double        maxValue = double.MinValue, minValue = double.MaxValue;
                    LuminanceData luminance = new LuminanceData();
                    for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++)
                    {
                        Dados.horas = hour;
                        calc.Calcula(Dados, hour);
                        maxValue = Math.Max(maxValue, calc.Resultados.TotalLightCC);
                        minValue = Math.Min(minValue, calc.Resultados.TotalLightCE);
                    }
                    luminance.Data  = data;
                    luminance.Open  = 1.3 * minValue;
                    luminance.Close = 0.7 * maxValue;
                    luminance.High  = maxValue;
                    luminance.Low   = minValue;
                    luminanceData.Add(luminance);
                }


                //string xx= lineSeriesCC.TrackerFormatString;
                //{ 0}
                //{ 1}: { 2}
                //{ 3}: { 4}

                var candleSerie = new CandleStickSeries()
                {
                    Title               = "Day Light",
                    Color               = OxyColors.Black,
                    IncreasingColor     = OxyColor.FromRgb(0, 197, 49),
                    DecreasingColor     = OxyColor.FromRgb(255, 95, 95),
                    DataFieldX          = "Data",
                    DataFieldHigh       = "High",
                    DataFieldLow        = "Low",
                    DataFieldClose      = "Close",
                    DataFieldOpen       = "Open",
                    TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
                    ItemsSource         = luminanceData
                };
                candlePlot.Series.Add(candleSerie);

                return(candlePlot);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(null);
            }
        }
Exemple #16
0
        //public PlotModel Example2()
        //{
        //    var tmp = new PlotModel("Test");
        //    tmp.Axes.Add(new LinearAxis(AxisPosition.Left) { MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot, TickStyle = TickStyle.Outside });
        //    DateTime dt = new DateTime(2010, 1, 1);
        //    tmp.Axes.Add(new DateTimeAxis(dt, dt.AddDays(1), AxisPosition.Bottom, null, null, DateTimeIntervalType.Hours)
        //    {
        //        MajorGridlineStyle = LineStyle.Solid,
        //        Angle = 90,
        //        StringFormat = "HH:mm",
        //        MajorStep = 1.0 / 24 / 2, // 1/24 = 1 hour, 1/24/2 = 30 minutes
        //        IsZoomEnabled = true,
        //        MaximumPadding = 0,
        //        MinimumPadding = 0,
        //        TickStyle = TickStyle.None
        //    });

        //    var ls = new LineSeries("Line1") { DataFieldX = "X", DataFieldY = "Y" };
        //    List<Item> ii = new List<Item>();

        //    for (int i = 0; i < 24; i++)
        //        ii.Add(new Item { X = dt.AddHours(i), Y = i * i });
        //    ls.ItemsSource = ii;
        //    tmp.Series.Add(ls);
        //    return tmp;
        //}


        //// Make a new plotmodel
        //private PlotModel model = new PlotModel();

        //// Create the OxyPlot graph for Salt Split
        //private OxyPlot.Wpf.PlotView plot = new OxyPlot.Wpf.PlotView();

        //// Function to plot data
        //private void plotData(double numWeeks, double startingSS)
        //{
        //    List<LineSeries> listPointAray = new List<LineSeries>();

        //    // Initialize new Salt Split class for acess to data variables
        //    Salt_Split_Builder calcSS = new Salt_Split_Builder();
        //    calcSS.compute(numWeeks, startingSS, maxDegSS);

        //    // Create new Line Series
        //    LineSeries linePoints = new LineSeries()
        //    { StrokeThickness = 1, MarkerSize = 1, Title = numWeeks.ToString() + " weeks" };


        //    // Add each point to the new series
        //    foreach (var point in calcSS.saltSplitCurve)
        //    {
        //        DataPoint XYpoint = new DataPoint();
        //        XYpoint = new DataPoint(point.Key, point.Value * 100);
        //        linePoints.Format("%", XYpoint.Y);
        //        linePoints.Points.Add(XYpoint);
        //    }

        //    listPointAray.Add(linePoints);

        //    // Add Chart Title
        //    model.Title = "Salt Split Degradation";

        //    // Add Each series to the
        //    foreach (var series in listPointAray)
        //    {
        //        // Define X-Axis
        //        OxyPlot.Axes.LinearAxis Xaxis = new OxyPlot.Axes.LinearAxis();
        //        Xaxis.Maximum = numWeeks;
        //        Xaxis.Minimum = 0;
        //        Xaxis.Position = OxyPlot.Axes.AxisPosition.Bottom;
        //        Xaxis.Title = "Number of Weeks";
        //        model.Axes.Add(Xaxis);

        //        //Define Y-Axis
        //        OxyPlot.Axes.LinearAxis Yaxis = new OxyPlot.Axes.LinearAxis();
        //        Yaxis.MajorStep = 15;
        //        Yaxis.Maximum = calcSS.saltSplitCurve.Last().Value * 100;
        //        Yaxis.MaximumPadding = 0;
        //        Yaxis.Minimum = 0;
        //        Yaxis.MinimumPadding = 0;
        //        Yaxis.MinorStep = 5;
        //        Yaxis.Title = "Percent Degradation";
        //        //Yaxis.StringFormat = "{0.00} %";
        //        model.Axes.Add(Yaxis);

        //        model.Series.Add(series);
        //    }


        //    // Add the plot to the window

        //    plot.Model = model;
        //    plot.InvalidatePlot(true);
        //    SaltSplitChartGrid.Children.Clear();
        //    SaltSplitChartGrid.Children.Add(plot);

        //}


        #region Line plot model
        private PlotModel plotModelDln(DadosEntrada dados, DateTime day)
        {
            dados.Data = day;
            return(plotModelDln(dados));
        }