public Requirement[] GetInputs() { string input = System.IO.File.ReadAllText(this.inputDir + this.filename); string[] lines = input.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); Requirement[] vals = new Requirement[this.numRecs]; for (int r = 0; r < this.numRecs; r++) { string[] lineR = lines[r + 1].Split(','); vals[r] = new Requirement(); Console.WriteLine(r + " - " + lineR[1]); vals[r].name = lineR[0]; vals[r].score = Convert.ToDouble(lineR[1]); vals[r].cost = Convert.ToDouble(lineR[2]); } return(vals); }
static List <Individual> GenerateIndiv(List <Individual> tabuList, Individual pivot) { RequirementWrapper[] score_sort = new RequirementWrapper[pivot.dimensionality]; RequirementWrapper[] cost_sort = new RequirementWrapper[pivot.dimensionality]; RequirementWrapper[] score_cost_sort = new RequirementWrapper[pivot.dimensionality]; for (int i = 0; i < pivot.dimensionality; i++) { score_sort[i] = new RequirementWrapper(); cost_sort[i] = new RequirementWrapper(); score_cost_sort[i] = new RequirementWrapper(); score_sort[i].element.Copy(pivot.elements[i]); cost_sort[i].element.Copy(pivot.elements[i]); score_cost_sort[i].element.Copy(pivot.elements[i]); score_sort[i].index = cost_sort[i].index = score_cost_sort[i].index = i; } //sort: all sorts are in decending order of importance Requirement tempReq = new Requirement(); int tempIndex; for (int s = 0; s < pivot.dimensionality; s++) { for (int x = s + 1; x < pivot.dimensionality; x++) { if (score_sort[s].element.score < score_sort[x].element.score) //score sort { tempReq.Copy(score_sort[s].element); tempIndex = score_sort[s].index; score_sort[s].element.Copy(score_sort[x].element); score_sort[s].index = score_sort[x].index; score_sort[x].element.Copy(tempReq); score_sort[x].index = tempIndex; } if (cost_sort[s].element.cost > cost_sort[x].element.cost) //cost sort { tempReq.Copy(cost_sort[s].element); tempIndex = cost_sort[s].index; cost_sort[s].element.Copy(cost_sort[x].element); cost_sort[s].index = cost_sort[x].index; cost_sort[x].element.Copy(tempReq); cost_sort[x].index = tempIndex; } if ((score_cost_sort[s].element.score / score_cost_sort[s].element.cost) < (score_cost_sort[x].element.score / score_cost_sort[x].element.cost)) //score_cost sort { tempReq.Copy(score_cost_sort[s].element); tempIndex = score_cost_sort[s].index; score_cost_sort[s].element.Copy(score_cost_sort[x].element); score_cost_sort[s].index = score_cost_sort[x].index; score_cost_sort[x].element.Copy(tempReq); score_cost_sort[x].index = tempIndex; } } } List <Individual> toReturn = new List <Individual>(); Individual temp = new Individual(pivot.elements); temp = LoadOrder(score_sort, cost_sort, score_cost_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } temp = LoadOrder(score_sort, score_cost_sort, cost_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } temp = LoadOrder(cost_sort, score_sort, score_cost_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } temp = LoadOrder(cost_sort, score_cost_sort, score_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } temp = LoadOrder(score_cost_sort, score_sort, cost_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } temp = LoadOrder(score_cost_sort, cost_sort, score_sort, pivot); if (!toReturn.Contains(temp)) { toReturn.Add(temp); } return(toReturn); }