Question on OscaR.cp: ConflictOrderingSearch

22 views
Skip to first unread message

Renaud De Landtsheer

unread,
Nov 21, 2017, 5:40:57 AM11/21/17
to oscar...@googlegroups.com
Hi all (especially Pierre I anticipate :-) )

I am playing with OscaR.cp, in a multi-criterion problem.

I tried using the ConflictOrderingSearch and the BinaryFirstFail search strategies.

Surprisingly, they do not complete with the same result

> completed: true

I suspect that ConflictOrderingSearch is somewhat stateful and should not be used for Pareto optimization. Can you confirm this or am I wrong?

Both strategies have the same variables:

val allVars = problem.varsToDistribute.toArray

I use either of the two following lines:

binaryFirstFail(allVars)
conflictOrderingSearch(allVars,allVars(_).min,allVars(_).min)

--
Renaud De Landtsheer

Pierre Schaus

unread,
Nov 21, 2017, 6:17:42 AM11/21/17
to oscar...@googlegroups.com
Hi Renaud,

Can you show the "minimize" stuff of your model?
What do you mean exactly by "they do not complete with the same result"?
Are you speaking about objective values or (decision) variable assignments?
A small example is of course welcome to help us debug your model or oscar ;-) 
Cheers,

Pierre

--

---
You received this message because you are subscribed to the Google Groups "OscaR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to oscar-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

renauddl

unread,
Nov 21, 2017, 6:39:53 AM11/21/17
to OscaR


Sure: here is the minimize stuff. As you can see the tool has different function. it can be used as a sat, optimizer or Pareto optimizer.
my problem also arises for simple minimization and sat: all search strategies do not complete with the same results


val (isSearchOnlyOne,isParetoSearch) = goal match {
case s:SimpleMappingGoal =>
minimize(simpleVarFinder(s))
(false,false)
case Pareto(a,b) => solver.paretoMinimize(simpleVarFinder(a), simpleVarFinder(b))
(false,true)
case Sat() => (true,false)
}

solver.addDecisionVariables(problem.varsToSave)

search {
val allVars = problem.varsToDistribute.toArray
if(isParetoSearch) {
binaryFirstFail(allVars)
}else{
binaryFirstFail(allVars)
//splitLastConflict(allVars)
//conflictOrderingSearch(allVars,allVars(_).min,allVars(_).min)
}


Only the binaryFirstFail finds something and the two others complete with no result found.
(I'v disabled discrepancies and timeouts)

Maybe some decision variables are missing in the search strategy and that's why I have problems?
Is there a way to know if the search completed with all variables bound?


To unsubscribe from this group and stop receiving emails from it, send an email to oscar-user+...@googlegroups.com.

Pierre Schaus

unread,
Nov 21, 2017, 6:53:36 AM11/21/17
to oscar...@googlegroups.com
Renaud, next question

When you compare the two firstfail and conclict, you restart with a fresh new model or is it using the same instance of the model with two consecutive "start" instructions?

Pierre

To unsubscribe from this group and stop receiving emails from it, send an email to oscar-user+unsubscribe@googlegroups.com.

Renaud De Landtsheer

unread,
Nov 21, 2017, 8:20:23 AM11/21/17
to oscar...@googlegroups.com


I restart the full application, including the parsing of the data and it is the same instance, and there is no randomness in the transformation.

--
Renaud De Landtsheer
Reply all
Reply to author
Forward
0 new messages