Quickstart¶

[1]:
from optiwindnet.importer import load_repository
from optiwindnet.svg import svgplot
from optiwindnet.interarraylib import G_from_S
from optiwindnet.mesh import make_planar_embedding
from optiwindnet.pathfinding import PathFinder
[2]:
locations = load_repository()

Quickest (sub-second)¶

[3]:
from optiwindnet.heuristics import EW_presolver
[4]:
L = locations.doggerA
[5]:
%%timeit
P, A = make_planar_embedding(L)
43.2 ms ± 9.56 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
[6]:
P, A = make_planar_embedding(L)
[7]:
%%timeit
S_pre = EW_presolver(A, capacity=8)
7.95 ms ± 608 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
[8]:
S_pre = EW_presolver(A, capacity=8)
[9]:
%%timeit
G_tentative = G_from_S(S_pre, A)
G_pre = PathFinder(G_tentative, planar=P, A=A).create_detours()
48.8 ms ± 2.91 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
[10]:
G_tentative = G_from_S(S_pre, A)
G_pre = PathFinder(G_tentative, planar=P, A=A).create_detours()
[11]:
svgplot(G_pre)
[11]:
../_images/notebooks_quickstart_low_12_0.svg

Quick (radial only, a second or two)¶

[12]:
from optiwindnet.baselines.hgs import hgs_multiroot
from optiwindnet.interarraylib import as_normalized
[13]:
L = locations.doggerA
P, A = make_planar_embedding(L)
S_hgs = hgs_multiroot(as_normalized(A), capacity=8, time_limit=2)
G_tentative = G_from_S(S_hgs, A)
G_hgs = PathFinder(G_tentative, planar=P, A=A).create_detours()
svgplot(G_hgs)
[13]:
../_images/notebooks_quickstart_low_15_0.svg

With quality assurance (a few minutes)¶

[14]:
from optiwindnet.MILP import solver_factory, ModelOptions
[15]:
solver = solver_factory('ortools')
[16]:
ModelOptions.help()
topology in {"radial", "branched"} default: branched
    Set the topology of subtrees in the solution.

feeder_route in {"straight", "segmented"} default: segmented
    If feeder routes must be "straight" or can be detoured ("segmented").

feeder_limit in {"unlimited", "specified", "minimum", "min_plus1", "min_plus2", "min_plus3"} default: unlimited
    Whether to limit the maximum number of feeders, if set to "specified", additional kwarg "max_feeders" must be given.

balanced [bool] default: False
    Whether to enforce balanced subtrees (subtree loads differ at most by one unit).

max_feeders [int] default: 0
    Maximum number of feeders (used only if <feeder_limit = "specified">)

[17]:
solver.set_problem(
    P, A, S_hgs.graph['capacity'], ModelOptions(
        topology='branched',
        feeder_route='segmented',
        feeder_limit='unlimited'
    ), warmstart=S_hgs
)
[18]:
# required to get the log inside the notebook (goes only to console otherwise)
solver.solver.log_callback = print

solver.solve(
    time_limit=40,
    mip_gap=0.005,
    verbose=True,
)

Starting CP-SAT solver v9.14.6206
Parameters: max_time_in_seconds: 40 log_search_progress: true relative_gap_limit: 0.005
Setting number of workers to 8

Initial optimization model '': (model_fingerprint: 0xd731f65355c953ec)
#Variables: 1'690 (#bools: 845 in floating point objective) (1'500 primary variables)
  - 845 Booleans in [0,1]
  - 750 in [0,7]
  - 95 in [0,8]
#kAtMostOne: 635 (#literals: 1'926)
#kLinear1: 1'690 (#enforced: 1'690)
#kLinear3: 4
#kLinearN: 284 (#terms: 4'213)

Starting presolve at 0.01s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 845 terms with magnitude in [1409.66, 22631.9] average = 4594.28
[Scaling] Objective coefficient relative error: 1.60816e-10
[Scaling] Objective worst-case absolute error: 5.3597e-05
[Scaling] Objective scaling factor: 2.09715e+06
  1.77e-03s  0.00e+00d  [DetectDominanceRelations]
  6.51e-02s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  2.82e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::ExtractEncodingFromLinear] #potential_supersets=730
  1.69e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateColumns]
  3.48e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 6'328 nodes and 11'931 arcs.
[Symmetry] Symmetry computation done. time: 0.0016671 dtime: 0.00115685
  7.69e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
  3.93e-02s  3.73e-03d  [operations_research::sat::CpModelPresolver::Probe] #probed=1'690
  1.26e-03s  3.79e-04d  [MaxClique] Merged 635(1'926 literals) into 330(1'316 literals) at_most_ones.
  7.28e-04s  0.00e+00d  [DetectDominanceRelations]
  9.31e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  9.53e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::ProcessAtMostOneAndLinear]
  6.95e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
  6.46e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
  9.30e-04s  1.43e-05d  [operations_research::sat::CpModelPresolver::DetectDominatedLinearConstraints] #relevant_constraints=193 #num_inclusions=96
  7.03e-05s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDifferentVariables]
  1.23e-02s  3.72e-04d  [operations_research::sat::CpModelPresolver::ProcessSetPPC] #relevant_constraints=427 #num_inclusions=425
  1.34e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::FindAlmostIdenticalLinearConstraints]
  1.10e-03s  2.83e-04d  [operations_research::sat::CpModelPresolver::FindBigAtMostOneAndLinearOverlap]
  7.51e-04s  3.25e-04d  [operations_research::sat::CpModelPresolver::FindBigVerticalLinearOverlap]
  1.21e-04s  1.24e-05d  [operations_research::sat::CpModelPresolver::FindBigHorizontalLinearOverlap] #linears=179
  5.31e-05s  0.00e+00d  [operations_research::sat::CpModelPresolver::MergeClauses]
  1.40e-03s  0.00e+00d  [DetectDominanceRelations]
  7.41e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.29e-03s  0.00e+00d  [DetectDominanceRelations]
  1.06e-02s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  6.00e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateColumns]
  1.14e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 5'717 nodes and 9'866 arcs.
[Symmetry] Symmetry computation done. time: 0.0023584 dtime: 0.00104489
[SAT presolve] num removable Booleans: 0 / 845
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:70 literals:140 vars:140 one_side_vars:140 simple_definition:0 singleton_clauses:0
[SAT presolve] [0.0002579s] clauses:70 literals:140 vars:140 one_side_vars:140 simple_definition:0 singleton_clauses:0
[SAT presolve] [0.000431s] clauses:70 literals:140 vars:140 one_side_vars:140 simple_definition:0 singleton_clauses:0
  1.84e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
  3.44e-02s  3.45e-03d  [operations_research::sat::CpModelPresolver::Probe] #probed=1'690
  1.80e-03s  3.69e-04d  [MaxClique]
  1.42e-03s  0.00e+00d  [DetectDominanceRelations]
  1.53e-02s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.22e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::ProcessAtMostOneAndLinear]
  1.19e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
  1.05e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
  9.90e-04s  1.07e-05d  [operations_research::sat::CpModelPresolver::DetectDominatedLinearConstraints] #relevant_constraints=192 #num_inclusions=95
  1.14e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::DetectDifferentVariables]
  5.94e-04s  6.76e-06d  [operations_research::sat::CpModelPresolver::ProcessSetPPC] #relevant_constraints=426
  1.42e-04s  0.00e+00d  [operations_research::sat::CpModelPresolver::FindAlmostIdenticalLinearConstraints]
  1.20e-03s  2.79e-04d  [operations_research::sat::CpModelPresolver::FindBigAtMostOneAndLinearOverlap]
  8.61e-04s  3.25e-04d  [operations_research::sat::CpModelPresolver::FindBigVerticalLinearOverlap]
  1.32e-04s  1.24e-05d  [operations_research::sat::CpModelPresolver::FindBigHorizontalLinearOverlap] #linears=179
  7.18e-05s  0.00e+00d  [operations_research::sat::CpModelPresolver::MergeClauses]
  1.02e-03s  0.00e+00d  [DetectDominanceRelations]
  1.13e-02s  0.00e+00d  [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.92e-03s  0.00e+00d  [operations_research::sat::CpModelPresolver::ExpandObjective] #entries=7'754 #tight_variables=845 #tight_constraints=95

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 191 times.
  - rule 'at_most_one: transformed into max clique.' was applied 1 time.
  - rule 'deductions: 1690 stored' was applied 1 time.
  - rule 'exactly_one: simplified objective' was applied 95 times.
  - rule 'linear: positive equal one' was applied 95 times.
  - rule 'objective: shifted cost with exactly ones' was applied 95 times.
  - rule 'presolve: 0 unused variables removed.' was applied 1 time.
  - rule 'presolve: iteration' was applied 2 times.
  - rule 'setppc: exactly_one included in linear' was applied 95 times.
  - rule 'setppc: reduced linear coefficients' was applied 94 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 845 times.
  - rule 'variables: detect half reified value encoding' was applied 1'690 times.

Presolved optimization model '': (model_fingerprint: 0x9ac4469a2efff135)
#Variables: 1'690 (#bools: 750 in objective) (1'500 primary variables)
  - 845 Booleans in [0,1]
  - 750 in [0,7]
  - 95 in [0,8]
#kAtMostOne: 260 (#literals: 1'176)
#kBoolAnd: 70 (#enforced: 70) (#literals: 140)
#kExactlyOne: 95 (#literals: 845)
#kLinear1: 1'690 (#enforced: 1'690)
#kLinear3: 4
#kLinearN: 188 (#terms: 2'523)
[Symmetry] Graph for symmetry has 5'717 nodes and 9'866 arcs.
[Symmetry] Symmetry computation done. time: 0.0009476 dtime: 0.00104362

Preloading model.
#Bound   0.29s best:inf   next:[160817.074,2309766.32] initial_domain
#1       0.29s best:243062.907 next:[160817.074,243062.907] complete_hint
#Model   0.30s var:1690/1690 constraints:2307/2307

Starting search at 0.30s with 8 workers.
6 full problem subsolvers: [core, default_lp, max_lp, no_lp, quick_restart, reduced_costs]
2 first solution subsolvers: [fj, fs_random_no_lp]
9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]

#Bound   0.42s best:243062.907 next:[188354.862,243062.907] quick_restart
#Bound   0.46s best:243062.907 next:[188355.856,243062.907] default_lp
#Bound   0.48s best:243062.907 next:[188888.882,243062.907] quick_restart
#Bound   0.55s best:243062.907 next:[188938.532,243062.907] quick_restart
#Bound   0.56s best:243062.907 next:[189781.728,243062.907] reduced_costs
#Bound   0.67s best:243062.907 next:[189787.863,243062.907] reduced_costs
#Bound   0.72s best:243062.907 next:[189886.17,243062.907] reduced_costs
#Bound   0.74s best:243062.907 next:[223973.897,243062.907] max_lp
#Bound   1.09s best:243062.907 next:[225385.939,243062.907] max_lp
#2       1.27s best:243061.638 next:[225385.939,243061.638] graph_arc_lns (d=5.00e-01 s=9 t=0.10 p=0.00 stall=0 h=base)
#Bound   1.53s best:243061.638 next:[226110.959,243061.638] max_lp
#3       1.87s best:242646.723 next:[226110.959,242646.723] rins_lp_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base)
#4       1.91s best:242646.088 next:[226110.959,242646.088] rins_lp_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base) [combined with: graph_arc_lns (d=5.0...]
#Bound   2.03s best:242646.088 next:[226518.351,242646.088] max_lp
#Bound   2.61s best:242646.088 next:[226990.815,242646.088] max_lp
#Bound   3.19s best:242646.088 next:[227472.946,242646.088] max_lp
#5       5.01s best:242630.476 next:[227472.946,242630.476] rins_lp_lns (d=2.93e-01 s=32 t=0.10 p=0.00 stall=0 h=base)
#Bound   5.05s best:242630.476 next:[227789.346,242630.476] max_lp
#6       6.20s best:242442.636 next:[227789.346,242442.636] graph_arc_lns (d=6.41e-01 s=38 t=0.10 p=0.67 stall=2 h=base)
#Bound   8.85s best:242442.636 next:[228055.107,242442.636] max_lp
#Bound   9.86s best:242442.636 next:[228351.766,242442.636] max_lp
#7      11.36s best:241056.097 next:[228351.766,241056.097] rins_pump_lns (d=4.81e-01 s=55 t=0.10 p=0.50 stall=0 h=base)
#Bound  11.91s best:241056.097 next:[228500.898,241056.097] max_lp
#Bound  15.09s best:241056.097 next:[228673.051,241056.097] max_lp
#Bound  18.27s best:241056.097 next:[228785.359,241056.097] max_lp
#8      25.99s best:240847.588 next:[228785.359,240847.588] graph_arc_lns (d=4.53e-01 s=106 t=0.10 p=0.50 stall=6 h=base)

Task timing                   n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
              'core':         1 [  39.70s,   39.70s]   39.70s   0.00ns   39.70s         1 [  12.16s,   12.16s]   12.16s   0.00ns   12.16s
        'default_lp':         1 [  39.69s,   39.69s]   39.69s   0.00ns   39.69s         1 [   5.19s,    5.19s]    5.19s   0.00ns    5.19s
  'feasibility_pump':        82 [140.10us,    1.28s]  95.05ms 294.96ms    7.79s         8 [196.88ms, 322.49ms] 242.36ms  40.81ms    1.94s
                'fj':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
   'fs_random_no_lp':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
     'graph_arc_lns':        19 [ 34.05ms, 929.01ms] 461.42ms 316.87ms    8.77s        19 [ 86.30us, 100.26ms]  60.87ms  45.12ms    1.16s
     'graph_cst_lns':        18 [ 59.74ms,    2.51s] 521.94ms 567.87ms    9.39s        18 [109.30us, 101.61ms]  53.53ms  47.40ms 963.56ms
     'graph_dec_lns':        19 [  4.13ms,    1.20s] 474.85ms 401.92ms    9.02s        16 [ 10.00ns, 100.11ms]  59.60ms  45.82ms 953.54ms
     'graph_var_lns':        19 [ 18.87ms,    1.36s] 446.28ms 396.40ms    8.48s        19 [ 10.00ns, 100.39ms]  51.93ms  47.26ms 986.75ms
                'ls':        22 [308.78ms, 719.49ms] 381.73ms  85.40ms    8.40s        22 [100.01ms, 100.02ms] 100.01ms   3.21us    2.20s
            'max_lp':         1 [  39.69s,   39.69s]   39.69s   0.00ns   39.69s         1 [   4.78s,    4.78s]    4.78s   0.00ns    4.78s
             'no_lp':         1 [  39.70s,   39.70s]   39.70s   0.00ns   39.70s         1 [  11.34s,   11.34s]   11.34s   0.00ns   11.34s
     'quick_restart':         1 [  39.70s,   39.70s]   39.70s   0.00ns   39.70s         1 [   6.96s,    6.96s]    6.96s   0.00ns    6.96s
     'reduced_costs':         1 [  39.70s,   39.70s]   39.70s   0.00ns   39.70s         1 [   5.01s,    5.01s]    5.01s   0.00ns    5.01s
         'rins/rens':        20 [  6.91ms, 986.44ms] 464.36ms 352.46ms    9.29s        15 [502.69us, 100.05ms]  76.92ms  39.02ms    1.15s
       'rnd_cst_lns':        14 [ 43.17ms,    1.79s] 608.12ms 470.79ms    8.51s        14 [218.00ns, 100.38ms]  57.13ms  43.78ms 799.75ms
       'rnd_var_lns':        19 [ 50.22ms,    1.54s] 500.14ms 434.47ms    9.50s        19 [ 10.00ns, 100.38ms]  51.79ms  46.22ms 984.06ms

Search stats          Bools  Conflicts  Branches  Restarts  BoolPropag  IntegerPropag
             'core':    879    257'245   561'016    23'197   3'894'553     11'353'253
       'default_lp':    917        746    11'455     5'151      92'425        388'892
  'fs_random_no_lp':      0          0         0         0           0              0
           'max_lp':    845        232    10'024     5'178      47'157        208'835
            'no_lp':    845    141'973   220'207    18'946   9'375'722     31'396'391
    'quick_restart':    913        156    50'169    25'906     208'162        895'064
    'reduced_costs':    845        493    30'818    13'878     119'821        580'696

SAT stats             ClassicMinim  LitRemoved  LitLearned  LitForgotten  Subsumed  MClauses  MDecisions  MLitTrue  MSubsumed  MLitRemoved  MReused
             'core':       245'640   2'626'066  17'091'805    15'459'542     2'193     7'771      81'762         0        586        8'933    1'598
       'default_lp':           627      28'164      75'815             0         2       397       3'146         0          6           66        0
  'fs_random_no_lp':             0           0           0             0         0         0           0         0          0            0        0
           'max_lp':           231      16'566      58'735             0         0       385       3'035         0          0            1        0
            'no_lp':       140'290   1'541'792  11'583'785    10'654'747       472     5'605      33'491         0         68          832    6'323
    'quick_restart':           141       6'293      11'868             0         0     2'771      21'648         0          9           54       30
    'reduced_costs':           440      16'680      74'961             0         0     1'330      10'500         0          0            0        0

Lp stats            Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
     'default_lp':          1      71'078      3'542    3'656        0      187
         'max_lp':          1      37'705      3'257    1'642       87        9
  'quick_restart':          1      53'163      4'076    1'745        9        7
  'reduced_costs':          1      55'202      3'582    1'763      194      108

Lp dimension            Final dimension of first component
     'default_lp':    985 rows, 1596 columns, 7217 entries
         'max_lp':    845 rows, 1690 columns, 6168 entries
  'quick_restart':  1566 rows, 1596 columns, 17203 entries
  'reduced_costs':  1420 rows, 1690 columns, 16454 entries

Lp debug            CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
     'default_lp':          0            0   3'830         0   6'779           0
         'max_lp':          0            2   1'738         0  37'489           0
  'quick_restart':          0            0   1'755         0  17'537           0
  'reduced_costs':          0            0   2'012         0  21'525           0

Lp pool             Constraints  Updates  Simplif  Merged  Shortened  Split  Strenghtened    Cuts/Call
     'default_lp':        6'342       30        0       0          0     22           130  3'542/7'755
         'max_lp':        6'409      324        0       0          0    467            31  3'257/6'196
  'quick_restart':        6'876      164        0       0          0     78           115  4'076/8'425
  'reduced_costs':        6'734      159        0       0          0    102           101  3'582/6'795

Lp Cut            default_lp  max_lp  quick_restart  reduced_costs
          CG_FF:          26      10             28             30
           CG_K:          19       9              8              5
          CG_KL:           5       3              1              1
           CG_R:          57      37             44             39
          CG_RB:          91      74             97            102
         CG_RBP:          58      28             57             29
             IB:       1'292     458          1'016          1'061
       MIR_1_FF:         143     141            216            141
        MIR_1_K:          56      11             71             20
       MIR_1_KL:          30       6             37              7
        MIR_1_R:           1       2              4              2
       MIR_1_RB:          76      54            128             87
      MIR_1_RBP:          54      19             99             28
       MIR_2_FF:         147     180            210            200
        MIR_2_K:          54      13             74             37
       MIR_2_KL:          23       2             23              5
        MIR_2_R:           9       8             10              9
       MIR_2_RB:         130     176            178            160
      MIR_2_RBP:          71      35            109             63
       MIR_3_FF:         117     196            121            138
        MIR_3_K:          63      30             77             31
       MIR_3_KL:          20       -             17              4
        MIR_3_R:           3      12              7             12
       MIR_3_RB:         118     181            107            155
      MIR_3_RBP:          63      57             92             59
       MIR_4_FF:          66     157             84            104
        MIR_4_K:          39      39             65             27
       MIR_4_KL:           7       -              6              3
        MIR_4_R:           6      16              6             13
       MIR_4_RB:          73     149             65            125
      MIR_4_RBP:          31      52             55             44
       MIR_5_FF:          41     117             54             58
        MIR_5_K:          34      27             41             22
       MIR_5_KL:           4       3              4              2
        MIR_5_R:           6      17              7              5
       MIR_5_RB:          43     106             35             67
      MIR_5_RBP:          24      37             29             16
       MIR_6_FF:          21      88             28             38
        MIR_6_K:          23      23             31             26
       MIR_6_KL:           3      18              4             17
        MIR_6_R:           1       7              1              3
       MIR_6_RB:          15      52             22             37
      MIR_6_RBP:          12      34             31             22
   ZERO_HALF_FF:          43      13             32             21
    ZERO_HALF_K:          14       3              8              7
   ZERO_HALF_KL:           4       -              1              -
    ZERO_HALF_R:         235     462            492            398
   ZERO_HALF_RB:          52      81             99             79
  ZERO_HALF_RBP:          19      14             45             23

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':          3/19     47%    3.71e-01       0.10
  'graph_cst_lns':          1/18     50%    6.02e-01       0.10
  'graph_dec_lns':          1/16     50%    7.15e-01       0.10
  'graph_var_lns':          0/19     47%    5.28e-01       0.10
      'rins/rens':         18/20     50%    4.46e-01       0.10
    'rnd_cst_lns':          0/14     50%    6.75e-01       0.10
    'rnd_var_lns':          1/19     53%    7.53e-01       0.10

LS stats                                Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                         'ls_restart':        4                  4    54'233         0              0          0          8'041      1'941'189
                'ls_restart_compound':        2                  2         0    34'966          2'229     16'363            255        896'324
        'ls_restart_compound_perturb':        3                  3         0    48'212          5'170     21'518            258      1'330'743
                   'ls_restart_decay':        5                  5    76'714         0              0          0          1'363      1'721'999
          'ls_restart_decay_compound':        1                  1         0    12'866          2'777      5'038             35        442'133
  'ls_restart_decay_compound_perturb':        4                  4         0    50'936          8'829     21'046            155      1'528'352
           'ls_restart_decay_perturb':        1                  1    15'790         0              0          0            302        356'329
                 'ls_restart_perturb':        2                  2    25'490         0              0          0          3'219        954'995

Solutions (8)       Num   Rank
  'complete_hint':    1  [1,1]
  'graph_arc_lns':    3  [2,8]
    'rins_lp_lns':    3  [3,5]
  'rins_pump_lns':    1  [7,7]

Objective bounds     Num
      'default_lp':    1
  'initial_domain':    1
          'max_lp':   12
   'quick_restart':    3
   'reduced_costs':    3

Solution repositories    Added  Queried  Synchro
  'feasible solutions':     16      293       14
   'fj solution hints':      0        0        0
        'lp solutions':     85       10       80
                'pump':    200       10

[Scaling] scaled_objective_bound: 228785 corrected_bound: 228785 delta: -1.01182e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 240847.587817601
best_bound: 228785.3590527162
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 40.071
usertime: 40.071
deterministic_time: 56.5917
gap_integral: 532.551
solution_fingerprint: 0xfca1d0f2a1c38f02

[18]:
SolutionInfo(runtime=40.070975000000004, bound=228785.35905271623, objective=240847.58781760104, relgap=0.05008241466806718, termination='FEASIBLE')
[19]:
S, G = solver.get_solution()
[20]:
svgplot(G)
[20]:
../_images/notebooks_quickstart_low_23_0.svg