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(); } }
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++; } } }
/// <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); }
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"); } }
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); } }
public PredefinedNewsDayDistributionForm() { InitializeComponent(); d = new DayTypeDistribution(); DaysDistributions = new List <DayTypeDistribution>(); }
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++; } }