Opened 6 months ago

Last modified 3 months ago

#31742 new enhancement

MixedIntegerLinearProgram.ambient_manifold, feasible_subset, objective_scalar_field, optimal_subset

Reported by: mkoeppe Owned by:
Priority: major Milestone: sage-9.5
Component: manifolds Keywords:
Cc: egourgoulhon, gh-mjungmath, tscrim, yzh Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: u/mkoeppe/mixedintegerlinearprogram_ambient_manifold__feasible_subset__objective_scalar_field__optimal_subset (Commits, GitHub, GitLab) Commit: 1c7a69772c51deaa5898d2cf5d5b1a888c7c7c94
Dependencies: Stopgaps:

Status badges

Description

We define some convenience methods that make it easy to construct manifold objects corresponding to linear and mixed-integer linear optimization problems.

The ambient manifold is just a Euclidean space, using the (formatted) variable names of the frontend. We also define a backend chart using the variable names that the MILP backend uses.

Adding variables to the MILP will define a ContinuousMap that injects the previous MILP into the new one.

Adding constraints to the MILP will set up a subset.

Change History (7)

comment:1 Changed 6 months ago by mkoeppe

  • Branch set to u/mkoeppe/mixedintegerlinearprogram_ambient_manifold__feasible_subset__objective_scalar_field__optimal_subset

comment:2 Changed 6 months ago by git

  • Commit set to 616dc06bdd5325f26c603d47a02d3c3ab5845a13

Branch pushed to git repo; I updated commit sha1. New commits:

3270098MixedIntegerLinearProgram: New init arg 'name'
a001f20MixedIntegerLinearProgram.interactive_lp_problem: Factor out helper functions _backend_variable_names etc
616dc06MixedIntegerLinearProgram.ambient_manifold: New

comment:3 Changed 6 months ago by git

  • Commit changed from 616dc06bdd5325f26c603d47a02d3c3ab5845a13 to b1b29a5bf3c7f5e01358fb0179a9717ab695ed69

Branch pushed to git repo; I updated commit sha1. New commits:

b1b29a5MixedIntegerLinearProgram.ambient_manifold: New

comment:4 Changed 6 months ago by git

  • Commit changed from b1b29a5bf3c7f5e01358fb0179a9717ab695ed69 to 1c7a69772c51deaa5898d2cf5d5b1a888c7c7c94

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

1c7a697MixedIntegerLinearProgram.ambient_manifold: Add docstring

comment:5 Changed 6 months ago by mkoeppe

Perhaps the strange variable names for the backend, constructed in MIPVariable.__getitem__, should be changed to the format that _format_backend_variable_name uses.

sage: M2.<x> = MixedIntegerLinearProgram()                                                                                                               
sage: x[1,2]                                                                                                                                             
x_0
sage: x[3,4]                                                                                                                                             
x_1
sage: M2.get_backend().col_name(0)                                                                                                                       
'x[(1, 2)]'

This variable name is not compatible with LP (http://lpsolve.sourceforge.net/5.0/CPLEX-format.htm) or MPS file format (https://www.gurobi.com/documentation/9.1/refman/mps_format.html). So changing this to something that has a chance to work with these file formats, such as x_1_2, would be an improvement.

Last edited 6 months ago by mkoeppe (previous) (diff)

comment:6 Changed 6 months ago by mkoeppe

opened #31791 (MIPVariable: Better names for backend variable names)

comment:7 Changed 3 months ago by mkoeppe

  • Milestone changed from sage-9.4 to sage-9.5
Note: See TracTickets for help on using tickets.