ecole
                                
                                 ecole copied to clipboard
                                
                                    ecole copied to clipboard
                            
                            
                            
                        Instance saving from NodeBipartite/MilpBipartite observation
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.