Hi Christian,

Thank you for your reply. 

I originally didn't use that as I didn't want to add another set of variables 
for finishing corner of rectangles (Gecode nooverlap API has a simple version 
that use fixed int width and int height).

Per your suggestion, I added two array variables for finishing corner that I 
can employ the nooverlap API:
-defined integer array variables for starting point of rectangles (e.g. top 
left corner): I called it vxs and vys (e.g. X0 and Y0 in Gecode MPG manual)
-defined integer array variables for width and height of rectangles: I called 
it vw and vh (e.g. W and H in Gecode MPG manual)
-defined integer array variables for finishing point of rectangles (e.g. lower 
right corner): I called it vxf and vyf (e.g. X1 and Y1 in Gecode MPG manual)
-I removed all manual non-overllaping contraint that I manually added myself 
and add the following:

        //starting point  width and hight will give us the finishing point
        for (i =0 ; i < this->n_vars; i++)
        {
                rel(*this, ( (vxs[i] + vw[i] == vxf[i]) && (vys[i] + vh[i] == 
vyf[i]) )  );
        }
        //add nooverlap for all rectangles      
        nooverlap(*this, vxs,vw,vxf,   vys,vh,vyf);


My code gets solved for lower ranges of X vars (e.g. vxs < 1000 and vxf<1200) 
and the moment I change the x range to values greater than 1500 gecode stalls.

I appreciate your feedback.

Thank you,
Navid


On Jan 16, 2014, at 10:33 AM, Christian Schulte <cschu...@kth.se> wrote:

> Hi,
>  
> Just very quick: did you look at the nooverlap constraint in Gecode?
>  
> Cheers
> Christian
>  
> --
> Christian Schulte, Professor of Computer Science, KTH, 
> www.ict.kth.se/~cschulte/
>  
> From: Navid Mohaghegh [mailto:na...@navid.ca] 
> Sent: Thursday, January 16, 2014 3:32 PM
> To: users@gecode.org
> Cc: cschu...@kth.se
> Subject: Re: [gecode-users] Possible Bug - Increase IntVars Range and Gecode 
> Stalls
>  
> Hi everyone,
>  
> I tried Gist as Christian mentioned. Gist will not terminate for higher 
> ranges (attached screenshot shows that I had to stop Gist manually for range 
> 1535).
>  
> Could you please point me in the right direction about what I have to more 
> efficient for this problem:
> -Like bin-packing problem, we have bunch of rectangles that shouldn't overlap 
> with each other. 
> -Unlike bin-packing, the width and hight of the rectangles can be variable 
> (e.g. if we have more space in our sheet, we don't mind a rectangle gets 
> bigger). 
> -We have bunch of constraint for the size and location of rectangles.
> -In below, 15 rectangles, 4 array of variables (2 arrays for X,Y location and 
> 2 variables for Width,Height which is for size)     
>  
>  
> Could you please let me know?
>  
> Thank you,
> Navid
> <image001.png>
>  
> On Jan 14, 2014, at 11:42 AM, Christian Schulte <cschu...@kth.se> wrote:
> 
> 
> The bug you refer to has been fixed. But try Gist, there you can see what 
> happens.
>  
> Cheers
> Christian
>  
> --
> Christian Schulte, Professor of Computer Science, KTH, 
> www.ict.kth.se/~cschulte/
>  
> From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On Behalf Of 
> Navid Mohaghegh
> Sent: Tuesday, January 14, 2014 5:39 PM
> To: cschu...@kth.se
> Cc: users@gecode.org
> Subject: Re: [gecode-users] Possible Bug - Increase IntVars Range and Gecode 
> Stalls
>  
> Hi Christian,
>  
> Thank your for your reply. I didn't try Gist yet, I will go and look at 
> sample code to learn Gist and I will give it a shot.
>  
> Could you kindly have a look at this comment in mailing list: "There seems to 
> be a trivial bug in INT_VALUES_MAX: SEL_VALUES_MIN is used instead of 
> SEL_VALUES_MAX. The attached patch fixes it."
> I am asking this as mu space get solved by Gecode almost instantly (less than 
> 1ms on a 128 GB ram, quad CPU, 64 cores workstation) for values like 1199. 
> And the moment it goes to 1200 it will stalls. After all it should get slow 
> (I agree with you), but not stall/freeze for 5 days. That is the main reason 
> I suspect a tiny bug somewhere.  
>  
> I will also look at Gist as well as you instructed.
>  
> Thank you,
> Navid
>  
>  
> On Jan 14, 2014, at 11:18 AM, Christian Schulte <cschu...@kth.se> wrote:
> 
> 
> 
> Did you try it in Gist to see how large the search trees get or whether 
> Gecode just hangs?
>  
> After all, you exponentially increase the search space!
>  
> Christian
>  
> --
> Christian Schulte, Professor of Computer Science, KTH, 
> www.ict.kth.se/~cschulte/
>  
> From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On Behalf Of 
> Navid Mohaghegh
> Sent: Tuesday, January 14, 2014 5:04 PM
> To: users@gecode.org
> Subject: [gecode-users] Possible Bug - Increase IntVars Range and Gecode 
> Stalls
> Importance: High
>  
> Hi Everyone,
>  
> My question:
> I am wondering what is happening in below and why Gecode stalls stall whenI 
> increase the range of my IntegerVars (while its CPU utilization goes very 
> high) despite the fact that our constraints are not changed?
>  
> Background (http://navid.ca/gecode/test.cpp):
> We are trying to solve a space. We can easily solve the space when our 
> variable ranges are small (e.g. 0 to 800). As soon as the range goes higher 
> (e.g. 0-1535) Gecode will stall and can not produce a solution for the space 
> with exactly the same constraints as before.
>  
> We have 4 groups of integer_array variables. They are called vars_a, vars_b, 
> vars_c and vars_d. And inside each of them, we have 15 integer variables.
> NavidTest(int n, int vars_a_max_, int vars_b_max_, int vars_c_max_, int 
> vars_d_max_, int vcost_max_); 
> NavidTest* m = new NavidTest(15,  800, 500, 410, 60, 2000000000); means:
> n = 15
> vars_a[0] ... vars_a[15] can have values from zero to vars_a_max_ = 800
> vars_b[0] ... vars_b[15] can have values from zero to vars_b_max_ = 500
> vars_c[0] ... vars_c[15] can have values from zero to vars_c_max_ = 410
> vars_d[0] ... vars_d[15] can have values from zero to vars_d_max_ = 60
> our cost variable can be have values from zero to vcost_max_ = 2,000,000,000
> As we have quadratic cost functions and values can easily grow.
> lift() method is where we add our constraints. 
> For demonstration purpose, we have a method that once used, Gecode can 
> produce solution: it is called "void the_one_works()"
> And we have another one (called: void the_one_doesnot_work) that can not be 
> solved using Gecode (it is perfectly solvable and we test our solution in 
> verify_answer() method)
> The only difference between the_one_works() and the_one_doesnot_work() is an 
> increase in vars_a max range from 800 to 1535. 
>  
>  
>  
> I have found a mailing list entry stating a possible bug:
> ==========
> From: victor.zverovich@... <victor.zverovich@...>
> Subject: bug in INT_VALUES_MAX
> Newsgroups: gmane.comp.lib.gecode.user
> Date: 2013-06-21 22:20:18 GMT (29 weeks, 3 days, 17 hours and 17 minutes ago)
> There seems to be a trivial bug in INT_VALUES_MAX: SEL_VALUES_MIN is used 
> instead of SEL_VALUES_MAX. The attached patch fixes it.
> Victor
> ==========
>  
> Can someone have a look and let me know?
> We are using Gecode 4.2.1 on Linux
> GCC 4.7.2 and also latest 4.9
> Debian 64bit and CentOS 64bit  
> My code and how I compile and run is here: http://navid.ca/gecode/test.cpp
>  
> Thank you,
> Navid
>  

_______________________________________________
Gecode users mailing list
users@gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users

Reply via email to