Fix the pareto front predicate
This commit is contained in:
parent
b94eb66e12
commit
77722f0f87
@ -9,11 +9,22 @@ predicate pareto_optimal(var int: obj1, var int: obj2) =
|
||||
nsol = 0
|
||||
elseif status() = UNSAT then
|
||||
complete() % we are finished!
|
||||
elseif
|
||||
elsif status() = SAT then
|
||||
nsol = sol(nsol) + 1 /\
|
||||
s1[nsol] = sol(obj1) /\
|
||||
s2[nsol] = sol(obj2)
|
||||
endif
|
||||
/\ for(i in 1..nsol) (
|
||||
obj1 < lastval(s1[i]) \/ obj2 < lastval(s2[i])
|
||||
) /\ for(i in 1..ms) (
|
||||
if i in 1..nsol-1 then
|
||||
s1[i] = lastval(s1[i]) /\
|
||||
s2[i] = lastval(s2[i]) /\
|
||||
elsif i = nsol /\ status() != SAT then
|
||||
s1[i] = lastval(s1[i]) /\
|
||||
s2[i] = lastval(s2[i]) /\
|
||||
elseif i in nsol+1..ms then
|
||||
s1[i] = lb(obj1) /\
|
||||
s2[i] = lb(obj2)
|
||||
endif
|
||||
);
|
||||
|
@ -266,6 +266,7 @@ If we do not find any \glspl{sol}, then we finish the entire search.
|
||||
Otherwise, we record that we have one more \gls{sol}.
|
||||
We store the \gls{sol} values in \mzninline{s1} and \mzninline{s2} \glspl{array}.
|
||||
Before each \gls{restart} we add \constraints{} removing Pareto dominated \glspl{sol}, based on each previous \gls{sol}.
|
||||
Additionally, we maintain the \glspl{sol} stored in \mzninline{s1} and \mzninline{s2} by assigning them to their previous value and avoid search on the unused spaces in the \glspl{array} by assignment them to the lower bound of their respective \gls{objective}.
|
||||
|
||||
\section{Rewriting of Meta-Optimisation Algorithms}\label{sec:inc-solver-extension}
|
||||
|
||||
|
Reference in New Issue
Block a user