diff --git a/miplib2010_liu/models/liu8_9.mai b/miplib2010_liu/models/liu8_9.mai
new file mode 100644
index 0000000000000000000000000000000000000000..2205bb2796abd3446d122220dc02d5c5c1afef62
--- /dev/null
+++ b/miplib2010_liu/models/liu8_9.mai
@@ -0,0 +1,210 @@
+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:
+Received: from twolf13.ee.washington.edu by dizzy.cplex.com via SMTP (950511.SGI.8.6.12.PATCH526/cplex.950313)
+ for 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
+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:
+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
+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:
+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
+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)
+
+
diff --git a/miplib2010_liu/models/liumip.dat b/miplib2010_liu/models/liumip.dat
new file mode 100644
index 0000000000000000000000000000000000000000..769f27a42789ebb7868c65f567d5adc7811cd527
--- /dev/null
+++ b/miplib2010_liu/models/liumip.dat
@@ -0,0 +1,11 @@
+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];
diff --git a/miplib2010_liu/models/liumip.mod b/miplib2010_liu/models/liumip.mod
new file mode 100644
index 0000000000000000000000000000000000000000..6b0c2b379298040c1e31419da7900e167b80bed0
--- /dev/null
+++ b/miplib2010_liu/models/liumip.mod
@@ -0,0 +1,53 @@
+// 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