public ISolution Mutate(ISolution solution) { ISolutionPair[] solutionPairs = new ISolutionPair[solution.GetSolutionPairs().Count]; int i = 0; foreach (var item in solution.GetSolutionPairs()) { var temp = item; solutionPairs[i] = temp; i++; } int rnd = this.random.Next(solutionPairs.Length); var wm = solutionPairs[rnd].WorkerMan; do { solutionPairs[rnd].WorkerMan = this.workerMens[random.Next(this.workerMens.Length)]; //megváltoztatom az egyik munkást } while (solutionPairs[rnd].WorkerMan == wm); return(new Solution() { SolutionPairs = solutionPairs.ToList() }); }
private int GetFitnessForSolutionPair(ISolutionPair pair, List<ISolutionPair> solutionPairs) { WorkerMan workerMan = pair.WorkerMan; WorkToDo workToDo = pair.WorkToDo; return (workerMan.WorkingTimeByComplexity(workToDo.Complexity) / workerMan.Quality); // idő/minőség = fitnessz }
private int GetFitnessForSolutionPair(ISolutionPair pair, List <ISolutionPair> solutionPairs) { WorkerMan workerMan = pair.WorkerMan; WorkToDo workToDo = pair.WorkToDo; //int maxWork = workerMan.WorkingMinutes; //var thisMenAllWorkTime = // solutionPairs // .Where(x => x.WorkerMan == workerMan) // .Select(x => x.WorkerMan.WorkingTimeByComplexity(x.WorkToDo.Complexity)).Sum(); //if (thisMenAllWorkTime > maxWork) //{ // return ((workerMan.WorkingTimeByComplexity(workToDo.Complexity) / workerMan.Quality)+1) * 1000; //ha nem fér bele a munka idejébe, akkor durván lehúzzuk //} //else //{ return(workerMan.WorkingTimeByComplexity(workToDo.Complexity) / workerMan.Quality); // idő/minőség = fitnessz // } }