optiwindnet.MILP.ortools ======================== .. py:module:: optiwindnet.MILP.ortools Module Contents --------------- .. py:function:: make_min_length_model(A: networkx.Graph, capacity: int, *, topology: optiwindnet.MILP._core.Topology = Topology.BRANCHED, feeder_route: optiwindnet.MILP._core.FeederRoute = FeederRoute.SEGMENTED, feeder_limit: optiwindnet.MILP._core.FeederLimit = FeederLimit.UNLIMITED, balanced: bool = False, max_feeders: int = 0) -> tuple[ortools.math_opt.python.mathopt.Model, optiwindnet.MILP._core.ModelMetadata] Make discrete optimization model over link set A. Build OR-tools CP-SAT model for the collector system length minimization. :param A: graph with the available edges to choose from :param capacity: maximum link flow capacity :param topology: one of Topology.{BRANCHED, RADIAL} :param feeder_route: FeederRoute.SEGMENTED -> feeder routes may be detoured around subtrees; FeederRoute.STRAIGHT -> feeder routes must be straight, direct lines :param feeder_limit: one of FeederLimit.{MINIMUM, UNLIMITED, SPECIFIED, MIN_PLUS1, MIN_PLUS2, MIN_PLUS3} :param max_feeders: only used if feeder_limit is FeederLimit.SPECIFIED .. py:function:: warmup_model(model: ortools.math_opt.python.mathopt.Model, metadata: optiwindnet.MILP._core.ModelMetadata, S: networkx.Graph) -> ortools.math_opt.python.mathopt.Model Set initial solution into `model`. Changes `model` and `metadata` in-place. :param model: CP-SAT model to apply the solution to. :param metadata: indices to the model's variables. :param S: solution topology :returns: The same model instance that was provided, now with a solution. :raises OWNWarmupFailed: if some link in S is not available in model.