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 constructor
[4]:
L = locations.doggerA
[5]:
%%timeit
P, A = make_planar_embedding(L)
12.5 ms ± 233 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
[6]:
P, A = make_planar_embedding(L)
[7]:
%%timeit
S_pre = constructor(A, capacity=8)
6.58 ms ± 163 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
[8]:
S_pre = constructor(A, capacity=8)
[9]:
%%timeit
G_tentative = G_from_S(S_pre, A)
G_pre = PathFinder(G_tentative, planar=P, A=A).create_detours()
23.2 ms ± 264 μs 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_cvrp
from optiwindnet.interarraylib import as_normalized
[13]:
L = locations.doggerA
P, A = make_planar_embedding(L)
S_hgs = hgs_cvrp(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.cp_sat')
[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.log_callback = print

solver.solve(
    time_limit=40,
    mip_gap=0.005,
    verbose=True,
)
IntegerBoundsPreprocessor                              2613 rows, 1690 columns, 9531 entries with magnitude in [1.000000e+00, 8.000000e+00]
BoundPropagationPreprocessor                           2613 rows, 1690 columns, 9531 entries with magnitude in [1.000000e+00, 8.000000e+00]
ImpliedIntegerPreprocessor                             2613 rows, 1690 columns, 9531 entries with magnitude in [1.000000e+00, 8.000000e+00]
IntegerBoundsPreprocessor                              2613 rows, 1690 columns, 9531 entries with magnitude in [1.000000e+00, 8.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        2613 rows, 1690 columns, 9531 entries with magnitude in [1.000000e+00, 8.000000e+00]

Scaling to pure integer problem.
Num integers: 1690/1690 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]

Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 40 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.005 log_to_stdout: false
Setting number of workers to 16

Initial optimization model 'optiwindnet': (model_fingerprint: 0x442ff0674372f1a5)
#Variables: 1'690 (#bools: 750 in floating point objective) (1'500 primary variables)
  - 845 Booleans in [0,1]
  - 750 in [0,7]
  - 95 in [0,8]
#kLinear2: 2'065
#kLinear3: 4
#kLinearN: 544 (#terms: 5'389)

Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 750 terms with magnitude in [0.00903211, 21204.4] average = 3140.28
[Scaling] Objective coefficient relative error: 1.87515e-05
[Scaling] Objective worst-case absolute error: 9.16404e-05
[Scaling] Objective scaling factor: 1.04858e+06
  4.13e-04s  0.00e+00d  [DetectDominanceRelations]
  9.67e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  2.84e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=355
  2.05e-04s  0.00e+00d  [DetectDuplicateColumns]
  1.53e-04s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 6'368 nodes and 11'971 arcs.
[Symmetry] Symmetry computation done. time: 0.00116047 dtime: 0.00116108
[SAT presolve] num removable Booleans: 0 / 845
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:375 literals:750 vars:750 one_side_vars:750 simple_definition:0 singleton_clauses:0
[SAT presolve] [3.3386e-05s] clauses:375 literals:750 vars:750 one_side_vars:750 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.0786e-05s] clauses:375 literals:750 vars:750 one_side_vars:750 simple_definition:0 singleton_clauses:0
  1.62e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.73e-02s  1.04e-02d  [Probe] #probed=3'380 #new_binary_clauses=845
  3.63e-04s  5.46e-04d  [MaxClique] Merged 635 constraints with 1'926 literals into 330 constraints with 1'316 literals
  3.61e-04s  0.00e+00d  [DetectDominanceRelations]
  3.27e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.18e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=845
  1.54e-04s  0.00e+00d  [DetectDuplicateConstraints]
  1.44e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  2.41e-04s  1.46e-05d  [DetectDominatedLinearConstraints] #relevant_constraints=193 #num_inclusions=96
  2.33e-05s  0.00e+00d  [DetectDifferentVariables]
  3.09e-03s  3.73e-04d  [ProcessSetPPC] #relevant_constraints=427 #num_inclusions=425
  1.28e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=330
  5.03e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  3.18e-05s  0.00e+00d  [FindAlmostIdenticalLinearConstraints]
  5.41e-04s  2.83e-04d  [FindBigAtMostOneAndLinearOverlap]
  1.80e-04s  3.25e-04d  [FindBigVerticalLinearOverlap]
  2.60e-05s  1.24e-05d  [FindBigHorizontalLinearOverlap] #linears=179
  1.28e-05s  0.00e+00d  [MergeClauses]
  3.72e-04s  0.00e+00d  [DetectDominanceRelations]
  5.54e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  3.40e-04s  0.00e+00d  [DetectDominanceRelations]
  2.74e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.79e-05s  0.00e+00d  [DetectDuplicateColumns]
  1.46e-04s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 5'717 nodes and 9'866 arcs.
[Symmetry] Symmetry computation done. time: 0.000362758 dtime: 0.00104477
[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] [2.0859e-05s] clauses:70 literals:140 vars:140 one_side_vars:140 simple_definition:0 singleton_clauses:0
[SAT presolve] [4.1935e-05s] clauses:70 literals:140 vars:140 one_side_vars:140 simple_definition:0 singleton_clauses:0
  1.58e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.19e-03s  3.44e-03d  [Probe] #probed=1'690
  2.70e-04s  3.69e-04d  [MaxClique]
  3.86e-04s  0.00e+00d  [DetectDominanceRelations]
  2.83e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.55e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  1.63e-04s  0.00e+00d  [DetectDuplicateConstraints]
  1.42e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  2.07e-04s  1.10e-05d  [DetectDominatedLinearConstraints] #relevant_constraints=192 #num_inclusions=95
  2.18e-05s  0.00e+00d  [DetectDifferentVariables]
  1.47e-04s  7.32e-06d  [ProcessSetPPC] #relevant_constraints=426
  1.34e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=330
  5.30e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  2.55e-05s  0.00e+00d  [FindAlmostIdenticalLinearConstraints]
  2.40e-04s  2.79e-04d  [FindBigAtMostOneAndLinearOverlap]
  1.67e-04s  3.25e-04d  [FindBigVerticalLinearOverlap]
  2.38e-05s  1.24e-05d  [FindBigHorizontalLinearOverlap] #linears=179
  1.79e-05s  0.00e+00d  [MergeClauses]
  3.33e-04s  0.00e+00d  [DetectDominanceRelations]
  2.74e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  4.60e-06s  0.00e+00d  [MergeNoOverlap]
  5.10e-06s  0.00e+00d  [MergeNoOverlap2D]
  2.61e-04s  0.00e+00d  [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 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 5'070 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 375 times.
  - rule 'deductions: 1690 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 845 times.
  - rule 'linear2: contains a boolean' was applied 845 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 375 times.
  - rule 'linear: positive at most one' was applied 260 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 'optiwindnet': (model_fingerprint: 0x1b4a1e812e9798b2)
#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.000573017 dtime: 0.00104354

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

Starting search at 0.07s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]

#2       0.10s best:242523.483 next:[160817.074,242523.483] graph_var_lns (d=5.00e-01 s=13 t=0.10 p=0.00 stall=0 h=base)
#Bound   0.10s best:242523.483 next:[162472.38,242523.483] am1_presolve (num_literals=750 num_am1=34 increase=1735714016 work_done=2720)
#3       0.11s best:242512.67 next:[162472.38,242512.67] graph_cst_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base) [combined with: graph_var_lns (d=5.0...]
#Bound   0.12s best:242512.67 next:[188354.862,242512.67] probing
#Bound   0.12s best:242512.67 next:[189781.728,242512.67] pseudo_costs
#4       0.16s best:242488.504 next:[189781.728,242488.504] quick_restart_no_lp (fixed_bools=0/868)
#Bound   0.17s best:242488.504 next:[223973.897,242488.504] lb_tree_search
#5       0.24s best:242487.87 next:[223973.897,242487.87] quick_restart_no_lp (fixed_bools=0/906)
#Bound   0.30s best:242487.87 next:[225201.873,242487.87] lb_tree_search
#Bound   0.31s best:242487.87 next:[225413.966,242487.87] max_lp
#6       0.34s best:242310.843 next:[225413.966,242310.843] rnd_cst_lns (d=7.07e-01 s=24 t=0.10 p=1.00 stall=1 h=base)
#7       0.46s best:242310.208 next:[225413.966,242310.208] quick_restart_no_lp (fixed_bools=0/906)
#Bound   0.80s best:242310.208 next:[225975.405,242310.208] lb_tree_search
#Bound   0.84s best:242310.208 next:[226137.83,242310.208] max_lp
#Bound   0.94s best:242310.208 next:[226569.778,242310.208] lb_tree_search
#Bound   0.99s best:242310.208 next:[226570.47,242310.208] lb_tree_search (nodes=1/1 rc=0 decisions=29 @root=2 restarts=0 lp_iters=[0, 0, 86, 1])
#Bound   1.06s best:242310.208 next:[226781.811,242310.208] max_lp
#Bound   1.24s best:242310.208 next:[226963.029,242310.208] lb_tree_search
#Bound   1.28s best:242310.208 next:[226985.949,242310.208] lb_tree_search (nodes=3/3 rc=0 decisions=34 @root=4 restarts=0 lp_iters=[0, 0, 210, 41])
#Bound   1.31s best:242310.208 next:[227080.328,242310.208] max_lp
#Bound   1.33s best:242310.208 next:[227233.462,242310.208] lb_tree_search
#Bound   1.35s best:242310.208 next:[227237.809,242310.208] lb_tree_search
#Bound   1.40s best:242310.208 next:[227453.066,242310.208] max_lp
#Bound   1.69s best:242310.208 next:[227655.287,242310.208] lb_tree_search
#Bound   1.73s best:242310.208 next:[227683.664,242310.208] lb_tree_search (nodes=3/3 rc=0 decisions=40 @root=7 restarts=0 lp_iters=[0, 0, 536, 41])
#Bound   1.80s best:242310.208 next:[227838.009,242310.208] lb_tree_search
#8       1.83s best:241477.127 next:[227838.009,241477.127] quick_restart_no_lp (fixed_bools=0/954)
#9       1.88s best:240715.16 next:[227838.009,240715.16] lb_relax_lns_bool_h (d=5.00e-01 s=36 t=0.50 p=0.00 stall=0 h=base)
#Bound   2.54s best:240715.16 next:[228039.685,240715.16] lb_tree_search
#Bound   2.56s best:240715.16 next:[228039.687,240715.16] lb_tree_search
#Bound   3.50s best:240715.16 next:[228247.949,240715.16] lb_tree_search
#Bound   3.52s best:240715.16 next:[228249.504,240715.16] lb_tree_search [skipped_logs=0]
#Bound   4.59s best:240715.16 next:[228425.786,240715.16] lb_tree_search (nodes=3/3 rc=0 decisions=48 @root=13 restarts=0 lp_iters=[0, 0, 1'015, 41])  [skipped_logs=1]
#Bound   5.54s best:240715.16 next:[228532.802,240715.16] lb_tree_search [skipped_logs=0]
#Bound   6.60s best:240715.16 next:[228743.177,240715.16] lb_tree_search [skipped_logs=0]
#Bound   8.03s best:240715.16 next:[228920.78,240715.16] lb_tree_search (nodes=3/3 rc=0 decisions=60 @root=20 restarts=0 lp_iters=[0, 0, 1'785, 41])  [skipped_logs=1]
#Bound   9.22s best:240715.16 next:[229133.827,240715.16] lb_tree_search
#Bound   9.97s best:240715.16 next:[229287.595,240715.16] lb_tree_search (nodes=5/5 rc=0 decisions=78 @root=22 restarts=0 lp_iters=[0, 0, 3'131, 186])  [skipped_logs=8]
#Bound  10.09s best:240715.16 next:[229292.614,240715.16] lb_tree_search (nodes=6/6 rc=0 decisions=83 @root=22 restarts=0 lp_iters=[0, 0, 3'413, 243])  [skipped_logs=1]
#Bound  12.02s best:240715.16 next:[229395.682,240715.16] lb_tree_search (nodes=6/6 rc=0 decisions=97 @root=23 restarts=0 lp_iters=[0, 0, 4'566, 243])  [skipped_logs=7]
#Bound  12.80s best:240715.16 next:[229433.71,240715.16] lb_tree_search (nodes=10/10 rc=0 decisions=121 @root=23 restarts=0 lp_iters=[0, 0, 6'301, 438])  [skipped_logs=7]
#Bound  13.98s best:240715.16 next:[229499.155,240715.16] lb_tree_search (nodes=12/12 rc=0 decisions=153 @root=23 restarts=0 lp_iters=[0, 0, 8'895, 480])  [skipped_logs=7]
#Bound  14.96s best:240715.16 next:[229534.89,240715.16] lb_tree_search (nodes=15/15 rc=0 decisions=178 @root=23 restarts=0 lp_iters=[0, 0, 11'255, 715])  [skipped_logs=5]
#Bound  15.89s best:240715.16 next:[229570.87,240715.16] lb_tree_search (nodes=18/18 rc=0 decisions=205 @root=23 restarts=0 lp_iters=[0, 0, 13'490, 959])  [skipped_logs=10]
#Bound  16.86s best:240715.16 next:[229579.054,240715.16] lb_tree_search (nodes=21/21 rc=0 decisions=233 @root=23 restarts=0 lp_iters=[0, 0, 15'830, 1'124])  [skipped_logs=6]
#Bound  17.92s best:240715.16 next:[229640.694,240715.16] lb_tree_search (nodes=25/25 rc=0 decisions=266 @root=23 restarts=0 lp_iters=[0, 0, 18'397, 1'393])  [skipped_logs=5]
#Bound  18.61s best:240715.16 next:[229649.515,240715.16] lb_tree_search (nodes=29/29 rc=2 decisions=286 @root=23 restarts=0 lp_iters=[0, 0, 19'883, 1'571])  [skipped_logs=4]
#Bound  19.93s best:240715.16 next:[229702.82,240715.16] lb_tree_search (nodes=32/32 rc=4 decisions=328 @root=23 restarts=0 lp_iters=[0, 0, 23'117, 1'741])  [skipped_logs=7]
#Bound  20.91s best:240715.16 next:[229724.747,240715.16] lb_tree_search (nodes=36/36 rc=4 decisions=369 @root=23 restarts=0 lp_iters=[0, 0, 26'109, 1'940])  [skipped_logs=5]
#Bound  21.95s best:240715.16 next:[229746.436,240715.16] lb_tree_search (nodes=42/42 rc=4 decisions=418 @root=23 restarts=0 lp_iters=[0, 0, 29'760, 2'198])  [skipped_logs=9]
#Bound  23.00s best:240715.16 next:[229759.907,240715.16] lb_tree_search (nodes=45/45 rc=4 decisions=468 @root=23 restarts=0 lp_iters=[0, 0, 33'048, 2'290])  [skipped_logs=7]
#Bound  23.90s best:240715.16 next:[229780.132,240715.16] lb_tree_search (nodes=50/50 rc=4 decisions=512 @root=23 restarts=0 lp_iters=[0, 0, 35'813, 2'432])  [skipped_logs=8]
#Bound  24.82s best:240715.16 next:[229784.9,240715.16] lb_tree_search (nodes=53/53 rc=5 decisions=564 @root=23 restarts=0 lp_iters=[0, 0, 38'995, 2'654])  [skipped_logs=4]
#Bound  25.82s best:240715.16 next:[229788.007,240715.16] lb_tree_search (nodes=55/55 rc=5 decisions=601 @root=23 restarts=0 lp_iters=[0, 0, 42'002, 2'759])  [skipped_logs=5]
#Bound  26.91s best:240715.16 next:[229798.68,240715.16] lb_tree_search (nodes=59/59 rc=5 decisions=644 @root=23 restarts=0 lp_iters=[0, 0, 45'790, 2'933])  [skipped_logs=6]
#Bound  28.07s best:240715.16 next:[229820.194,240715.16] lb_tree_search (nodes=64/64 rc=5 decisions=701 @root=23 restarts=0 lp_iters=[0, 0, 50'286, 3'149])  [skipped_logs=8]
#Bound  28.98s best:240715.16 next:[229830.927,240715.16] lb_tree_search (nodes=69/69 rc=6 decisions=755 @root=23 restarts=0 lp_iters=[0, 0, 53'408, 3'306])  [skipped_logs=9]
#Bound  29.98s best:240715.16 next:[229844.208,240715.16] lb_tree_search (nodes=73/73 rc=6 decisions=802 @root=23 restarts=0 lp_iters=[0, 0, 57'083, 3'447])  [skipped_logs=6]
#Bound  30.83s best:240715.16 next:[229852.318,240715.16] lb_tree_search (nodes=76/76 rc=6 decisions=846 @root=23 restarts=0 lp_iters=[0, 0, 60'075, 3'561])  [skipped_logs=5]
#Bound  32.02s best:240715.16 next:[229858.255,240715.16] lb_tree_search (nodes=81/81 rc=7 decisions=911 @root=23 restarts=0 lp_iters=[0, 0, 64'625, 3'663])  [skipped_logs=7]
#Bound  32.98s best:240715.16 next:[229862.891,240715.16] lb_tree_search (nodes=86/86 rc=8 decisions=966 @root=23 restarts=0 lp_iters=[0, 0, 68'240, 3'906])  [skipped_logs=6]
#Bound  33.42s best:240715.16 next:[229867.842,240715.16] lb_tree_search (nodes=88/88 rc=8 decisions=989 @root=23 restarts=0 lp_iters=[0, 0, 69'671, 3'997])  [skipped_logs=3]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [  39.97s,   39.97s]   39.97s   0.00ns   39.97s         2 [  3.54ms,   23.98s]   11.99s   11.99s   23.98s
                     'default_lp':         1 [  39.93s,   39.93s]   39.93s   0.00ns   39.93s         2 [118.36ms,   17.02s]    8.57s    8.45s   17.14s
               'feasibility_pump':       186 [ 82.73us,  98.93ms]   3.36ms   7.05ms 625.87ms       184 [367.55us,  65.46ms] 739.80us   4.78ms 136.12ms
                             'fj':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
                             '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':         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
  'fs_random_quick_restart_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':        89 [  8.40ms, 490.87ms] 218.18ms 166.23ms   19.42s        89 [908.00ns, 102.24ms]  56.40ms  46.89ms    5.02s
                  'graph_cst_lns':        80 [  5.96ms, 577.03ms] 242.31ms 183.71ms   19.38s        80 [ 10.00ns, 100.25ms]  54.84ms  46.10ms    4.39s
                  'graph_dec_lns':        75 [  1.65ms, 593.90ms] 265.37ms 192.64ms   19.90s        74 [ 10.00ns, 100.38ms]  58.00ms  45.98ms    4.29s
                  'graph_var_lns':        84 [  8.54ms, 477.07ms] 240.82ms 161.78ms   20.23s        84 [ 10.00ns, 102.21ms]  61.44ms  44.71ms    5.16s
                   'lb_relax_lns':        16 [363.78ms,    2.37s]    1.45s 617.62ms   23.15s        16 [ 95.20ms, 588.77ms] 431.25ms 186.21ms    6.90s
                 'lb_tree_search':         1 [  39.92s,   39.92s]   39.92s   0.00ns   39.92s         2 [205.21ms,   19.73s]    9.97s    9.76s   19.93s
                             'ls':        96 [163.43ms, 260.75ms] 194.03ms  18.56ms   18.63s        96 [100.00ms, 100.03ms] 100.01ms   6.43us    9.60s
                         'ls_lin':        93 [ 90.65ms, 297.83ms] 199.76ms  26.80ms   18.58s        93 [ 49.96ms, 100.03ms]  99.48ms   5.16ms    9.25s
                         'max_lp':         1 [  39.95s,   39.95s]   39.95s   0.00ns   39.95s         2 [201.21ms,   14.87s]    7.53s    7.33s   15.07s
                          'no_lp':         1 [  39.92s,   39.92s]   39.92s   0.00ns   39.92s         2 [  4.23ms,   13.17s]    6.59s    6.58s   13.17s
            'objective_lb_search':         1 [  39.93s,   39.93s]   39.93s   0.00ns   39.93s         2 [122.40ms,   16.58s]    8.35s    8.23s   16.70s
                        'probing':         1 [  39.93s,   39.93s]   39.93s   0.00ns   39.93s         2 [125.66ms,   16.34s]    8.24s    8.11s   16.47s
                   'pseudo_costs':         1 [  39.92s,   39.92s]   39.92s   0.00ns   39.92s         2 [ 39.96ms,   14.09s]    7.07s    7.03s   14.13s
                  'quick_restart':         1 [  39.93s,   39.93s]   39.93s   0.00ns   39.93s         2 [124.58ms,   15.04s]    7.58s    7.46s   15.17s
            'quick_restart_no_lp':         1 [  39.97s,   39.97s]   39.97s   0.00ns   39.97s         2 [  4.23ms,   20.54s]   10.27s   10.27s   20.55s
                  'reduced_costs':         1 [  39.95s,   39.95s]   39.95s   0.00ns   39.95s         2 [ 48.55ms,   15.76s]    7.91s    7.86s   15.81s
                      'rins/rens':        75 [  2.22us, 576.72ms] 247.51ms 215.42ms   18.56s        59 [ 10.07us, 100.13ms]  64.76ms  44.67ms    3.82s
                    'rnd_cst_lns':        75 [ 12.94ms, 664.11ms] 271.80ms 179.63ms   20.38s        75 [136.00ns, 102.17ms]  59.77ms  44.21ms    4.48s
                    'rnd_var_lns':        68 [ 12.13ms, 566.34ms] 291.30ms 184.74ms   19.81s        68 [146.00ns, 100.27ms]  62.32ms  43.72ms    4.24s

Search stats                        Bools  Conflicts   Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    879    660'154  1'206'565       951            2'823    658'988  10'339'331     28'379'725
                     'default_lp':    943      1'958     72'933         7           17'674     23'364     555'062      2'403'739
                      'fs_random':      0          0          0         0                0          0           0              0
                'fs_random_no_lp':      0          0          0         0                0          0           0              0
  'fs_random_quick_restart_no_lp':      0          0          0         0                0          0           0              0
                 'lb_tree_search':    845         79     97'683         0           36'436     40'736     441'162      1'864'164
                         'max_lp':    845      1'419     90'960         9           23'891     28'981     527'301      2'742'464
                          'no_lp':    845    391'459    693'170       779           53'300    455'277  27'797'059     80'919'525
            'objective_lb_search':    944      1'567    115'051        10           25'547     33'552     751'367      3'468'522
                        'probing':    886         11      2'147         0            1'855      1'866      14'822         49'705
                   'pseudo_costs':    845      1'811    121'921        13           30'819     37'496     709'676      3'681'412
                  'quick_restart':    909        376    154'138        17           40'755     49'350     860'639      4'177'195
            'quick_restart_no_lp':  1'540     91'552  2'036'022     8'106           63'509    175'863  15'057'554     44'030'027
                  'reduced_costs':    847      1'263    137'115        16           34'701     41'187     709'579      3'732'223

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':      0      0    879      879            142             4'176            12'108
                     'default_lp':      0      0    943      943            608             1'025             1'519
                      'fs_random':      0      0      0        0              0                 0                 0
                'fs_random_no_lp':      0      0      0        0              0                 0                 0
  'fs_random_quick_restart_no_lp':      0      0      0        0              0                 0                 0
                 'lb_tree_search':      0      0    845      845            142               992                 9
                         'max_lp':      0      0    845      845            142               987             1'202
                          'no_lp':      0      0    845      845            142             2'411               838
            'objective_lb_search':      8      0    944      936            536               999               117
                        'probing':      0      0    886      886            902                95                 9
                   'pseudo_costs':      0      0    845      845            142               883             1'464
                  'quick_restart':      0      0    909      909            376               988               191
            'quick_restart_no_lp':      0      0  1'540    1'540          4'542             3'536            12'887
                  'reduced_costs':      0      0    847      847            156               984             1'093

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':       603'939   4'358'847         4'066'695  36'593'661    22'481'681   216'270
                     'default_lp':         1'661      33'549            45'677     120'831             0       365
                      'fs_random':             0           0                 0           0             0         0
                'fs_random_no_lp':             0           0                 0           0             0         0
  'fs_random_quick_restart_no_lp':             0           0                 0           0             0         0
                 'lb_tree_search':            41          87               667       1'292             0        59
                         'max_lp':         1'246      16'247            98'278     235'252             0       190
                          'no_lp':       379'231   3'785'179         1'318'996  32'811'718     5'871'734   327'039
            'objective_lb_search':         1'397      66'438            15'531      49'744             0       525
                        'probing':            11          53               638       2'202             0         2
                   'pseudo_costs':         1'516      37'479            58'876     246'640             0       319
                  'quick_restart':           253       3'232            10'196      21'964             0       136
            'quick_restart_no_lp':        76'678   1'604'645         2'113'997   8'246'210     5'852'420    14'204
                  'reduced_costs':           860       5'496            50'445     161'823             0       139

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':        0          0        0         0           0               0          0
                     'default_lp':    7'333     53'554        0       301       2'845           5'551          7
                      'fs_random':        0          0        0         0           0               0          0
                'fs_random_no_lp':        0          0        0         0           0               0          0
  'fs_random_quick_restart_no_lp':        0          0        0         0           0               0          0
                 'lb_tree_search':    8'407     64'133        0       271       2'485           4'635          4
                         'max_lp':    9'199     67'468        0       258       2'524           7'129          8
                          'no_lp':   22'177    134'888        0       245       2'527          27'021          7
            'objective_lb_search':   12'497     92'277        0       288       2'789          10'055         12
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':   12'353     90'989        0       268       2'650           9'641         11
                  'quick_restart':   16'013    117'805        0       330       3'184          11'889          9
            'quick_restart_no_lp':   41'968    250'326        0     1'586      14'955          18'637        169
                  'reduced_costs':   13'144     97'266        0       283       2'680           9'492          7

Clause deletion                     at_true  l_and_not(l)  to_binary  sub_conflict  sub_extra  sub_decisions  sub_eager  sub_vivify  sub_probing  sub_inpro  blocked  eliminated  forgotten   promoted  conflicts
                           'core':        0             0          0       210'148      4'019              0      6'122           0            0        621        0           0    423'890  1'498'017    660'154
                     'default_lp':        0             0          1           349          2              2         16         301            4         36        0           0          0      4'088      1'958
                      'fs_random':        0             0          0             0          0              0          0           0            0          0        0           0          0          0          0
                'fs_random_no_lp':        0             0          0             0          0              0          0           0            0          0        0           0          0          0          0
  'fs_random_quick_restart_no_lp':        0             0          0             0          0              0          0           0            0          0        0           0          0          0          0
                 'lb_tree_search':        0             0          0            59          0              1          0         271            1         45        0           0          0         18         79
                         'max_lp':        0             0          0           185          2              1          5         258            2         58        0           0          0      2'828      1'419
                          'no_lp':        0             0          0       326'132        442          1'987        907         245            3         23        0           0     59'046    814'138    391'459
            'objective_lb_search':      850             0          1           500          1             27         25         288            1         48        0           0          0      2'772      1'567
                        'probing':        0             0          0             2          0              0          0           0            0          0        0           0          0         20         11
                   'pseudo_costs':        0             0          0           302          1              2         17         268            1         45        0           0          0      3'732      1'811
                  'quick_restart':        0             0          1           133          0              2          3         330            1         20        0           0          0        399        376
            'quick_restart_no_lp':        0             0         13        13'220        223             52        984       1'586          128        315        0           0     59'146    186'526     91'552
                  'reduced_costs':        0             0          0           137          1              3          2         283            0         41        0           0          0      2'452      1'263

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1     211'633      4'089    6'969        1      102
       'lb_tree_search':          1      85'462      3'073    1'243      319        0
               'max_lp':          1     142'562      4'258    5'247      464      159
  'objective_lb_search':          1     178'607      4'006    5'371        1       92
              'probing':          1      42'068      4'970      419       13        1
         'pseudo_costs':          1     148'201      5'063    6'761      508      261
        'quick_restart':          1      93'454      4'481    2'604        5       23
        'reduced_costs':          1     137'010      4'612    3'847      445      172

Lp dimension                  Final dimension of first component
           'default_lp':  1675 rows, 1596 columns, 17935 entries
       'lb_tree_search':  1694 rows, 1690 columns, 30065 entries
               'max_lp':  1638 rows, 1690 columns, 17726 entries
  'objective_lb_search':  1612 rows, 1596 columns, 24096 entries
              'probing':  3258 rows, 1596 columns, 91671 entries
         'pseudo_costs':  1100 rows, 1690 columns, 10222 entries
        'quick_restart':  1599 rows, 1596 columns, 22549 entries
        'reduced_costs':  1504 rows, 1690 columns, 23868 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow      Bad  BadScaling
           'default_lp':          0            0   7'042         0   11'450           0
       'lb_tree_search':          0           18   1'562         0   65'051           0
               'max_lp':          0            0   5'863         0   33'595           0
  'objective_lb_search':          0           15   5'447         0   23'075           0
              'probing':          0           16     421         0  106'718           0
         'pseudo_costs':          0            0   7'492         0   30'403           0
        'quick_restart':          0            0   2'621         0   43'959           0
        'reduced_costs':          0            1   4'441         0   48'783           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened     Cuts/Call
           'default_lp':        6'889      102        0       0          0     32            73   4'089/9'619
       'lb_tree_search':        6'225      577        0       0          0  1'157             6   3'073/5'597
               'max_lp':        7'410      342        0       0          0    467            10   4'258/9'208
  'objective_lb_search':        6'806      232        0       0          0     98            36   4'006/8'468
              'probing':        7'769      840        0       1          0  3'065            78   4'970/8'825
         'pseudo_costs':        8'215      324        0       0          0    278            35  5'063/11'541
        'quick_restart':        7'281      362        0       0          0    704            80   4'481/8'864
        'reduced_costs':        7'764      554        0       0          0    697            14   4'612/9'450

Lp Cut            pseudo_costs  lb_tree_search  default_lp  quick_restart  probing  objective_lb_search  reduced_costs  max_lp
          CG_FF:            33               4          30             17       20                   23             14      17
           CG_K:            14               2          19              6        6                    7              8      14
          CG_KL:             5               -           5              4        3                    1              3       -
           CG_R:            46              22          30             17       29                   27             34      35
          CG_RB:            94              49          78             58       95                   79             69      68
         CG_RBP:            26              20          46             24       37                   32             19      26
             IB:         1'698             256       1'460          1'161      788                1'189          1'327   1'248
       MIR_1_FF:           228             167         202            288      401                  248            186     182
        MIR_1_K:            36               2          67             73       76                   72             19      16
       MIR_1_KL:            13               3          40             39       47                   26             13       9
        MIR_1_R:             5               1           5              1        5                    2              3       3
       MIR_1_RB:           103              59          94            141      174                  100             92      71
      MIR_1_RBP:            45              16          77            128      198                   99             32      28
       MIR_2_FF:           225             224         184            248      261                  216            238     201
        MIR_2_K:            47               8          87             93       96                   70             27      30
       MIR_2_KL:            10               9          23             32       38                   23              7       9
        MIR_2_R:            16               5          11             17       14                   10             17      15
       MIR_2_RB:           203             207         153            162      209                  144            197     200
      MIR_2_RBP:            69              35          94            141      182                  109             56      59
       MIR_3_FF:           207             206          98            146      153                  118            160     212
        MIR_3_K:            48              22          70             87       84                   70             30      23
       MIR_3_KL:            11               7          11             13       17                   12             12       3
        MIR_3_R:            16               5           4             10       16                    6             13      13
       MIR_3_RB:           186             170         104            118      140                  113            155     169
      MIR_3_RBP:            64              56          81            110      142                   83             68      64
       MIR_4_FF:           129             171          72             93       95                   73            137     146
        MIR_4_K:            55              35          45             55       77                   48             32      40
       MIR_4_KL:             6               6          10             11       12                    3              3       4
        MIR_4_R:            12              10           5              1        7                    4              7      13
       MIR_4_RB:           132             126          80             77       86                   72            136     129
      MIR_4_RBP:            52              54          53             63       89                   61             58      61
       MIR_5_FF:           107             108          39             57       63                   48             86      99
        MIR_5_K:            39              31          32             41       45                   29             40      31
       MIR_5_KL:             5               6           2              3       11                    4              9      10
        MIR_5_R:            10               4           1              2        4                    2              5      14
       MIR_5_RB:            92              78          35             42       46                   47             60      79
      MIR_5_RBP:            41              42          39             45       71                   33             49      41
       MIR_6_FF:            78              79          32             27       49                   27             70      71
        MIR_6_K:            38              26          31             27       53                   23             36      33
       MIR_6_KL:            16              25           6             10        9                   12             33      15
        MIR_6_R:             7               5           5              -        8                    1              8       8
       MIR_6_RB:            71              52          33             23       42                   17             57      63
      MIR_6_RBP:            45              48          25             35       45                   18             64      51
   ZERO_HALF_FF:            35               6          35             27       37                   27             28      20
    ZERO_HALF_K:             7               -          11             10       10                   17              5       6
   ZERO_HALF_KL:             2               -           2              1        5                    1              1       -
    ZERO_HALF_R:           502             497         354            524      694                  448            687     484
   ZERO_HALF_RB:            95              97          48            132      125                   77            139      94
  ZERO_HALF_RBP:            39              12          21             41       56                   35             63      31

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':          7/89     49%    3.66e-01       0.10
  'graph_cst_lns':         10/80     49%    5.47e-01       0.10
  'graph_dec_lns':          5/74     50%    7.46e-01       0.10
  'graph_var_lns':          8/84     49%    5.88e-01       0.10
   'lb_relax_lns':          6/16     38%    2.06e-01       0.50
      'rins/rens':         53/71     49%    4.14e-01       0.10
    'rnd_cst_lns':          7/75     49%    6.87e-01       0.10
    'rnd_var_lns':          6/68     47%    6.13e-01       0.10

LS stats                                    Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                         'ls_lin_restart':        4                  4    51'393         0              0          0          8'700      1'876'007
                'ls_lin_restart_compound':       26                 13         0   408'313         34'910    186'654          1'803     11'687'497
        'ls_lin_restart_compound_perturb':       25                 14         0   400'224         35'642    182'254          1'962     10'906'896
                   'ls_lin_restart_decay':       12                  5   178'750         0              0          0          2'845      4'098'776
          'ls_lin_restart_decay_compound':        4                  3         0    52'608          9'289     21'654            100      1'740'168
  'ls_lin_restart_decay_compound_perturb':        5                  4         0    67'803         14'115     26'835            154      1'897'045
           'ls_lin_restart_decay_perturb':        9                  7   140'991         0              0          0          2'327      3'210'850
                 'ls_lin_restart_perturb':        8                  5    99'848         0              0          0         19'353      3'913'994
                             'ls_restart':       12                  7   149'311         0              0          0         25'905      5'873'606
                    'ls_restart_compound':        8                  6         0   118'740         11'681     53'514            538      3'396'214
            'ls_restart_compound_perturb':       17                  8         0   267'982         25'046    121'441          1'054      7'711'536
                       'ls_restart_decay':       11                  9   170'101         0              0          0          2'872      3'843'096
              'ls_restart_decay_compound':       11                  7         0   148'567         24'636     61'940            233      4'329'357
      'ls_restart_decay_compound_perturb':        8                  7         0   108'336         19'790     44'250            300      3'185'935
               'ls_restart_decay_perturb':       25                  9   383'930         0              0          0          5'969      8'779'390
                     'ls_restart_perturb':        4                  3    50'963         0              0          0          7'831      1'879'090

Solutions (9)             Num   Rank
        'complete_hint':    2  [0,1]
        'graph_cst_lns':    2  [2,3]
        'graph_var_lns':    2  [1,2]
  'lb_relax_lns_bool_h':    2  [8,9]
  'quick_restart_no_lp':    8  [3,8]
          'rnd_cst_lns':    2  [5,6]

Objective bounds     Num
    'am1_presolve':    1
  'initial_domain':    1
  'lb_tree_search':  203
          'max_lp':    5
         'probing':    1
    'pseudo_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':     58      320       58
      'best_solutions':    203      409      128
   'fj solution hints':      0        0        0
        'lp solutions':    248       74      204
                'pump':      0        0

Clauses shared            #Exported  #Imported  #BinaryRead  #BinaryTotal
                 'core':        582        815            1             1
           'default_lp':          2      1'204            1             1
       'lb_tree_search':          0      1'205            1             1
               'max_lp':          6      1'201            1             1
                'no_lp':        586        480            1             1
  'objective_lb_search':          9      1'198            1             1
              'probing':          0          0            0             1
         'pseudo_costs':          7      1'077            1             1
        'quick_restart':          7      1'199            1             1
  'quick_restart_no_lp':        319        912            1             1
        'reduced_costs':          4      1'201            1             1

LRAT_status: NA
[Scaling] scaled_objective_bound: 229868 corrected_bound: 229868 delta: 2.17967e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 240715.159901454
best_bound: 229867.841865059
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 40.058
usertime: 40.058
deterministic_time: 245.428
gap_integral: 2283.57
solution_fingerprint: 0x91194cc2586fc39b

[18]:
SolutionInfo(runtime=40.067026, bound=229867.84186505896, objective=240715.159901454, relgap=0.04506287863562808, termination='FEASIBLE')
[19]:
S, G = solver.get_solution()
svgplot(G)
[19]:
../_images/notebooks_quickstart_low_22_0.svg