Esempio n. 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            d = new DayTypeDistribution();
            for (int i = 0; i < Enum.GetNames(typeof(Enums.DayType)).Length; i++)
            {
                if (comboBox1.SelectedItem.ToString() == ((Enums.DayType)i).ToString())
                {
                    d.DayType = (Enums.DayType)i;
                }
            }

            d.Probability = double.Parse(Probability.Text.ToString());
            if (cnt == 0)
            {
                d.MinRange        = 1;
                d.CummProbability = d.Probability;
            }
            else
            {
                d.CummProbability = DaysDistributions[cnt - 1].CummProbability + d.Probability;
                d.MinRange        = DaysDistributions[cnt - 1].MaxRange + 1;
            }
            d.MaxRange = (int)(d.CummProbability * 100);
            cnt++;

            comboBox1.Text = "";
            comboBox1.Items.Remove(comboBox1.SelectedItem);
            Probability.Text = "";
            DaysDistributions.Add(d);
            cumPro += d.Probability;
            if (cumPro >= 1)
            {
                this.Close();
            }
        }
Esempio n. 2
0
        private void button2_Click(object sender, EventArgs e)
        {
            DemandDistribution  d  = new DemandDistribution();
            DayTypeDistribution dd = new DayTypeDistribution();
            int cnt = 0;

            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
                d = new DemandDistribution();
                mySystem.DemandDistributions.Add(d);
                mySystem.DemandDistributions[i].Demand = int.Parse(dataGridView1[0, i].Value.ToString());
                for (int j = 1; j < mySystem.DayTypeDistributions.Count + 1; j++)
                {
                    dd         = new DayTypeDistribution();
                    dd.DayType = (Enums.DayType)(j - 1);
                    if (i == 0)
                    {
                        dd.Probability     = double.Parse(dataGridView1[j, i].Value.ToString());
                        dd.CummProbability = double.Parse(dataGridView1[j, i].Value.ToString());
                        dd.MinRange        = 1;
                        dd.MaxRange        = (int)(dd.CummProbability * 100);
                    }
                    else
                    {
                        dd.Probability = double.Parse(dataGridView1[j, i].Value.ToString());


                        dd.CummProbability =
                            dd.Probability + mySystem.DemandDistributions[i - 1].DayTypeDistributions[Math.Abs(j - 1)].CummProbability;
                        dd.MinRange =
                            (mySystem.DemandDistributions[i - 1].DayTypeDistributions[j - 1].MaxRange) + 1;
                        dd.MaxRange = (int)(dd.CummProbability * 100);
                    }
                    mySystem.DemandDistributions[i].DayTypeDistributions.Add(dd);

                    cnt++;
                }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Calculates a single row in the distribution table
 /// </summary>
 /// <param name="Current">The current row</param>
 /// <param name="Previous">The previous row</param>
 /// <param name="RandomNumber">The random number that selects a row in the distribution</param>
 /// <returns>True if random number falls in range of Current row, false otherwise</returns>
 static private bool CalculateSingleRowDistribution(DayTypeDistribution Current, DayTypeDistribution Previous, int RandomNumber)
 {
     if (!Current.IsCalculated)
     {
         if (Previous == null)
         {
             Current.CummProbability = Current.Probability;
             Current.MinRange        = 1;
         }
         else
         {
             Current.CummProbability = Current.Probability + Previous.CummProbability;
             Current.MinRange        = Previous.MaxRange + 1;
         }
         Current.MaxRange     = (int)(Current.CummProbability * 100);
         Current.IsCalculated = true;
     }
     if (RandomNumber <= Current.MaxRange && RandomNumber >= Current.MinRange)
     {
         return(true);
     }
     return(false);
 }
Esempio n. 4
0
        private void read_data_Click(object sender, EventArgs e)
        {
            string test = "", filename = "";

            test     = testcase.Text.ToString();
            filename = @"C:\Users\Mahmoud\Desktop\Task2\Template\NewspaperSellerSimulation\TestCases\TestCase" + test[0] + ".txt";
            if (File.Exists(filename))
            {
                string text = System.IO.File.ReadAllText(filename);

                DayTypeDistribution D = new DayTypeDistribution();

                string[] lines = System.IO.File.ReadAllLines(filename);
                for (int i = 0; i < lines.Length; i++)
                {
                    if (lines[i] == "NumOfNewspapers")
                    {
                        i++;
                        simulationSystem.NumOfNewspapers = Convert.ToInt32(lines[i]);
                    }
                    if (lines[i] == "NumOfRecords")
                    {
                        i++;
                        simulationSystem.NumOfRecords = Convert.ToInt32(lines[i]);
                    }
                    if (lines[i] == "PurchasePrice")
                    {
                        i++;
                        simulationSystem.PurchasePrice = Convert.ToDecimal(lines[i]);
                    }
                    if (lines[i] == "ScrapPrice")
                    {
                        i++;
                        simulationSystem.ScrapPrice = Convert.ToDecimal(lines[i]);
                    }
                    if (lines[i] == "SellingPrice")
                    {
                        i++;
                        simulationSystem.SellingPrice = Convert.ToDecimal(lines[i]);
                    }
                    if (lines[i] == "DayTypeDistributions")
                    {
                        i++;
                        string[] DayTypeD;
                        DayTypeD    = lines[i].Split(',');
                        DayTypeD[1] = DayTypeD[1].Remove(0, 1);
                        DayTypeD[2] = DayTypeD[2].Remove(0, 1);

                        D             = new DayTypeDistribution();
                        D.DayType     = Enums.DayType.Good;
                        D.Probability = Convert.ToDecimal(DayTypeD[0]);
                        simulationSystem.DayTypeDistributions.Add(D);

                        D             = new DayTypeDistribution();
                        D.DayType     = Enums.DayType.Fair;
                        D.Probability = Convert.ToDecimal(DayTypeD[1]);
                        simulationSystem.DayTypeDistributions.Add(D);

                        D             = new DayTypeDistribution();
                        D.DayType     = Enums.DayType.Poor;
                        D.Probability = Convert.ToDecimal(DayTypeD[2]);
                        simulationSystem.DayTypeDistributions.Add(D);
                    }
                    if (lines[i] == "DemandDistributions")
                    {
                        i++;
                        string[]           DemandDist;
                        DemandDistribution demDist;
                        bool firstTime = true;
                        while (i < lines.Length)
                        {
                            demDist        = new DemandDistribution();
                            DemandDist     = lines[i].Split(',');
                            demDist.Demand = Convert.ToInt32(DemandDist[0]);
                            for (int j = 1; j < DemandDist.Length; j++)
                            {
                                D = new DayTypeDistribution();
                                DemandDist[j].Remove(0, 1);

                                if (j == 1)
                                {
                                    D.DayType = Enums.DayType.Good;
                                }
                                else if (j == 2)
                                {
                                    D.DayType = Enums.DayType.Fair;
                                }
                                else
                                {
                                    D.DayType = Enums.DayType.Poor;
                                }

                                D.Probability = Convert.ToDecimal(DemandDist[j]);
                                demDist.DayTypeDistributions.Add(D);
                            }
                            simulationSystem.DemandDistributions.Add(demDist);
                            i++;
                        }
                    }
                }
                MessageBox.Show("file has been read successfully");
            }
            else
            {
                MessageBox.Show("error in reading file");
            }
        }
Esempio n. 5
0
        private void button1_Click(object sender, EventArgs e)
        {
            sys = new SimulationSystem();

            // pass inputs to the system object
            sys.NumOfNewspapers = Convert.ToInt32(numOfNewspapers_txt.Text);
            sys.NumOfRecords    = Convert.ToInt32(numOfRecords_txt.Text);
            sys.PurchasePrice   = Convert.ToDecimal(purchasePrice_txt.Text);
            sys.SellingPrice    = Convert.ToDecimal(sellingPrice_txt.Text);
            sys.ScrapPrice      = Convert.ToDecimal(scrapPrice_txt.Text);

            DayTypeDistribution goodDist, fairDist, poorDist;

            goodDist = new DayTypeDistribution {
                DayType     = Enums.DayType.Good,
                Probability = Convert.ToDecimal(good_txt.Text)
            };
            sys.DayTypeDistributions.Add(goodDist);

            fairDist = new DayTypeDistribution
            {
                DayType     = Enums.DayType.Fair,
                Probability = Convert.ToDecimal(fair_txt.Text)
            };
            sys.DayTypeDistributions.Add(fairDist);

            poorDist = new DayTypeDistribution
            {
                DayType     = Enums.DayType.Poor,
                Probability = Convert.ToDecimal(poor_txt.Text)
            };
            sys.DayTypeDistributions.Add(poorDist);

            int numOfdemandDists = demandDists_dgv.Rows.Count - 1;
            DemandDistribution  demandDist;
            DayTypeDistribution dayDist;

            for (int i = 0; i < numOfdemandDists; i++)
            {
                demandDist        = new DemandDistribution();
                demandDist.Demand = Convert.ToInt32(demandDists_dgv.Rows[i].Cells[0].Value);

                for (int j = 0; j < sys.DayTypeDistributions.Count; j++)
                {
                    dayDist             = new DayTypeDistribution();
                    dayDist.DayType     = sys.DayTypeDistributions[j].DayType;
                    dayDist.Probability = Convert.ToDecimal(demandDists_dgv.Rows[i].Cells[j + 1].Value);

                    demandDist.DayTypeDistributions.Add(dayDist);
                }

                sys.DemandDistributions.Add(demandDist);
            }


            // call process functions
            sys.Initialize_Inputs();
            sys.Start_Process();

            // fill gui with result data
            results_dgv.Rows.Clear();
            foreach (var record in sys.SimulationTable)
            {
                results_dgv.Rows.Add(record.DayNo, record.RandomNewsDayType, record.NewsDayType.ToString(), record.RandomDemand, record.Demand, record.SalesProfit, record.LostProfit, record.ScrapProfit, record.DailyNetProfit);
            }
        }
Esempio n. 6
0
 public PredefinedNewsDayDistributionForm()
 {
     InitializeComponent();
     d = new DayTypeDistribution();
     DaysDistributions = new List <DayTypeDistribution>();
 }
Esempio n. 7
0
        public void fillSimSysObj(string[] sysData)
        {
            simSys.NumOfNewspapers = Convert.ToInt32(sysData[1]);
            simSys.NumOfRecords    = Convert.ToInt32(sysData[4]);
            simSys.PurchasePrice   = Convert.ToDecimal(sysData[7]);
            simSys.ScrapPrice      = Convert.ToDecimal(sysData[10]);
            simSys.SellingPrice    = Convert.ToDecimal(sysData[13]);

            //DayTypeDistributionTable
            string[] Day_line = sysData[16].Split(new string[] { ", " }, StringSplitOptions.None);
            for (int j = 0; j < 3; j++)
            {
                DayTypeDistribution dayTypeDistributionRow = new DayTypeDistribution();
                if (j == 0)
                {
                    dayTypeDistributionRow.DayType = Enums.DayType.Good;
                }
                else if (j == 1)
                {
                    dayTypeDistributionRow.DayType = Enums.DayType.Fair;
                }
                else if (j == 2)
                {
                    dayTypeDistributionRow.DayType = Enums.DayType.Poor;
                }

                dayTypeDistributionRow.Probability = Convert.ToDecimal(Day_line[j]);
                simSys.DayTypeDistributions.Add(dayTypeDistributionRow);
                //lsaaa
            }

            int i = 19;

            while (i < sysData.Count())
            {
                string[]           Demand_line           = sysData[i].Split(new string[] { ", " }, StringSplitOptions.None);
                DemandDistribution demandDistributionRow = new DemandDistribution();
                demandDistributionRow.Demand = Convert.ToInt32(Demand_line[0]);
                for (int j = 1; j <= 3; j++)
                {
                    DayTypeDistribution dayTypeDistributionRow = new DayTypeDistribution();
                    if (j == 1)
                    {
                        dayTypeDistributionRow.DayType = Enums.DayType.Good;
                    }
                    if (j == 2)
                    {
                        dayTypeDistributionRow.DayType = Enums.DayType.Fair;
                    }
                    if (j == 3)
                    {
                        dayTypeDistributionRow.DayType = Enums.DayType.Poor;
                    }
                    dayTypeDistributionRow.Probability = Convert.ToDecimal(Demand_line[j]);
                    demandDistributionRow.DayTypeDistributions.Add(dayTypeDistributionRow);
                }

                simSys.DemandDistributions.Add(demandDistributionRow);
                i++;
            }
        }