private void inputs(string filename) { string[] lines = File.ReadAllLines(filename); OrderUpTo = Int32.Parse(lines[1]); ReviewPeriod = Int32.Parse(lines[4]); StartInventoryQuantity = Int32.Parse(lines[7]); StartLeadDays = Int32.Parse(lines[10]); StartOrderQuantity = Int32.Parse(lines[13]); NumberOfDays = Int32.Parse(lines[16]); string[] temp; for (int i = 19; i < 24; i++) { temp = lines[i].Split(','); DemandDistribution.Add(new Distribution()); DemandDistribution[i - 19].Value = Int32.Parse(temp[0]); DemandDistribution[i - 19].Probability = Decimal.Parse(temp[1]); } for (int i = 26; i < 29; i++) { temp = lines[i].Split(','); LeadDaysDistribution.Add(new Distribution()); LeadDaysDistribution[i - 26].Value = Int32.Parse(temp[0]); LeadDaysDistribution[i - 26].Probability = Decimal.Parse(temp[1]); } }
private SimulationSystem LoadSystemFromUI() { List <DemandDistribution> demandDistributions = new List <DemandDistribution>(); for (int i = 0; i < DemandDistributionGrid.Rows.Count - 1; i++) { DataGridViewRow row = DemandDistributionGrid.Rows[i]; DemandDistribution demandDistribution = new DemandDistribution() { Demand = int.Parse((string)row.Cells[0].Value) }; for (int j = 1; j < 4; j++) { demandDistribution.DayTypeDistributions.Add(new DayTypeDistribution() { Probability = decimal.Parse((string)row.Cells[j].Value), DayType = (Enums.DayType)(j - 1) }); } demandDistributions.Add(demandDistribution); } return(new SimulationSystem() { NumOfNewspapers = (int)NumOfNewsPapers.Value, NumOfRecords = (int)NumofRecords.Value, PurchasePrice = PurchasePrice.Value, ScrapPrice = ScrapPrice.Value, SellingPrice = SellingPrice.Value, DemandDistributions = demandDistributions, DayTypeDistributions = new List <DayTypeDistribution>() { new DayTypeDistribution() { Probability = GoodProbability.Value, DayType = Enums.DayType.Good }, new DayTypeDistribution() { Probability = FairProbability.Value, DayType = Enums.DayType.Fair }, new DayTypeDistribution() { Probability = PoorProbabilty.Value, DayType = Enums.DayType.Poor } } }); }
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++; } } }
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"); } }
public void readfile(string fna) { FileStream fs = new FileStream(fna, FileMode.Open); StreamReader sr = new StreamReader(fs); while (sr.Peek() != -1) { string fineline = sr.ReadLine(); if (fineline == "") { continue; } else if (fineline.Contains("OrderUpTo")) { OrderUpTo = int.Parse(sr.ReadLine()); } else if (fineline.Contains("ReviewPeriod")) { ReviewPeriod = int.Parse(sr.ReadLine()); } else if (fineline.Contains("StartInventoryQuantity")) { StartInventoryQuantity = int.Parse(sr.ReadLine()); } else if (fineline.Contains("StartLeadDays")) { StartLeadDays = int.Parse(sr.ReadLine()); } else if (fineline.Contains("StartOrderQuantity")) { StartOrderQuantity = int.Parse(sr.ReadLine()); } else if (fineline.Contains("NumberOfDays")) { NumberOfDays = int.Parse(sr.ReadLine()); } else if (fineline.Contains("DemandDistribution")) { int cp = 0; while (true) { string td = sr.ReadLine(); if (td == "") { break; } string[] l = td.Split(','); Distribution x = new Distribution(); x.Value = int.Parse(l[0]); int pro = Convert.ToInt32(float.Parse(l[1]) * 100); x.Probability = pro; x.CummProbability = cp + pro; x.MinRange = cp + 1; cp += pro; x.MaxRange = cp; DemandDistribution.Add(x); } } else if (fineline.Contains("LeadDaysDistribution")) { int cp = 0; while (true) { string td = sr.ReadLine(); if (td == "" || td == null) { break; } string[] l = td.Split(','); Distribution x = new Distribution(); x.Value = int.Parse(l[0]); int pro = Convert.ToInt32(float.Parse(l[1]) * 100); x.Probability = pro; x.CummProbability = cp + pro; x.MinRange = cp + 1; cp += pro; x.MaxRange = cp; LeadDaysDistribution.Add(x); } } } fs.Close(); }
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 void ReadInput(string filepath) { string str; FileStream fs = new FileStream(filepath, FileMode.Open); StreamReader SR = new StreamReader(fs); // char s = (char)SR.Read(); while (SR.Peek() != -1) { str = SR.ReadLine(); if (str == "OrderUpTo") { OrderUpTo = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "ReviewPeriod") { ReviewPeriod = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "StartLeadDays") { StartLeadDays = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "StartInventoryQuantity") { StartInventoryQuantity = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "StartOrderQuantity") { StartOrderQuantity = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "NumberOfDays") { NumberOfDays = int.Parse(SR.ReadLine()); SR.ReadLine(); continue; } else if (str == "DemandDistribution") { str = SR.ReadLine(); while (str != "") { string[] substrings = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); Distribution DD = new Distribution(); DD.Value = int.Parse(substrings[0]); DD.Probability = decimal.Parse(substrings[1]); str = SR.ReadLine(); DemandDistribution.Add(DD); } generate_cumulative_range(DemandDistribution); continue; } else if (str == "LeadDaysDistribution") { str = SR.ReadLine(); while (str != "" && str != null) { string[] substrings = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); Distribution LTD = new Distribution(); LTD.Value = int.Parse(substrings[0]); LTD.Probability = decimal.Parse(substrings[1]); str = SR.ReadLine(); LeadDaysDistribution.Add(LTD); } generate_cumulative_range(LeadDaysDistribution); continue; } } SR.Close(); }
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++; } }
///////////// My Methods ///////////// public void ReadFromFile(string path) { Distribution distribution; List <string> fileLines = new List <string>(); StreamReader sr = new StreamReader(path); while (!sr.EndOfStream) { fileLines.Add(sr.ReadLine()); } sr.Close(); int idx0 = fileLines.IndexOf("OrderUpTo"); OrderUpTo = Convert.ToInt32(fileLines[idx0 + 1]); int idx1 = fileLines.IndexOf("ReviewPeriod"); ReviewPeriod = Convert.ToInt32(fileLines[idx1 + 1]); int idx2 = fileLines.IndexOf("StartInventoryQuantity"); StartInventoryQuantity = Convert.ToInt32(fileLines[idx2 + 1]); int idx3 = fileLines.IndexOf("StartLeadDays"); StartLeadDays = Convert.ToInt32(fileLines[idx3 + 1]); int idx4 = fileLines.IndexOf("StartOrderQuantity"); StartOrderQuantity = Convert.ToInt32(fileLines[idx4 + 1]); int idx5 = fileLines.IndexOf("NumberOfDays"); NumberOfDays = Convert.ToInt32(fileLines[idx5 + 1]); int idx6 = fileLines.IndexOf("DemandDistribution"); for (int i = idx6 + 1; i < fileLines.Count(); ++i) { if (string.IsNullOrEmpty(fileLines[i])) { break; } distribution = new Distribution(); string[] numbers = fileLines[i].Split(new string[] { ", " }, StringSplitOptions.None); distribution.Value = Convert.ToInt32(numbers[0]); distribution.Probability = Convert.ToDecimal(numbers[1]); DemandDistribution.Add(distribution); } int idx7 = fileLines.IndexOf("LeadDaysDistribution"); for (int i = idx7 + 1; i < fileLines.Count(); ++i) { if (string.IsNullOrEmpty(fileLines[i])) { break; } distribution = new Distribution(); string[] numbers = fileLines[i].Split(new string[] { ", " }, StringSplitOptions.None); distribution.Value = Convert.ToInt32(numbers[0]); distribution.Probability = Convert.ToDecimal(numbers[1]); LeadDaysDistribution.Add(distribution); } }
/// <summary> /// Extracts simulation system out of a file /// </summary> /// <param name="path">path to simulation system file</param> static public SimulationSystem FromFile(string path) { FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read); StreamReader reader = new StreamReader(file); SimulationSystem system = new SimulationSystem(); while (reader.Peek() != -1) { string header = reader.ReadLine().Trim(); switch (header) { case "NumOfNewspapers": system.NumOfNewspapers = int.Parse(reader.ReadLine()); break; case "NumOfRecords": system.NumOfRecords = int.Parse(reader.ReadLine()); break; case "PurchasePrice": system.PurchasePrice = decimal.Parse(reader.ReadLine()); break; case "ScrapPrice": system.ScrapPrice = decimal.Parse(reader.ReadLine()); break; case "SellingPrice": system.SellingPrice = decimal.Parse(reader.ReadLine()); break; case "DayTypeDistributions": { string line = reader.ReadLine().Trim(); decimal[] arr = Array.ConvertAll(line.Split(','), decimal.Parse); int i = 0; foreach (decimal d in arr) { system.DayTypeDistributions.Add(new DayTypeDistribution() { Probability = d, DayType = (Enums.DayType)i++ }); } } break; case "DemandDistributions": { string line; while (!string.IsNullOrWhiteSpace(line = reader.ReadLine())) { decimal[] arr = Array.ConvertAll(line.Split(','), decimal.Parse); DemandDistribution demand = new DemandDistribution() { Demand = decimal.ToInt32(arr[0]) }; int i = 0; for (int j = 1; j < arr.Length; j++) { demand.DayTypeDistributions.Add(new DayTypeDistribution() { Probability = arr[j], DayType = (Enums.DayType)i++ }); } system.DemandDistributions.Add(demand); } } break; default: if (!string.IsNullOrWhiteSpace(header)) { throw new FormatException("Test case file contains an unknown header: " + header); } break; } } reader.Close(); return(system); }