[gecode-users] Fwd: Multi-objective Model with Searchcombinators in Gecode

Mohamed Rezgui kyo.alone at gmail.com
Wed Mar 12 20:53:12 CET 2014


---------- Forwarded message ----------
From: Mohamed Rezgui <kyo.alone at 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 <tack at 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 <tack at 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.alone at 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



More information about the users mailing list