It is OK, it works very well :) I prefered use and({ ... ]) instead of portfolio([ ... ]). It is more closed what I want.
Thank you very much Guido :) PS : It is a pity that the search combinators have not updated for activity based search for example or default search :S Best Regards, Mohammed REZGUI 2014-03-14 22:03 GMT+01:00 Guido Tack <t...@gecode.org>: > I can't test it right now, but it should be like this: > > portfolio([ > > %% minimise => obj1 < lv("best1") > %% maximize => obj1 > lv("best1") > and( > post(obj1 < lv("best1"), > and(s,assign(best1,obj1)) > ), > prune > ), > > %% minimise => obj2 < lv("best2") > %% maximize => obj2 > lv("best2") > and( > post(obj1=lv("best1"), > post(obj2 < lv("best2"), > and(s,assign(best2,obj2)) > ) > ), > prune > ), > > %% minimise => obj3 < lv("best3") > %% maximize => obj3 > lv("best3") > post(obj1=lv("best1"), > post(obj2=lv("best2"), > post(obj3 < lv("best3"), > and(s,assign(best3,obj3)) > ) > ) > ) > ]) > > Cheers, > Guido > > On 13 Mar 2014, at 6:53 am, Mohamed Rezgui <kyo.al...@gmail.com> wrote: > >> ---------- Forwarded message ---------- >> From: Mohamed Rezgui <kyo.al...@gmail.com> >> Date: 2014-03-12 20:53 GMT+01:00 >> Subject: Re: [gecode-users] Multi-objective Model with >> Searchcombinators in Gecode >> To: Guido Tack <t...@gecode.org> >> >> >> Hi, >> >> yes the two objective version works very well. >> >> But when I did not found the good syntax for 3 and several objectives :S >> Can you send me the right syntax please ? >> >> % Variables >> var 0..10: obj1; >> var 1..10: obj2; >> var 2..10: obj3; >> >> This following code give me these solutions : >> {10, 1, 9} >> {10, 1, 8} >> {10, 1, 7} >> {10, 1, 6} >> {10, 1, 5} >> {10, 1, 4} >> {10, 1, 3} >> {10, 1, 2} >> >> the first objective is not minimized :S >> >> %%%%%%%%%%%%%%%%%%%%%%%%%% >> portfolio([ >> >> and( >> and( >> %% minimise => obj2 < lv("best2") >> %% maximize => obj2 > lv("best2") >> post(obj1=lv("best1"), >> post(obj2 < lv("best2"), and(s,assign(best2,obj2)))), >> prune >> ), >> >> %% minimise => obj1 < lv("best1") >> %% maximize => obj1 > lv("best1") >> and( >> post(obj1 < lv("best1"), and(s,assign(best1,obj1))), >> prune >> ) >> ), >> >> >> %% minimise => obj3 < lv("best3") >> %% maximize => obj3 > lv("best3") >> post(obj2=lv("best2"), >> post(obj3 < lv("best3"), and(s,assign(best3,obj3)))) >> >> ]) >> >> with trace_sol, I have this bug (gecode 4.2.1, flatzinc 1.6, >> searchcombinators 0.9.3 modified API for gecode 4.2.1): >> trace_sol("*" ++ "\n", ...) //does not work >> Error: Unknown character in line no. 4 >> Error: Unknown character in line no. 4 >> Error: syntax error, unexpected FZ_ID, expecting ')' or ',' in line no. 5 >> >> Best Regards, >> Mohammed REZGUI >> >> 2014-03-12 20:35 GMT+01:00 Guido Tack <t...@gecode.org>: >>> Hi, >>> >>> you'd have to be a bit more specific than "does not work". Did the two >>> objective version work? In your code the second stage does not do a >>> "prune" when it's done like the first stage, so it will actually never >>> switch to the third stage. >>> >>> Output is rather limited at the moment, the code you're using was written >>> as a prototype for a paper, not a production quality system. >>> >>> Cheers, >>> Guido >>> >>> On 13 Mar 2014, at 6:21 am, Mohamed Rezgui <kyo.al...@gmail.com> wrote: >>> >>>> Dear Guido, >>>> >>>> I compile successfully searchcombinators with gecode 4.2.1 (I change >>>> with the appropriate API). >>>> I would like to know how can I set 3 ou several objectives (on >>>> lexicographic multi-objective) please ? >>>> I test with different approaches and it does not work. >>>> >>>> Other question how can I print pretty like output with trace_solution >>>> I found a bug with concatenation "*" ++ "\n" (it does not work). >>>> >>>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>>> include "globals.mzn"; >>>> include "searchcombinators.mzn"; >>>> >>>> annotation lexicoMinimize3obj(var int: obj1, var int: obj2, var int: >>>> obj3, ann: s) = >>>> let { >>>> %% minimise => svar int: best1 = ub(obj1) >>>> %% maximize => svar int: best1 = lb(obj1) >>>> svar int: best1 = ub(obj1), >>>> >>>> %% minimise => svar int: best2 = ub(obj3) >>>> %% maximize => svar int: best2 = lb(obj3) >>>> svar int: best2 = ub(obj2), >>>> >>>> %% minimise => svar int: best2 = ub(obj3) >>>> %% maximize => svar int: best2 = lb(obj3) >>>> svar int: best3 = ub(obj3) >>>> } >>>> in ( >>>> >>>> >>>> portfolio([ >>>> >>>> %% minimise => obj1 < lv("best1") >>>> %% maximize => obj1 > lv("best1") >>>> and( >>>> post(obj1 < lv("best1"), and(s,assign(best1,obj1))), >>>> prune >>>> ), >>>> >>>> %% minimise => obj2 < lv("best2") >>>> %% maximize => obj2 > lv("best2") >>>> post(obj1=lv("best1"), >>>> post(obj2 < lv("best2"), and(s,assign(best2,obj2)))), >>>> >>>> >>>> %% minimise => obj3 < lv("best3") >>>> %% maximize => obj3 > lv("best3") >>>> post(obj2=lv("best2"), >>>> post(obj3 < lv("best3"), and(s,assign(best3,obj3)))) >>>> >>>> ]) >>>> >>>> ); >>>> >>>> % Variables >>>> var 0..10: obj1; >>>> var 1..10: obj2; >>>> var 2..10: obj3; >>>> >>>> %% call >>>> solve >>>> :: print([obj1, obj2, obj3], lexicoMinimize3obj(obj1, obj2, obj3, >>>> int_search([obj1, obj3, obj2], input_order, assign_ub) >>>> )) >>>> satisfy; >>>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>>> >>>> >>>> Best Regards, >>>> Mohammed REZGUI >>> >> >> >> >> -- >> Cordialement, >> Mohamed REZGUI >> >> >> -- >> Cordialement, >> Mohamed REZGUI >> >> _______________________________________________ >> Gecode users mailing list >> users@gecode.org >> https://www.gecode.org/mailman/listinfo/gecode-users > -- Cordialement, Mohamed REZGUI _______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users