Beispiel #1
0
void CVRPSolver::applyBestMoveInCurrentSolution(CSolutionInfo& curSolution, CMoveInfo& bestMove) {
    ++m_iGeneratedSolutionCount;
    ++m_iStepsSinceLastSolution;

    updateTabuCount(bestMove);

    int totalTour = static_cast<int>(bestMove.getModifiedTourCount());
    for (int i = 0; i < totalTour; ++i) {
        CTourInfo tourInfo;
        bool bIsValid = bestMove.getModifiedTourAt(i, tourInfo);

        if (bIsValid)
            curSolution.replaceTour(tourInfo);
    }
    updateFinalSolution(curSolution);
}