9 lines
414 B
MiniZinc
9 lines
414 B
MiniZinc
predicate adaptiveUniform(array[int] of var int: x, float: initialDestrRate) =
|
|
let { var float: rate; } in
|
|
if status() = START then rate = initialDestrRate
|
|
elseif status() = UNSAT then rate = min(last_val(rate)-0.02,0.6)
|
|
else rate = max(last_val(rate)+0.02,0.95)
|
|
endif /\
|
|
forall(i in index_set(x))
|
|
(if uniform(0.0,1.0) > rate then x[i] = sol(x[i]) else true endif);
|