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
|
nsol = 0
|
||||||
elseif status() = UNSAT then
|
elseif status() = UNSAT then
|
||||||
complete() % we are finished!
|
complete() % we are finished!
|
||||||
elseif
|
elsif status() = SAT then
|
||||||
nsol = sol(nsol) + 1 /\
|
nsol = sol(nsol) + 1 /\
|
||||||
s1[nsol] = sol(obj1) /\
|
s1[nsol] = sol(obj1) /\
|
||||||
s2[nsol] = sol(obj2)
|
s2[nsol] = sol(obj2)
|
||||||
endif
|
endif
|
||||||
/\ for(i in 1..nsol) (
|
/\ for(i in 1..nsol) (
|
||||||
obj1 < lastval(s1[i]) \/ obj2 < lastval(s2[i])
|
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}.
|
Otherwise, we record that we have one more \gls{sol}.
|
||||||
We store the \gls{sol} values in \mzninline{s1} and \mzninline{s2} \glspl{array}.
|
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}.
|
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}
|
\section{Rewriting of Meta-Optimisation Algorithms}\label{sec:inc-solver-extension}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user