vector<int*> diversifyPopulation(vector<pdi>& costHeap, vector<int*> population, int numKeep, int numNew, DataFrame dataFrame, vector<int>* conflictGraph) { vector<int*> newPopulation; double fitness; int id; //vector<pdi> costHeapAux; //make_heap(costHeapAux.begin(), costHeapAux.end(), smallerOp()); for(int i = 0; i < numKeep; i++) { fitness = costHeap.front().first; id = costHeap.front().second; //costHeapAux.push_back(pdi(fitness, i)); //push_heap(costHeapAux.begin(), costHeapAux.end(), smallerOp()); pop_heap(costHeap.begin(), costHeap.end(), smallerOp()); costHeap.pop_back(); newPopulation.push_back(population[id]); } vector<int*> randomIndividuals = getPopulation(dataFrame.getInstance(), numNew); for(int i = 0; i < randomIndividuals.size(); i++) { KCenterSolver* ind = createSolver(dataFrame, randomIndividuals[i]); ind->localSearch(conflictGraph); newPopulation.push_back(ind->getSolution()); //costHeapAux.push_back(pdi(ind->getCost(), numKeep+i)); //push_heap(costHeapAux.begin(), costHeapAux.end(), smallerOp()); delete ind; } //vector<pdi>(costHeap).swap(costHeap); //costHeap = costHeapAux; return newPopulation; }