public void readLotSteps(ToyFabSettings settings) { using (var reader = new StreamReader(Path.Combine(Directory, @"Old\LotSteps.csv"))) { int row = 1; while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); if (row != 1 && values[0] != "") { LotStep step = new LotStep(Convert.ToInt32(values[0]), values[1]); settings.LotSteps.Add(values[1], step); workStationLotStepMapping.Add(step, values[2]); List <int?> eligibilities = new List <int?>(); for (int i = 4; i < values.Length; i++) { eligibilities.Add((values[i] != "") ? Convert.ToInt32(values[i]) : (int?)null); } MachineEligibilities.Add(step, eligibilities); } row++; } } }
private void readLotSteps(ToyFabSettings settings) { using (var reader = new StreamReader(Path.Combine(Directory, "LotSteps.csv"))) { int row = 1; while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); if (row != 1 && values[0] != "") { LotStep step = new LotStep(Convert.ToInt32(values[0]), values[1]); settings.LotSteps.Add(values[1], step); workStationLotStepMapping.Add(step, values[2]); int[] eligibilities = values.Skip(3).Select(x => Convert.ToInt32(x)).ToArray(); machineEligibilities.Add(step, eligibilities); } row++; } } }
private void readWorkStationsAndMachines(ToyFabSettings settings) { List <MachineData> machines = new List <MachineData>(); using (var reader = new StreamReader(Path.Combine(Directory, "WorkCenters.csv"))) { while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); string workStation; int nrMachines; if (values[0] == "WorkStation") { values = reader.ReadLine().Split(','); workStation = values[0]; nrMachines = Convert.ToInt32(values[1]); settings.WorkStations.Add(workStation); // header line reader.ReadLine(); // machine data for (int i = 0; i < nrMachines; i++) { values = reader.ReadLine().Split(','); machines.Add(new MachineData(values, workStation)); } } } settings.Machines = machines; } }
private void mapLotStepsPerWorkStation(ToyFabSettings settings) { foreach (string wc in settings.WorkStations) { settings.LotStepsPerWorkStation.Add(wc, new List <LotStep>()); } foreach (var mapping in workStationLotStepMapping) { settings.LotStepsPerWorkStation[mapping.Value].Add(mapping.Key); } }
public ToyFabSettings ReadToyFabSettings() { ToyFabSettings settings = new ToyFabSettings(); readWorkStations(settings); readLotSteps(settings); readSequences(settings); readCycleTimes(settings); mapLotStepsPerWorkStation(settings); return(settings); }
public void addEligibilitiesToMachines(ToyFabSettings settings) { foreach (KeyValuePair <LotStep, int[]> step in machineEligibilities) { for (int machineNr = 0; machineNr < step.Value.Length; machineNr++) { if (step.Value[machineNr] == 1) { settings.Machines.Where(x => x.Number == machineNr).First().Eligibilities.Add(step.Key); } } } }
public ToyFabSettings ReadToyFabSettings() { ToyFabSettings settings = new ToyFabSettings(); readWorkStationsAndMachines(settings); readLotSteps(settings); addEligibilitiesToMachines(settings); readSequences(settings); readCycleTimes(settings); mapLotStepsPerWorkStation(settings); return(settings); }
public void readCycleTimes(ToyFabSettings settings) { using (var reader = new StreamReader(Path.Combine(Directory, @"Old\TargetCycleTimes.csv"))) { while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); settings.Sequences[values[0]].TargetCycleTime = Convert.ToDouble(values[1]); } } if (settings.Sequences.Values.Select(x => x.TargetCycleTime).Contains(0)) { throw new Exception("Not all product types have target cycle time"); } }
public void readWorkStations(ToyFabSettings settings) { using (var reader = new StreamReader(Path.Combine(Directory, @"Old\WorkCenters.csv"))) { int row = 1; while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); if (row != 1) { settings.WorkStations.Add(values[0]); settings.WSServiceTimeDistributions.Add(values[0], new ExponentialDistribution(Convert.ToDouble(values[1]))); if (values.Length > 3) { settings.WSMachines.Add(values[0], Convert.ToInt32(values[3])); } } row++; } } }
public void readSequences(ToyFabSettings settings) { using (var reader = new StreamReader(Path.Combine(Directory, @"Old\Sequences.csv"))) { var header = reader.ReadLine().Split(','); string[] lotTypes = header.ToArray(); int count = lotTypes.Length; List <LotStep>[] sequences = new List <LotStep> [count]; for (int i = 0; i < count; i++) { sequences[i] = new List <LotStep>(); } while (!reader.EndOfStream) { string[] values = reader.ReadLine().Split(','); for (int i = 0; i < count; i++) { if (values[i] != "") { sequences[i].Add(settings.LotSteps[values[i]]); } } } for (int i = 0; i < count; i++) { settings.Sequences.Add(lotTypes[i], new Sequence(lotTypes[i], sequences[i])); } } }