unsigned IterationsPerSplit = 40;
/// The probability for a vertex to skip a move from its current bucket to
/// another bucket; it often helps to escape from a local optima
- float SkipProbability = 0.1;
+ float SkipProbability = 0.1f;
/// Recursive subtasks up to the given depth are added to the queue and
/// distributed among threads by ThreadPool; all subsequent calls are executed
/// on the same thread
unsigned R = Signature.RightCount;
assert((L > 0 || R > 0) && "incorrect signature");
float Cost = logCost(L, R);
- Signature.CachedGainLR = 0;
- Signature.CachedGainRL = 0;
+ Signature.CachedGainLR = 0.f;
+ Signature.CachedGainRL = 0.f;
if (L > 0)
Signature.CachedGainLR = Cost - logCost(L - 1, R + 1);
if (R > 0)
auto &[LeftGain, LeftNode] = LeftPair;
auto &[RightGain, RightNode] = RightPair;
// Stop when the gain is no longer beneficial
- if (LeftGain + RightGain <= 0.0)
+ if (LeftGain + RightGain <= 0.f)
break;
// Try to exchange the nodes between buckets
if (moveFunctionNode(*LeftNode, LeftBucket, RightBucket, Signatures, RNG))
SignaturesT &Signatures,
std::mt19937 &RNG) const {
// Sometimes we skip the move. This helps to escape local optima
- if (std::uniform_real_distribution<float>(0.0, 1.0)(RNG) <=
+ if (std::uniform_real_distribution<float>(0.f, 1.f)(RNG) <=
Config.SkipProbability)
return false;
float BalancedPartitioning::moveGain(const BPFunctionNode &N,
bool FromLeftToRight,
const SignaturesT &Signatures) {
- float Gain = 0;
+ float Gain = 0.f;
for (auto &UN : N.UtilityNodes)
Gain += (FromLeftToRight ? Signatures[UN].CachedGainLR
: Signatures[UN].CachedGainRL);