ecole icon indicating copy to clipboard operation
ecole copied to clipboard

Instance saving from NodeBipartite/MilpBipartite observation

Open dchetelat opened this issue 4 years ago • 0 comments

MilpBipartiteObs contains all the information necessary to reconstruct the MILP it represents (A, b, c). NodeBipartiteObs too (although maybe it is missing the actual lhs/rhs coefficients, which could be added).

The proposal would be to add a .instance() method to those observations, that could return a scip::Model representing this MILP which could be then saved to a file, or passed to a env.reset, or modified by PySCIPOpt, or anything else we want to do with it.

That is, we would be able to do, say,

import ecole

env = ecole.environment.Branching(
    observation_function=ecole.observation.NodeBipartite()
)

obs, action_set, _, done, _ = env.reset('instance.lp')

# This is an ecole.core.scip.Model
instance = obs.instance()
instance.write_problem(f"postprocessed_instance.lp")

and this would return and save the instance at the root node, after preprocessing, for example.

dchetelat avatar Apr 19 '21 19:04 dchetelat