Пример #1
0
        protected override void OnLoad(EventArgs e)
        {
            arguments = new ExperimentationParameters()
            {
                VaccineEfficiencyRatio = 0.1,
                AtRiskRatio            = 0,
                VaccinatedRatio        = 0,
                ChiSquaredDistributionDegreesOfFreedom = 7,
                InfectionChiSquaredFactor = 4 * 7 / 10,
                RecoveryChiSquaredFactor  = 5 * 3 / 10,
                ChiSquaredRecoveryDistributionDegreesOfFreedom = 7,
                InfectionProbabilities = new List <double>()
                {
                    0.2, 0.2, 0.5, 0.4, 0.35, 0.3, 0.2, 0.2, 0.1, 0.1
                },
                //RecoveryProbabilities = new List<double>() { 0.05, 0.1, 0.25, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 },
                RecoveryProbabilities = new List <double>()
                {
                    0.05, 0.05, 0.1, 0.2, 0.3, 0.45, 0.6, 0.75, 0.9, 1
                },
                DaysOfImmunity = 4
            };
            SeriesListBox.BackColor = Color.YellowGreen;

            NetworkSelectBox.Text = "Seleccione Red";
            NetworkSelectBox.Items.Add("Red Simple");
            NetworkSelectBox.Items.Add("Red Media");
            NetworkSelectBox.Items.Add("Red Grande");
            NetworkSelectBox.Items.Add("Red Gigante");
            NetworkSelectBox.Items.Add("Red Masiva");
            NetworkSelectBox.Items.Add("Red Gargantua");

            _formViewer = new Microsoft.Msagl.GraphViewerGdi.GViewer();

            Simulator = new InfectionSimulator(new SimulatorParameters());

            _formViewer.Graph = Simulator.SetCurrentNetworkSimulation("Red Simple");

            NetworkSelectBox.SelectedItem = "Red Simple";

            _formViewer.ToolBarIsVisible     = false;
            _formViewer.LayoutEditingEnabled = false;
            ////_formViewer.LayoutEditingEnabled = true;
            ////_formViewer.FitGraphBoundingBox();

            //TextBoxAnalysis = ((RichTextBox)this.Controls.Find("AnalysisBox", true).First()).Lines;


            this.SuspendLayout();

            //UpdateAnalysisTextBoxes();

            //_formViewer.MouseClick += GraphPanel_MouseClick;
            _formViewer.Dock = System.Windows.Forms.DockStyle.Fill;

            ////busco panel y agrego el viewer
            var panel = this.Controls.Find("GraphPanel", true).First();

            panel.Dock = DockStyle.Fill;
            panel.Controls.Add(_formViewer);

            //InfectionChart = new Chart();
            //InfectionChart.Series.Clear();

            //var resultsPanel = this.Controls.Find("GraphResultsPanel", true).First();
            //resultsPanel.Controls.Add(InfectionChart);

            //InfectionChart.ChartAreas.Add(new ChartArea());
            //InfectionChart.Legends.Add(new Legend("Infected Per Day"));


            this.ResumeLayout();
        }
        private void Graficar_Infecciosidad_Click(object sender, EventArgs e)
        {
            for (int immunityDays = 12; immunityDays < 13; immunityDays += 4)
            {
                List <double> averageInfectedPerDay = new List <double>();

                Chart experimentResultChart = new Chart();

                System.Drawing.Color[] colors = { System.Drawing.Color.ForestGreen, System.Drawing.Color.Gold, System.Drawing.Color.OrangeRed, System.Drawing.Color.DeepSkyBlue, System.Drawing.Color.Black, System.Drawing.Color.Fuchsia, System.Drawing.Color.SaddleBrown, System.Drawing.Color.DimGray };

                _simulationParameters.VaccinatedRatio = 0;
                _simulationParameters.DaysOfImmunity  = immunityDays;

                for (int k = 6; k < 7; k += 1)
                {
                    _simulationParameters.InfectionChiSquaredFactor = k;

                    for (int i = 0; i < infectionTestDays; i++)
                    {
                        averageInfectedPerDay.Add(0);
                    }

                    var seriesInfected = new System.Windows.Forms.DataVisualization.Charting.Series
                    {
                        Name              = $"K = {k}",
                        Color             = colors[k - 1],
                        IsVisibleInLegend = true,
                        IsXValueIndexed   = true,
                        ChartType         = SeriesChartType.Line,
                        Font              = new Font(FontFamily.GenericMonospace, 50, System.Drawing.FontStyle.Regular),
                    };
                    //seriesInfected.Name
                    //experimentResultChart.Width = 200;
                    //experimentResultChart.Series.Titles
                    //seriesInfected.
                    experimentResultChart.Series.Add(seriesInfected);

                    var a = experimentResultChart.Series[0];

                    for (int i = 0; i < experimentsAmount; i++)
                    {
                        var testSimulator = new InfectionSimulator(_simulationParameters);
                        testSimulator.SetCurrentNetworkSimulation("Red2");
                        testSimulator.InfectRandomNode();

                        for (int j = 0; j < infectionTestDays; j++)
                        {
                            testSimulator.RunIteration();
                        }

                        var iterationInfectedPerDay = testSimulator.GetInfectionAmountHistory();

                        for (int j = 0; j < infectionTestDays; j++)
                        {
                            averageInfectedPerDay[j] += iterationInfectedPerDay[j];
                        }
                    }

                    for (int j = 0; j < infectionTestDays; j++)
                    {
                        averageInfectedPerDay[j] = averageInfectedPerDay[j] / experimentsAmount;

                        experimentResultChart.Series.First(s => s.Name == $"K = {k}").Points
                        .AddXY(j, averageInfectedPerDay[j]);
                    }
                }

                //experimentResultChart.Scale(new SizeF(5, 5));
                experimentResultChart.Size = new Size(1024, 800);

                //experimentResultChart.Series[0].MarkerBorderWidth = 2000;
                var chartArea = new ChartArea();

                chartArea.AxisY.LabelAutoFitStyle  = LabelAutoFitStyles.None;
                chartArea.AxisX.LabelAutoFitStyle  = LabelAutoFitStyles.None;
                chartArea.AxisY.LabelStyle.Font    = new System.Drawing.Font("Trebuchet MS", 15.25F, System.Drawing.FontStyle.Bold);
                chartArea.AxisX.LabelStyle.Font    = new System.Drawing.Font("Trebuchet MS", 15.25F, System.Drawing.FontStyle.Bold);
                chartArea.IsSameFontSizeForAllAxes = true;

                experimentResultChart.ChartAreas.Add(chartArea);
                experimentResultChart.Legends.Add(new Legend("Infected Per Day"));

                experimentResultChart.SaveImage(Environment.CurrentDirectory + $"\\EvaluarOscilacionesK6Y{immunityDays}DiasDeInmunidad.png", ChartImageFormat.Png);
            }

            MessageBox.Show("Se terminaron de guardar los resultados obtenidos");
        }