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);
        }
Exemple #2
0
        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);
        }