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);
|
||||
}
|
||||
|
||||
this->items.resize(items.size());
|
||||
size_t i = 0;
|
||||
|
||||
long long cap = capacity;
|
||||
|
||||
while (!its.empty()) {
|
||||
auto itr = its.upper_bound(cap);
|
||||
if (itr == its.begin()) {
|
||||
cap = capacity;
|
||||
cap -= *its.begin();
|
||||
this->items.push_back(*its.begin());
|
||||
its.erase(its.begin());
|
||||
continue;
|
||||
}
|
||||
itr--;
|
||||
cap -= *itr;
|
||||
this->items.push_back(*itr);
|
||||
its.erase(itr);
|
||||
}
|
||||
while (!its.empty()) {
|
||||
auto itr = its.upper_bound(cap);
|
||||
if (itr == its.begin()) {
|
||||
cap = capacity;
|
||||
cap -= *its.begin();
|
||||
itr = its.begin();
|
||||
} else {
|
||||
itr--;
|
||||
cap -= *itr;
|
||||
}
|
||||
this->items[i] = *itr;
|
||||
its.erase(itr);
|
||||
i++;
|
||||
}
|
||||
|
||||
fitness = calculate_boxes();
|
||||
}
|
||||
fitness = calculate_boxes();
|
||||
}
|
||||
|
||||
void setneighbor() { // Gera um vizinho da solução
|
||||
std::uniform_int_distribution<> dist(0, items.size() - 1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user