Stop pushing on the vector
For better performance
This commit is contained in:
parent
65aed86783
commit
7aad87810f
35
sa.hpp
35
sa.hpp
@ -58,25 +58,28 @@ class solution {
|
|||||||
its.insert(i);
|
its.insert(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->items.resize(items.size());
|
||||||
|
size_t i = 0;
|
||||||
|
|
||||||
long long cap = capacity;
|
long long cap = capacity;
|
||||||
|
|
||||||
while (!its.empty()) {
|
while (!its.empty()) {
|
||||||
auto itr = its.upper_bound(cap);
|
auto itr = its.upper_bound(cap);
|
||||||
if (itr == its.begin()) {
|
if (itr == its.begin()) {
|
||||||
cap = capacity;
|
cap = capacity;
|
||||||
cap -= *its.begin();
|
cap -= *its.begin();
|
||||||
this->items.push_back(*its.begin());
|
itr = its.begin();
|
||||||
its.erase(its.begin());
|
} else {
|
||||||
continue;
|
itr--;
|
||||||
}
|
cap -= *itr;
|
||||||
itr--;
|
}
|
||||||
cap -= *itr;
|
this->items[i] = *itr;
|
||||||
this->items.push_back(*itr);
|
its.erase(itr);
|
||||||
its.erase(itr);
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
fitness = calculate_boxes();
|
fitness = calculate_boxes();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setneighbor() { // Gera um vizinho da solução
|
void setneighbor() { // Gera um vizinho da solução
|
||||||
std::uniform_int_distribution<> dist(0, items.size() - 1);
|
std::uniform_int_distribution<> dist(0, items.size() - 1);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user