Loading miplib2010_liu/models/liu8_9.mai 0 → 100644 +210 −0 Original line number Diff line number Diff line From xiaowenl@twolf13.ee.washington.edu Mon Aug 7 11:55 PDT 1995 Received: from dizzy.cplex.com (dizzy) by sierra with ESMTP (1.37.109.16/16.2) id AA057161731; Mon, 7 Aug 1995 11:55:31 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: from twolf13.ee.washington.edu by dizzy.cplex.com via SMTP (950511.SGI.8.6.12.PATCH526/cplex.950313) for <ed@cplex.com> id NAA29552; Mon, 7 Aug 1995 13:35:14 -0400 Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA04565; Mon, 7 Aug 1995 10:33:52 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508071733.AA04565@twolf13.ee.washington.edu> Subject: questions about MIP To: ed@sierra Date: Mon, 7 Aug 1995 10:33:52 -0700 (PDT) X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 911 Status: RO Hi Ed, I presented my problem using CPLEX two months ago. It never gives me an optimal result when the integer variables are large. I think CPLEX ran too fast and didn't try enough branches. Is there any parameter I can set to let CPLEX run slower? Right now, I don't care the running time so much, but I do care about the final result. The parameters I set in my running experiment is: 1. set mip strategy backtrack 1.0 2. set mip strategy nodeselect 2 3. set mip strategy variableselect 1 The above settings gives me the best result I have got so far. Unfortunately, they are still not optimal. I need your help to figure it out. Any suggestions and comments will be highly appreciated. Thank you. Xiaowen ------------- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O) From xiaowenl@twolf13.ee.washington.edu Wed Aug 9 11:30 PDT 1995 Received: from twolf13.ee.washington.edu by sierra with SMTP (1.37.109.16/16.2) id AA105933003; Wed, 9 Aug 1995 11:30:03 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA10877; Wed, 9 Aug 1995 11:26:46 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508091826.AA10877@twolf13.ee.washington.edu> Subject: Re: questions about MIP To: ed@sierra (Ed Klotz) Date: Wed, 9 Aug 1995 11:26:45 -0700 (PDT) Cc: Xiaowenl@twolf13.ee.washington.edu In-Reply-To: <199508091650.AA102567032@sierra> from "Ed Klotz" at Aug 9, 95 09:50:32 am X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 599 Status: RO Hi Ed, Thank you very much for your mail. I slightly changed my formulation. I can get 1360 by setting backtracking 1 nodeselect 2 variableselect 1 But this is not optimal yet. I am going to mail you a brief description of my problem formulation in my next mail. If you have any questions about that, please let me know. Also, I will send you a new LP format file I have current. Thank you very much. Xiaowen -- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O) From xiaowenl@twolf13.ee.washington.edu Wed Aug 9 11:31 PDT 1995 Received: from twolf13.ee.washington.edu by sierra with SMTP (1.37.109.16/16.2) id AA106013090; Wed, 9 Aug 1995 11:31:30 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA10887; Wed, 9 Aug 1995 11:28:13 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508091828.AA10887@twolf13.ee.washington.edu> Subject: problem formulation To: eklotz@sierra Date: Wed, 9 Aug 1995 11:28:13 -0700 (PDT) Cc: xiaowenl@twolf13.ee.washington.edu (Xiaowen Liu) X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 3598 Status: RO Hi Ed, The following is a brief description of my problem formulation. I am working on the floorplan and placement problem in the physical design of VLSI circuits. The floorplan and placement is to place a set of rectangular modules(or blocks) on a chip. we know the initial topology of the modules, and want to locally swap the modules and/or orientate the modules such that the total area of the chip is minimized and there is no overlaps between between any two modules. We are trying to use Integer Programming to optimize the area. The problem formulation is described in the following. To prevent overlapping of modules i and j, it is required that at least one of the following linear inequalities holds: Xi + Wi <= Xj; /* i is to the left of j */ Xi - Wj >= Xj; /* i is to the right of j */ Yi + Hi <= Yj; /* i is below j */ Yi - Hj >= Yj; /* i is abover j */ (1) where Xi, Yi, Xj, Yj is the continuous variables denote the position of the lower left corners of the modules i and j with respect to the center of coordinates. Wi, Hi is the width and height of module i, which is known values. In order to ensure that at least on of above inequalities always holds we introduce two 0-1 integer variables XXiXj and YYiYj, now we consider the following system of linear inequalities for any pair of modules i and j: Xi + Wi <= Xj + W * ( XXiXj + YYiYj); Xi - Wj >= Xj - W * (1 - XXiXj + YYiYj); Yi + Hi <= Yj + H * (1 + XXiXj - YYiYj); Yi - Hj >= Yj - H * (2 - XXiXj - YYiYj); (2) where W = Sum(Wi), H = Sum(Hi). Assume that X_STAR and Y_STAR are the final width and height of the chip, we need to optimize the area X_STAR * Y_STAR. If we know the range of the aspect ratio of X_STAR and Y_STAR to be 0.85 to 1.15, we can linearize the quadratic problem to a linear problem: Minimize: 0.495 * X_STAR + 0.5014 * Y_STAR The additional constraints are: Xi >= 0, Yi >= 0, X_STAR >= Xi + Wi, Y_STAR >= Yi + Hi, for all modules. (3) The above is the first formulation of our problem. In order to achieve better floorplan, we allow the rotation of the blocks by introduce another 0-1 integer variable Zi, where Zi = 0 when i block is placed in its initial orientation and Zi = 1 when block i is rotated 90 degree. The constraints (1) is rewritten in the following form: Xi + Zi*Hi + (1-Zi)*Wi <= Xj + M*(XXiXj + YYiYj); Xi - Zj*Hj - (1-Zj)*Wj >= Xj - M*(1 - XXiYj + YYiYj); Yi + Zi*Wi + (1-Zi)*Hi <= Yj + M(1 + XXiXj - YYiYj); Yi - Zj*Wj - (1-Zj)*Hj >= Yj - M(2 - XXiYj - YYiYj); (4) and the constraints (3) is rewritten as: Xi >= 0, Yi >= 0, Xi + (1 - Zi)*Wi + Zi*Hi <= X_STAR, Yi + Zi*Wi + (1 - Zi)*Hi <= Y_STAR, for all modules (5) Because we have the initial topology of the modules, we only allow the local modules to swap. So to local module pairs they have constraints (4), where there are two integer variables to ensure nonoverlapping. To the modules are very far away, their topology is fixed, which means these pairs of modules need only one of inequalities of (1) to guarantee the non- overlapping. To this problem formulation, I tried to come up a priority order of the integer variables. Because the position of a module if more important than the orientation of a module, I set all the XXiXj and YYiYj variables priority 5 and all Zi variables to the default value. But from the experiments I have done, I can't see any improvement. Xiaowen -- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O) miplib2010_liu/models/liumip.dat 0 → 100644 +11 −0 Original line number Diff line number Diff line nbRects = 33; bigM = 8398; //bigM = 1200; // based on easily obtained feasible solution // with objective 1200 width = [118,356,132,560,132,314,182,132,84,182,182,370,118,118,118,118, 160,294,196,140,140,174,118,182,160,378,336,126,210,182,132,132,174]; height = [84,118,140,132,314,140,350,294,118,202,202,182,118,126,336,266, 118,118,118,496,406,118,48,118,140,118,132,378,210,98,314,230,132]; miplib2010_liu/models/liumip.mod 0 → 100644 +53 −0 Original line number Diff line number Diff line // MIP formulation of liu.lp int nbRects = ...; int bigM = ...; range Rectangles = 1..nbRects; int width[Rectangles] = ...; int height[Rectangles] = ...; int totwidth = sum(i in 1..nbRects) width[i]; int totheight = sum (i in 1..nbRects) height[i]; //int maxlength = totwidth*(totwidth > totheight) + // totheight*(totheight >= totwidth); dvar int+ x[Rectangles]; //in 0..maxlength; dvar int+ y[Rectangles]; //in 0..maxlength; dvar int+ ystar; // in 0..maxlength; // max (width, height) of resulting rectangle dvar int rotate[Rectangles] in 0..1; dvar int XX[Rectangles,Rectangles] in 0..1; dvar int YY[Rectangles,Rectangles] in 0..1; minimize ystar; subject to { // Forbid overlap of rectangles while allowing 90 degree rotations. forall(ordered i, j in Rectangles) { x[i] + rotate[i]*height[i] + (1 - rotate[i])*width[i] <= x[j] + bigM * (XX[i,j] + YY[i,j]); x[j] + rotate[j]*height[j] + (1 - rotate[j])*width[j] <= x[i] + bigM * (1 + YY[i,j] - XX[i,j]); y[i] + (1 - rotate[i])*height[i] + rotate[i]*width[i] <= y[j] + bigM * (1 + XX[i,j] - YY[i,j]); y[j] + (1 - rotate[j])*height[j] + rotate[j]*width[j] <= y[i] + bigM * (2 - (XX[i,j] + YY[i,j])); }; // ystar must satisfy its description (see above). forall(i in Rectangles) { ystar >= x[i] + rotate[i]*height[i] + (1 - rotate[i])*width[i]; ystar >= y[i] + rotate[i]*width[i] + (1 - rotate[i])*height[i]; }; }; No newline at end of file Loading
miplib2010_liu/models/liu8_9.mai 0 → 100644 +210 −0 Original line number Diff line number Diff line From xiaowenl@twolf13.ee.washington.edu Mon Aug 7 11:55 PDT 1995 Received: from dizzy.cplex.com (dizzy) by sierra with ESMTP (1.37.109.16/16.2) id AA057161731; Mon, 7 Aug 1995 11:55:31 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: from twolf13.ee.washington.edu by dizzy.cplex.com via SMTP (950511.SGI.8.6.12.PATCH526/cplex.950313) for <ed@cplex.com> id NAA29552; Mon, 7 Aug 1995 13:35:14 -0400 Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA04565; Mon, 7 Aug 1995 10:33:52 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508071733.AA04565@twolf13.ee.washington.edu> Subject: questions about MIP To: ed@sierra Date: Mon, 7 Aug 1995 10:33:52 -0700 (PDT) X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 911 Status: RO Hi Ed, I presented my problem using CPLEX two months ago. It never gives me an optimal result when the integer variables are large. I think CPLEX ran too fast and didn't try enough branches. Is there any parameter I can set to let CPLEX run slower? Right now, I don't care the running time so much, but I do care about the final result. The parameters I set in my running experiment is: 1. set mip strategy backtrack 1.0 2. set mip strategy nodeselect 2 3. set mip strategy variableselect 1 The above settings gives me the best result I have got so far. Unfortunately, they are still not optimal. I need your help to figure it out. Any suggestions and comments will be highly appreciated. Thank you. Xiaowen ------------- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O) From xiaowenl@twolf13.ee.washington.edu Wed Aug 9 11:30 PDT 1995 Received: from twolf13.ee.washington.edu by sierra with SMTP (1.37.109.16/16.2) id AA105933003; Wed, 9 Aug 1995 11:30:03 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA10877; Wed, 9 Aug 1995 11:26:46 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508091826.AA10877@twolf13.ee.washington.edu> Subject: Re: questions about MIP To: ed@sierra (Ed Klotz) Date: Wed, 9 Aug 1995 11:26:45 -0700 (PDT) Cc: Xiaowenl@twolf13.ee.washington.edu In-Reply-To: <199508091650.AA102567032@sierra> from "Ed Klotz" at Aug 9, 95 09:50:32 am X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 599 Status: RO Hi Ed, Thank you very much for your mail. I slightly changed my formulation. I can get 1360 by setting backtracking 1 nodeselect 2 variableselect 1 But this is not optimal yet. I am going to mail you a brief description of my problem formulation in my next mail. If you have any questions about that, please let me know. Also, I will send you a new LP format file I have current. Thank you very much. Xiaowen -- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O) From xiaowenl@twolf13.ee.washington.edu Wed Aug 9 11:31 PDT 1995 Received: from twolf13.ee.washington.edu by sierra with SMTP (1.37.109.16/16.2) id AA106013090; Wed, 9 Aug 1995 11:31:30 -0700 Return-Path: <xiaowenl@twolf13.ee.washington.edu> Received: by twolf13.ee.washington.edu (5.65/UW-NDC Revision: 2.30 ) id AA10887; Wed, 9 Aug 1995 11:28:13 -0700 From: Xiaowen Liu <xiaowenl@twolf13.ee.washington.edu> Message-Id: <9508091828.AA10887@twolf13.ee.washington.edu> Subject: problem formulation To: eklotz@sierra Date: Wed, 9 Aug 1995 11:28:13 -0700 (PDT) Cc: xiaowenl@twolf13.ee.washington.edu (Xiaowen Liu) X-Mailer: ELM [version 2.4 PL23] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 3598 Status: RO Hi Ed, The following is a brief description of my problem formulation. I am working on the floorplan and placement problem in the physical design of VLSI circuits. The floorplan and placement is to place a set of rectangular modules(or blocks) on a chip. we know the initial topology of the modules, and want to locally swap the modules and/or orientate the modules such that the total area of the chip is minimized and there is no overlaps between between any two modules. We are trying to use Integer Programming to optimize the area. The problem formulation is described in the following. To prevent overlapping of modules i and j, it is required that at least one of the following linear inequalities holds: Xi + Wi <= Xj; /* i is to the left of j */ Xi - Wj >= Xj; /* i is to the right of j */ Yi + Hi <= Yj; /* i is below j */ Yi - Hj >= Yj; /* i is abover j */ (1) where Xi, Yi, Xj, Yj is the continuous variables denote the position of the lower left corners of the modules i and j with respect to the center of coordinates. Wi, Hi is the width and height of module i, which is known values. In order to ensure that at least on of above inequalities always holds we introduce two 0-1 integer variables XXiXj and YYiYj, now we consider the following system of linear inequalities for any pair of modules i and j: Xi + Wi <= Xj + W * ( XXiXj + YYiYj); Xi - Wj >= Xj - W * (1 - XXiXj + YYiYj); Yi + Hi <= Yj + H * (1 + XXiXj - YYiYj); Yi - Hj >= Yj - H * (2 - XXiXj - YYiYj); (2) where W = Sum(Wi), H = Sum(Hi). Assume that X_STAR and Y_STAR are the final width and height of the chip, we need to optimize the area X_STAR * Y_STAR. If we know the range of the aspect ratio of X_STAR and Y_STAR to be 0.85 to 1.15, we can linearize the quadratic problem to a linear problem: Minimize: 0.495 * X_STAR + 0.5014 * Y_STAR The additional constraints are: Xi >= 0, Yi >= 0, X_STAR >= Xi + Wi, Y_STAR >= Yi + Hi, for all modules. (3) The above is the first formulation of our problem. In order to achieve better floorplan, we allow the rotation of the blocks by introduce another 0-1 integer variable Zi, where Zi = 0 when i block is placed in its initial orientation and Zi = 1 when block i is rotated 90 degree. The constraints (1) is rewritten in the following form: Xi + Zi*Hi + (1-Zi)*Wi <= Xj + M*(XXiXj + YYiYj); Xi - Zj*Hj - (1-Zj)*Wj >= Xj - M*(1 - XXiYj + YYiYj); Yi + Zi*Wi + (1-Zi)*Hi <= Yj + M(1 + XXiXj - YYiYj); Yi - Zj*Wj - (1-Zj)*Hj >= Yj - M(2 - XXiYj - YYiYj); (4) and the constraints (3) is rewritten as: Xi >= 0, Yi >= 0, Xi + (1 - Zi)*Wi + Zi*Hi <= X_STAR, Yi + Zi*Wi + (1 - Zi)*Hi <= Y_STAR, for all modules (5) Because we have the initial topology of the modules, we only allow the local modules to swap. So to local module pairs they have constraints (4), where there are two integer variables to ensure nonoverlapping. To the modules are very far away, their topology is fixed, which means these pairs of modules need only one of inequalities of (1) to guarantee the non- overlapping. To this problem formulation, I tried to come up a priority order of the integer variables. Because the position of a module if more important than the orientation of a module, I set all the XXiXj and YYiYj variables priority 5 and all Zi variables to the default value. But from the experiments I have done, I can't see any improvement. Xiaowen -- Xiaowen Liu Electrial Engineering Bldg, Rm #329 University of Washington Box 352500 Seattle, WA 98195-2500 Email: xiaowenl@twolf13.ee.washington.edu Tel: (206)685-8678 (O)
miplib2010_liu/models/liumip.dat 0 → 100644 +11 −0 Original line number Diff line number Diff line nbRects = 33; bigM = 8398; //bigM = 1200; // based on easily obtained feasible solution // with objective 1200 width = [118,356,132,560,132,314,182,132,84,182,182,370,118,118,118,118, 160,294,196,140,140,174,118,182,160,378,336,126,210,182,132,132,174]; height = [84,118,140,132,314,140,350,294,118,202,202,182,118,126,336,266, 118,118,118,496,406,118,48,118,140,118,132,378,210,98,314,230,132];
miplib2010_liu/models/liumip.mod 0 → 100644 +53 −0 Original line number Diff line number Diff line // MIP formulation of liu.lp int nbRects = ...; int bigM = ...; range Rectangles = 1..nbRects; int width[Rectangles] = ...; int height[Rectangles] = ...; int totwidth = sum(i in 1..nbRects) width[i]; int totheight = sum (i in 1..nbRects) height[i]; //int maxlength = totwidth*(totwidth > totheight) + // totheight*(totheight >= totwidth); dvar int+ x[Rectangles]; //in 0..maxlength; dvar int+ y[Rectangles]; //in 0..maxlength; dvar int+ ystar; // in 0..maxlength; // max (width, height) of resulting rectangle dvar int rotate[Rectangles] in 0..1; dvar int XX[Rectangles,Rectangles] in 0..1; dvar int YY[Rectangles,Rectangles] in 0..1; minimize ystar; subject to { // Forbid overlap of rectangles while allowing 90 degree rotations. forall(ordered i, j in Rectangles) { x[i] + rotate[i]*height[i] + (1 - rotate[i])*width[i] <= x[j] + bigM * (XX[i,j] + YY[i,j]); x[j] + rotate[j]*height[j] + (1 - rotate[j])*width[j] <= x[i] + bigM * (1 + YY[i,j] - XX[i,j]); y[i] + (1 - rotate[i])*height[i] + rotate[i]*width[i] <= y[j] + bigM * (1 + XX[i,j] - YY[i,j]); y[j] + (1 - rotate[j])*height[j] + rotate[j]*width[j] <= y[i] + bigM * (2 - (XX[i,j] + YY[i,j])); }; // ystar must satisfy its description (see above). forall(i in Rectangles) { ystar >= x[i] + rotate[i]*height[i] + (1 - rotate[i])*width[i]; ystar >= y[i] + rotate[i]*width[i] + (1 - rotate[i])*height[i]; }; }; No newline at end of file