HiGHS example¶

[1]:
from optiwindnet.importer import load_repository
from optiwindnet.svg import svgplot
from optiwindnet.mesh import make_planar_embedding
from optiwindnet.interarraylib import G_from_S
from optiwindnet.heuristics import constructor
from optiwindnet.MILP import solver_factory, ModelOptions

Initialize Triton¶

[2]:
locations = load_repository()
[3]:
L = locations.triton
capacity = 8
[4]:
svgplot(L)
[4]:
../_images/notebooks_24-MILP_highs_example_5_0.svg

Optimize Triton¶

[5]:
P, A = make_planar_embedding(L)

Initial heuristic solution to warm-start the solver:

[6]:
Sʹ = constructor(A, capacity=capacity)
Gʹ = G_from_S(Sʹ, A)
svgplot(Gʹ)
[6]:
../_images/notebooks_24-MILP_highs_example_9_0.svg
[7]:
solver = solver_factory('highs')
[8]:
solver.set_problem(
    P, A,
    capacity=Sʹ.graph['capacity'],
    model_options=ModelOptions(
        topology="branched",
        feeder_route="segmented",
        feeder_limit="unlimited",
    ),
    warmstart=Sʹ,
)
[9]:
solver.solve(
    mip_gap=0.005,
    time_limit=60,
    verbose=True,
)
[9]:
SolutionInfo(runtime=60.00697207450867, bound=104851.8677732182, objective=106882.72685312979, relgap=0.01900081649958507, termination='maxTimeLimit')
[10]:
S, G = solver.get_solution()
[11]:
svgplot(G)
[11]:
../_images/notebooks_24-MILP_highs_example_14_0.svg