Example #1
0
void check_best_solution(vector<Ant*> *vec) {
	cout << "check_best_solution" << endl;
	if (vec->size() > 0) {
		if (best_cost == INVALID and best_coverage == INVALID) {
			best_cost = monitor.getCost(vec->at(0)->getCost());
			best_coverage = monitor.getCoverage(vec->at(0)->getCoverage());

			worse_cost = monitor.getCost(
					vec->at(POPULATION_SIZE - 1)->getCost());
			worse_coverage = monitor.getCoverage(
					vec->at(POPULATION_SIZE - 1)->getCoverage());
		}
		for (int i = 0; i < POPULATION_SIZE; i++) {
			vec->at(i)->setCost(monitor.getCost(vec->at(i)->getCost()));
			vec->at(i)->setCoverage(
					monitor.getCoverage(vec->at(i)->getCoverage()));

			if (vec->at(i)->getCost() > best_cost) {
				best_cost = vec->at(i)->getCost();
			} else if (vec->at(i)->getCost() < worse_cost) {
				worse_cost = vec->at(i)->getCost();
			}

			if (vec->at(i)->getCoverage() > best_coverage) {
				best_coverage = vec->at(i)->getCoverage();
			} else if (vec->at(i)->getCoverage() < worse_coverage) {
				worse_coverage = vec->at(i)->getCoverage();
			}
		}
		for (int i = 0; i < POPULATION_SIZE; i++) {
			double quality = monitor.getQuality(vec->at(i)->getCost());
			if (quality > best_solution) {
				best_solution = quality;
				best_route = vec->at(i)->getRoute();
			} else if (quality < worse_solution) {
				worse_solution = quality;
				worse_route = vec->at(i)->getRoute();
			}
			vec->at(i)->setQuality(quality);
		}
	}
}