Harald, this is very informative for me.  Maybe something stepwise
like this should be at the top of 
http://www.sagemath.org/doc/reference/sage/numerical/mip.html
so that it's very visible as an example of doing everything, or at
least as an additional example in
sage.numerical.mip.MixedIntegerLinearProgram .  Not everyone using
these will be experts in such things.

It would also be worth including references to programming stuff in
general in the solve() documentation, so people who aren't familiar
would know where to go.

- kcrisman

On Jul 30, 6:00 am, Harald Schilly <harald.schi...@gmail.com> wrote:
> On 30 Jul., 00:01, Johannes <dajo.m...@web.de> wrote:
>
> > Hi list,
> > i try to solve a linear equation in ZZ in the variables w_i:
>
> Here is a MILP formulation of your problem, I've pasted the input cell
> in {{{}}} and the output in between
>
> {{{
> p = MixedIntegerLinearProgram(maximization=False)
> # not reals, we want integers
> w = p.new_variable(integer=True)
> p.add_constraint(w[0] + w[1] + w[2] - 14*w[3] == 0)
> p.add_constraint(w[1] + 2*w[2] - 8*w[3] == 0)
> p.add_constraint(2*w[2] - 3*w[3] == 0)
> # we don't want the trivial solution
> p.add_constraint(w[3] >= 1)
> # minimum of each variable is 0 by default, make it +infinity
> [p.set_min(w[i], None) for i in range(1,4) ]
> # minimize w3
> p.set_objective(w[3])
> # show what we have created so far
> p.show()
>
> }}}
>
> Minimization:
>   x_3
> Constraints:
>    0 <= x_0 +x_1 +x_2 -14 x_3 <= 0
>    0 <= x_1 +2 x_2 -8 x_3 <= 0
>    0 <= 2 x_2 -3 x_3 <= 0
>    -1 x_3 <= -1
> Variables:
>   x_0 is an integer variable (min=0.0, max=+oo)
>   x_1 is an integer variable (min=-oo, max=+oo)
>   x_2 is an integer variable (min=-oo, max=+oo)
>   x_3 is an integer variable (min=-oo, max=+oo)
>
> {{{
> # solve it (default is GLPK, there are other solvers, too)
> print 'Objective Value:', p.solve()
>
> }}}
>
> Objective Value: 2.0
>
> {{{
> p.get_values(w)
>
> }}}
>
> {0: 15.0, 1: 10.0, 2: 3.0, 3: 2.0}
>
> {{{
> # to get one value as integer
> w_sol = p.get_values(w)
> int(round(w_sol[2]))
>
> }}}
>
> 3
>
> greetings H

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to