Ask Your Question

Revision history [back]

Since you already know about MILP, here are 2 possibities.

If p is your MixedIntegerLinearProgram, you can construct its polytope and ask for its integer points:

sage: P = p.polyhedron()
sage: P.integral_points()

Another possiblity, to be used when it is hard to find even a single point, is to use the power of MILP solvers as follows:

  • pick a random linear form to maximize
  • solve the linear integer problem and yield the returned solution
  • add a constraint that removes only that solution to the system (because of the linear form, the provious solution is an exremal point of the convex hull of the set of the integer solutions)
  • loop

Since you already know about MILP, here are 2 possibities.

If p is your MixedIntegerLinearProgram, you can construct its polytope and ask for its integer points:

sage: P = p.polyhedron()
sage: P.integral_points()

This work for "fat" polytopes of low dimension.

Another possiblity, to be used when it is hard to find even a single point, is to use the power of MILP solvers as follows:

  • pick a random linear form to maximize
  • solve the linear integer problem and yield the returned solution
  • add a constraint that removes only that solution to the system (because of the linear form, the provious solution is an exremal point of the convex hull of the set of the integer solutions)
  • loop

Since you already know about MILP, here are 2 possibities.

If p is your MixedIntegerLinearProgram, you can construct its polytope and ask for its integer points:

sage: P = p.polyhedron()
sage: P.integral_points()

This work works for "fat" polytopes of low dimension.

Another possiblity, to be used when it is hard to find even a single point, is to use the power of MILP solvers as follows:

  • pick a random linear form to maximize
  • solve the linear integer problem and yield the returned solution
  • add a constraint that removes only that solution to the system (because of the linear form, the provious solution is an exremal point of the convex hull of the set of the integer solutions)
  • loop

Since you already know about MILP, here are 2 possibities.

If p is your MixedIntegerLinearProgram, you can construct its polytope and ask for its integer points:

sage: P = p.polyhedron()
sage: P.integral_points()

This works for "fat" polytopes of low dimension.

Another possiblity, to be used when it is hard to find even a single point, is to use the power of MILP solvers as follows:

  • pick a random linear form to maximize
  • solve the linear integer problem and yield the returned solution
  • add a linear constraint that removes only that solution to the system (because of the linear form, the provious solution is an exremal extremal point of the convex hull of the set of the integer solutions)
  • loop