I will use the MixedIntegerLinearProgram class for my linear and integer solutions!

Keep in mind that all of the variable indices in this worksheet are 0-indexed, so the variable values are shifted during implementation (but NOT during the reporting!).

Instance I1.

$\begin{array}{rrcrcrcl}
\min & 3x_1 & - & x_2 & + & 2 x_3 & &\\
\text{subject to} & x_1 & + & x_2 & & & = & 10 \\
& 3x_1 & & & - & x_3 & \geq & 6 \\
& & & 5x_2 & + & 3x_3& \geq & 4 \\
& x_1, & & x_2, & & x_3,&\geq & 0
\end{array}$

{{{id=1| lp = MixedIntegerLinearProgram(maximization=False); x = lp.new_variable(); # make the variables all nonnegative for i in range(0,3): lp.set_real(x[i]); lp.set_min(x[i],0); lp.set_objective( 3*x[0] - x[1] + 2*x[2] ); lp.add_constraint( x[0] + x[1] == 10 ); lp.add_constraint( 3*x[0] - x[2] >= 6 ); lp.add_constraint( 5*x[1] + 3*x[2] >= 4); lp.show(); print "Optimal Value:", lp.solve(); v = lp.get_values(x); for i in range(0,3): print "x_{%d} = %lf" % (i+1, v[i]); /// Minimization: 3.0 x_0 - x_1 + 2.0 x_2 Constraints: 10.0 <= x_0 + x_1 <= 10.0 -3.0 x_0 + x_2 <= -6.0 -5.0 x_1 - 3.0 x_2 <= -4.0 Variables: x_0 is a continuous variable (min=0.0, max=+oo) x_1 is a continuous variable (min=0.0, max=+oo) x_2 is a continuous variable (min=0.0, max=+oo) Optimal Value: -2.0 x_{1} = 2.000000 x_{2} = 8.000000 x_{3} = 0.000000 }}}

This solution to I1 is already integer! There's nothing to be done by running the integer program!

Instance I2.

$\begin{array}{rrcrcrcrcrcrcrcrcrcrcrcrcl}\min & x_1 & + & x_2 & + & x_3 & + & x_4 & + & x_5 & + & x_6 & + & x_7 & + & x_8 & + & x_9 & + & x_{10} & & \\\text{s.t.} & x_1 &+ & x_2 & & & & & & & & & & & & & & & + & x_{10} & \leq & 2 \\& & & x_2 & + & x_3 & & & & & & & + & x_7 & & & & & & & \leq & 2 \\& & & & & x_3 & + & x_4& & & & & & & & & +& x_9 & & & \leq & 2 \\& & & & & & & x_4& + & x_5& + & x_6 & & & & & & & & & \leq & 2 \\& x_1 & + & & & & & & & x_5 & & & & & + &x_8& & & & & \leq & 2 \\& x_1 & & & & & & & & & + & x_6 & + & x_7 & & & & & & & \leq & 2 \\& & & x_2 & & & & & & & & & & & + & x_8 & + & x_9 & & & \leq & 2 \\& & & & & x_3 & & & & & + & x_6 & & & & & & & + & x_{10} & \leq & 2 \\& & & & & & & x_4 & & & & & +& x_7 & + & x_8& & & & & \leq & 2 \\& & & & & & & & & x_5 & & & & & & & +&x_9& +& x_{10} & \leq & 2 \\& x_1, & & x_2,&& x_3, && x_4,&& x_5, && x_6, && x_7, && x_8, && x_9, && x_{10} & \geq & 0\end{array}$

{{{id=6| lp = MixedIntegerLinearProgram(maximization=True); x = lp.new_variable(); # make the variables all nonnegative for i in range(0,10): lp.set_real(x[i]); lp.set_min(x[i],0); lp.set_objective( sum( x[i] for i in range(10) ) ); lp.add_constraint( x[0] + x[1] + x[9] <= 2 ); lp.add_constraint( x[1] + x[2] + x[6] <= 2 ); lp.add_constraint( x[2] + x[3] + x[8] <= 2 ); lp.add_constraint( x[3] + x[4] + x[5] <= 2 ); lp.add_constraint( x[4] + x[0] + x[7] <= 2 ); lp.add_constraint( x[0] + x[5] + x[7] <= 2 ); lp.add_constraint( x[1] + x[7] + x[9] <= 2 ); lp.add_constraint( x[2] + x[9] + x[6] <= 2 ); lp.add_constraint( x[3] + x[6] + x[8] <= 2 ); lp.add_constraint( x[4] + x[8] + x[5] <= 2 ); lp.show(); print "Optimal Value:", lp.solve(); v = lp.get_values(x); for i in range(0,10): print "x_{%d} = %lf" % (i+1, v[i]); /// Maximization: x_0 + x_1 + x_2 + x_3 + x_4 + x_5 + x_6 + x_7 + x_8 + x_9 Constraints: x_0 + x_1 + x_9 <= 2.0 x_1 + x_2 + x_6 <= 2.0 x_2 + x_3 + x_8 <= 2.0 x_3 + x_4 + x_5 <= 2.0 x_0 + x_4 + x_7 <= 2.0 x_0 + x_5 + x_7 <= 2.0 x_1 + x_7 + x_9 <= 2.0 x_2 + x_6 + x_9 <= 2.0 x_3 + x_6 + x_8 <= 2.0 x_4 + x_5 + x_8 <= 2.0 Variables: x_0 is a continuous variable (min=0.0, max=+oo) x_1 is a continuous variable (min=0.0, max=+oo) x_2 is a continuous variable (min=0.0, max=+oo) x_3 is a continuous variable (min=0.0, max=+oo) x_4 is a continuous variable (min=0.0, max=+oo) x_5 is a continuous variable (min=0.0, max=+oo) x_6 is a continuous variable (min=0.0, max=+oo) x_7 is a continuous variable (min=0.0, max=+oo) x_8 is a continuous variable (min=0.0, max=+oo) x_9 is a continuous variable (min=0.0, max=+oo) Optimal Value: 6.66666666667 x_{1} = 0.666667 x_{2} = 0.666667 x_{3} = 0.666667 x_{4} = 0.666667 x_{5} = 0.666667 x_{6} = 0.666667 x_{7} = 0.666667 x_{8} = 0.666667 x_{9} = 0.666667 x_{10} = 0.666667 }}} {{{id=9| # Turn into Integers for i in range(0,10): lp.set_integer(x[i]); lp.set_min(x[i],0); lp.show(); print "Optimal Value:", lp.solve(); v = lp.get_values(x); for i in range(0,10): print "x_{%d} = %lf" % (i+1, v[i]); /// Maximization: x_0 + x_1 + x_2 + x_3 + x_4 + x_5 + x_6 + x_7 + x_8 + x_9 Constraints: x_0 + x_1 + x_9 <= 2.0 x_1 + x_2 + x_6 <= 2.0 x_2 + x_3 + x_8 <= 2.0 x_3 + x_4 + x_5 <= 2.0 x_0 + x_4 + x_7 <= 2.0 x_0 + x_5 + x_7 <= 2.0 x_1 + x_7 + x_9 <= 2.0 x_2 + x_6 + x_9 <= 2.0 x_3 + x_6 + x_8 <= 2.0 x_4 + x_5 + x_8 <= 2.0 Variables: x_0 is an integer variable (min=0.0, max=+oo) x_1 is an integer variable (min=0.0, max=+oo) x_2 is an integer variable (min=0.0, max=+oo) x_3 is an integer variable (min=0.0, max=+oo) x_4 is an integer variable (min=0.0, max=+oo) x_5 is an integer variable (min=0.0, max=+oo) x_6 is an integer variable (min=0.0, max=+oo) x_7 is an integer variable (min=0.0, max=+oo) x_8 is an integer variable (min=0.0, max=+oo) x_9 is an integer variable (min=0.0, max=+oo) Optimal Value: 5.0 x_{1} = 1.000000 x_{2} = 1.000000 x_{3} = 1.000000 x_{4} = 1.000000 x_{5} = 1.000000 x_{6} = 0.000000 x_{7} = 0.000000 x_{8} = 0.000000 x_{9} = 0.000000 x_{10} = 0.000000 }}} {{{id=10| /// }}}