ModelOptions vs SolverOptions¶

The distinction between ``ModelOptions`` and ``SolverOptions`` is essential when working with OptiWindNet. This notebook presents a clear and structured explanation of their roles and differences:

  • ``ModelOptions`` define how the optimization problem is formulated, including structural assumptions and model features such as topology type, feeder constraints, and balancing requirements.

  • ``SolverOptions`` configure how the underlying solver behaves during execution, controlling aspects like time limits, optimality gaps, and so on.

Understanding this separation helps ensure that models are both correctly formulated and efficiently solved.

🔧 What is ModelOptions?¶

ModelOptions is a configuration object or dictionary that controls how the mathematical model is built and behaves, regardless of the solver used. These options are typically high-level, problem-specific settings that:

  • Affect the structure of the model (e.g., topology type)

  • Enable or disable features (e.g., balancing constraints)

  • Influence heuristic/metaheuristic behavior if used

✅ Parameters in ModelOptions:¶

Parameter

Description

topology

Controls whether the solution allows “radial” or “branched” subtrees

feeder_route

Determines if feeder paths must be “straight” or may be “segmented”

feeder_limit

Specifies limits on the number of feeders used in the solution

balanced

Whether subtree loads must be balanced

max_feeders

Required when feeder_limit="specified" to indicate the max number allowed

These options change the formulation of the problem before it is handed to the solver.

Capability of different routers¶

Router

Topology

Feeder Route

Feeder Limit

EWRouter

Not user-controllable

Controllable via feeder_route parameter

Not user controllable

HGSRouter

Always produces radial topology

Not user-controllable

Controllable via feeder_limit parameter

MILPRouter

Controllable via topology parameter in ModelOptions

Controllable via feeder_route parameter in ModelOptions

Controllable via feeder_limit parameter in ModelOptions

Import required functions

[1]:
from optiwindnet.api import WindFarmNetwork, EWRouter, HGSRouter, MILPRouter, ModelOptions
[2]:
# Display figures as SVG in Jupyter notebooks
%config InlineBackend.figure_formats = ['svg']

Access ModelOptions help

[3]:
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">)

Optimize an exemplary location

[4]:
wfn = WindFarmNetwork.from_pbf(filepath='data/DTU_letters.osm.pbf', cables=[(2, 1500.0), (5, 1800.0), (7, 2000.0)])
[5]:
wfn
[5]:
../_images/notebooks_a08_ModelOptions_12_0.svg

EWRouter¶

  • This router does not accept ModelOptions as an argument.

  • The optional EWRouter() parameter feeder_route can be set to 'segmented' (default) or 'straight'.

Example using feeder_route='segmented'

[6]:
terse = wfn.optimize(router=EWRouter())
wfn
[6]:
../_images/notebooks_a08_ModelOptions_16_0.svg

Example using feeder_route='straight'

[7]:
terse = wfn.optimize(router=EWRouter(feeder_route='straight'))
wfn
[7]:
../_images/notebooks_a08_ModelOptions_18_0.svg

HGSRouter¶

HGSRouter does not support ModelOptions in its current format. Instead, it accepts key configuration options, such as feeder_limit and balanced, as individual arguments passed directly to the router.

  • Default values:

    • balanced = False

    • feeder_limit is flexible and generally favors minimizing total cable length:

      • For locations with one substation, feeder_limit can be adjusted.

      • For locations with multiple substations, the feeder_limit argument is ignored, and the number of feeders is fixed to the minimum required.

    • Other ModelOptions parameters, such as topology (HGSRouter always generates radial topologies) and feeder_route, are not currently supported.

[8]:
hgs_router = HGSRouter(time_limit=2)
terse = wfn.optimize(router=hgs_router)
wfn
[8]:
../_images/notebooks_a08_ModelOptions_21_0.svg

Set the feeder_limit lower than the possible minimum.

[9]:
hgs_router2 = HGSRouter(time_limit=2, feeder_limit=0)
terse = wfn.optimize(router=hgs_router2)
wfn
Vehicles (feeders) number (0) too low for feasibilty with given capacity (7). Setting to 6.
[9]:
../_images/notebooks_a08_ModelOptions_23_1.svg

MILP routers¶

MILPRouter is able to control all settings in ModelOption.

In this notebook, we run optimization with two sets of ModelOptions for comparison:

Model Option

Set 1

Set 2

topology

branched

radial

feeder_limit

unlimited

minimum

feeder_route

segmented

straight

With MILP, we observe the following behavior across different ModelOptions settings:

First MILP Run (model_options1)¶

[10]:
model_options1 = ModelOptions(
    topology='branched',
    feeder_limit='unlimited',
    feeder_route='segmented',
)

The solver constructs a branched network structure without applying any limit on the number of feeders. The feeder routes follow a segmented (piecewise-straight) pattern, as specified. All aspects of the network are consistent with the given ModelOptions.

This solution can also serve as a valid warm start for subsequent optimizations.

[11]:
milp_router = MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=10,
    mip_gap=0.01,
    model_options=model_options1,
    verbose=True,
)
[12]:
# lower cable capacities to cleary observe the difference between runs
wfn = WindFarmNetwork.from_pbf(
    filepath='data/DTU_letters.osm.pbf',
    cables=[(2, 1500.0), (5, 1800.0)],
)
terse = wfn.optimize(router=milp_router)
wfn

Running basic LP presolve, initial problem dimensions: 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FixedVariablePreprocessor                        1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::SingletonPreprocessor                            1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::ForcingAndImpliedFreeConstraintPreprocessor      1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FreeConstraintPreprocessor                       1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::UnconstrainedVariablePreprocessor                1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor                           1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor                             1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]

Scaling to pure integer problem.
Num integers: 708/708 (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: 10 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16

Initial optimization model 'optiwindnet': (model_fingerprint: 0xd59f925c7e3b068e)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)

Starting presolve at 0.00s
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
  1.91e-04s  0.00e+00d  [DetectDominanceRelations]
  4.45e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  8.01e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  2.01e-04s  0.00e+00d  [DetectDuplicateColumns]
  8.42e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000468374 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.0911e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.8383e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  3.13e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  8.47e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  2.46e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  4.02e-04s  0.00e+00d  [DetectDominanceRelations]
  2.86e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.83e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  3.65e-04s  0.00e+00d  [DetectDuplicateConstraints]
  8.43e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.53e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.34e-05s  0.00e+00d  [DetectDifferentVariables]
  8.42e-04s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  8.40e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  4.70e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  6.80e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.39e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  1.05e-04s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.36e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.96e-06s  0.00e+00d  [MergeClauses]
  1.61e-04s  0.00e+00d  [DetectDominanceRelations]
  2.98e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.78e-04s  0.00e+00d  [DetectDominanceRelations]
  2.21e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.68e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.26e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000240571 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [2.0893e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [3.2264e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  8.90e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.49e-03s  1.27e-03d  [Probe] #probed=708
  1.70e-04s  1.45e-04d  [MaxClique]
  1.82e-04s  0.00e+00d  [DetectDominanceRelations]
  1.45e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.37e-05s  0.00e+00d  [ProcessAtMostOneAndLinear]
  7.56e-05s  0.00e+00d  [DetectDuplicateConstraints]
  9.10e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  4.09e-04s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.84e-05s  0.00e+00d  [DetectDifferentVariables]
  9.80e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  9.47e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  4.21e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  6.26e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  3.88e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  1.10e-04s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.61e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.58e-05s  0.00e+00d  [MergeClauses]
  2.09e-04s  0.00e+00d  [DetectDominanceRelations]
  2.31e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.59e-06s  0.00e+00d  [MergeNoOverlap]
  2.54e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.08e-04s  0.00e+00d  [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 81 times.
  - rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 157 times.
  - rule 'deductions: 708 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 354 times.
  - rule 'linear2: contains a boolean' was applied 354 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
  - rule 'linear: positive at most one' was applied 105 times.
  - rule 'linear: positive equal one' was applied 40 times.
  - rule 'objective: shifted cost with exactly ones' was applied 40 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 40 times.
  - rule 'setppc: reduced linear coefficients' was applied 39 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 354 times.
  - rule 'variables: detect half reified value encoding' was applied 708 times.

Presolved optimization model 'optiwindnet': (model_fingerprint: 0xd87267f4fcc3ea39)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00019219 dtime: 0.00043646

Preloading model.
#Bound   0.04s best:inf   next:[1364.00132,11449.6914] initial_domain
#Model   0.04s var:708/708 constraints:972/972

Starting search at 0.04s 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]

#1       0.04s best:4527.87552 next:[1364.00132,4527.87552] fj_restart(batch:1 lin{mvs:87 evals:1'073} #w_updates:1 #perturb:0)
#Bound   0.05s best:4527.87552 next:[1377.09321,4527.87552] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#Bound   0.05s best:4527.87552 next:[1439.63944,4527.87552] default_lp
#2       0.05s best:4413.64442 next:[1439.63944,4413.64442] rnd_cst_lns (d=5.00e-01 s=17 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#3       0.06s best:4303.06138 next:[1439.63944,4303.06138] rnd_var_lns (d=5.00e-01 s=16 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound   0.06s best:4303.06138 next:[1440.53408,4303.06138] default_lp
#Bound   0.06s best:4303.06138 next:[1446.52178,4303.06138] reduced_costs
#4       0.06s best:2124.90285 next:[1446.52178,2124.90284] no_lp (fixed_bools=0/354)
#5       0.07s best:2122.86795 next:[1446.52178,2122.86795] quick_restart_no_lp (fixed_bools=0/356)
#Bound   0.07s best:2122.86795 next:[1657.8143,2122.86795] max_lp
#6       0.07s best:2106.0405 next:[1657.8143,2106.0405] quick_restart_no_lp (fixed_bools=0/356)
#7       0.07s best:2105.59557 next:[1657.8143,2105.59557] quick_restart_no_lp (fixed_bools=0/357)
#8       0.08s best:2086.27975 next:[1657.8143,2086.27974] no_lp (fixed_bools=0/354)
#9       0.08s best:2084.91276 next:[1657.8143,2084.91276] no_lp (fixed_bools=0/354)
#10      0.08s best:2080.58847 next:[1657.8143,2080.58847] no_lp (fixed_bools=0/354)
#11      0.09s best:2066.47295 next:[1657.8143,2066.47295] rnd_var_lns (d=7.07e-01 s=25 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#12      0.09s best:2062.69622 next:[1657.8143,2062.69622] rnd_cst_lns (d=7.07e-01 s=26 t=0.10 p=1.00 stall=0 h=base) [combined with: no_lp...] (fixed_bools=0/354)
#13      0.11s best:1953.34464 next:[1657.8143,1953.34464] rins_lp_lns (d=5.00e-01 s=28 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#14      0.12s best:1949.54437 next:[1657.8143,1949.54437] quick_restart_no_lp (fixed_bools=0/369)
#15      0.12s best:1943.15324 next:[1657.8143,1943.15323] quick_restart_no_lp (fixed_bools=0/373)
#16      0.13s best:1906.8682 next:[1657.8143,1906.8682] quick_restart_no_lp (fixed_bools=0/373)
#Bound   0.13s best:1906.8682 next:[1677.89266,1906.8682] max_lp
#17      0.14s best:1856.88766 next:[1677.89266,1856.88766] reduced_costs (fixed_bools=0/354)
#Bound   0.14s best:1856.88766 next:[1681.70525,1856.88766] max_lp
#Bound   0.16s best:1856.88766 next:[1682.16269,1856.88766] max_lp
#18      0.17s best:1854.67248 next:[1682.16269,1854.67248] quick_restart_no_lp (fixed_bools=0/379)
#19      0.19s best:1846.17065 next:[1682.16269,1846.17065] quick_restart_no_lp (fixed_bools=0/381)
#20      0.20s best:1829.69442 next:[1682.16269,1829.69442] quick_restart_no_lp (fixed_bools=0/381)
#21      0.23s best:1829.24949 next:[1682.16269,1829.24949] quick_restart_no_lp (fixed_bools=0/381)
#22      0.25s best:1799.78283 next:[1682.16269,1799.78282] reduced_costs (fixed_bools=0/358)
#23      0.26s best:1776.24144 next:[1682.16269,1776.24144] quick_restart_no_lp (fixed_bools=0/386)
#Bound   0.30s best:1776.24144 next:[1685.87825,1776.24144] lb_tree_search
#24      0.33s best:1759.76521 next:[1685.87825,1759.76521] quick_restart_no_lp (fixed_bools=0/386)
#Model   0.40s var:706/708 constraints:969/972
#Bound   0.41s best:1759.76521 next:[1688.02074,1759.76521] max_lp
#Model   0.44s var:696/708 constraints:959/972
#Bound   0.45s best:1759.76521 next:[1688.06841,1759.76521] max_lp
#Bound   0.47s best:1759.76521 next:[1688.07122,1759.76521] max_lp
#Model   0.54s var:694/708 constraints:956/972
#Bound   0.57s best:1759.76521 next:[1696.90766,1759.76521] lb_tree_search
#Model   0.60s var:690/708 constraints:952/972
#Bound   0.88s best:1759.76521 next:[1700.22951,1759.76521] lb_tree_search
#Model   0.95s var:672/708 constraints:933/972
#Bound   1.17s best:1759.76521 next:[1704.01343,1759.76521] lb_tree_search
#Model   1.19s var:660/708 constraints:921/972
#25      1.49s best:1758.41439 next:[1704.01343,1758.41439] reduced_costs (fixed_bools=9/359)
#Bound   1.50s best:1758.41439 next:[1706.02583,1758.41439] lb_tree_search
#Model   1.51s var:656/708 constraints:917/972
#Model   1.61s var:652/708 constraints:913/972
#Bound   1.78s best:1758.41439 next:[1709.1775,1758.41439] lb_tree_search
#Model   1.78s var:640/708 constraints:900/972
#Bound   1.81s best:1758.41439 next:[1709.44111,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=51 @root=10 restarts=0 lp_iters=[0, 0, 626, 140])
#Bound   2.13s best:1758.41439 next:[1710.46561,1758.41439] lb_tree_search
#Bound   2.13s best:1758.41439 next:[1710.48,1758.41439] lb_tree_search
#Bound   2.45s best:1758.41439 next:[1711.7716,1758.41439] lb_tree_search
#Bound   2.45s best:1758.41439 next:[1711.776,1758.41439] lb_tree_search
#Model   2.81s var:628/708 constraints:887/972
#Model   2.91s var:626/708 constraints:885/972
#Bound   2.90s best:1758.41439 next:[1715.14685,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=58 @root=16 restarts=0 lp_iters=[0, 0, 853, 140])  [skipped_logs=3]
#Model   3.13s var:624/708 constraints:882/972
#Model   3.61s var:622/708 constraints:880/972
#Bound   3.74s best:1758.41439 next:[1718.61937,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=72 @root=20 restarts=0 lp_iters=[0, 0, 1'319, 342])  [skipped_logs=6]
#Model   4.16s var:616/708 constraints:874/972
#Model   4.54s var:608/708 constraints:866/972
#Bound   4.97s best:1758.41439 next:[1724.7417,1758.41439] lb_tree_search (nodes=7/7 rc=2 decisions=96 @root=23 restarts=0 lp_iters=[0, 0, 3'115, 342])  [skipped_logs=16]
#Model   5.40s var:604/708 constraints:861/972
#Bound   6.00s best:1758.41439 next:[1726.40252,1758.41439] lb_tree_search (nodes=16/16 rc=2 decisions=143 @root=23 restarts=0 lp_iters=[0, 0, 6'772, 1'044])  [skipped_logs=13]
#Model   6.05s var:602/708 constraints:859/972
#Model   6.99s var:598/708 constraints:855/972
#Bound   6.98s best:1758.41439 next:[1727.51861,1758.41439] lb_tree_search (nodes=23/23 rc=2 decisions=189 @root=23 restarts=0 lp_iters=[0, 0, 10'042, 1'787])  [skipped_logs=11]
#Bound   7.87s best:1758.41439 next:[1728.97694,1758.41439] lb_tree_search (nodes=29/29 rc=3 decisions=251 @root=23 restarts=0 lp_iters=[0, 0, 13'430, 2'293])  [skipped_logs=8]
#Model   8.28s var:592/708 constraints:848/972
#Bound   9.01s best:1758.41439 next:[1729.228,1758.41439] lb_tree_search (nodes=31/31 rc=3 decisions=291 @root=25 restarts=0 lp_iters=[0, 0, 16'135, 2'804])  [skipped_logs=5]
#Model   9.26s var:588/708 constraints:844/972
#Model   9.55s var:578/708 constraints:833/972
#Model   9.83s var:574/708 constraints:827/972
#Bound   9.92s best:1758.41439 next:[1730.08894,1758.41439] lb_tree_search (nodes=36/37 rc=4 decisions=344 @root=25 restarts=0 lp_iters=[0, 0, 19'836, 2'976])  [skipped_logs=9]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.31ms,    7.71s]    3.85s    3.85s    7.71s
                     'default_lp':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  1.91ms,    3.93s]    1.97s    1.96s    3.93s
               'feasibility_pump':        45 [ 28.37us,  25.49ms]   1.92ms   3.66ms  86.20ms        40 [145.79us,  11.26ms] 443.19us   1.73ms  17.73ms
                             'fj':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
                             'fj':         1 [  5.17ms,   5.17ms]   5.17ms   0.00ns   5.17ms         1 [257.12us, 257.12us] 257.12us   0.00ns 257.12us
                      'fs_random':         1 [  4.84ms,   4.84ms]   4.84ms   0.00ns   4.84ms         1 [  1.74us,   1.74us]   1.74us   0.00ns   1.74us
                'fs_random_no_lp':         1 [  4.93ms,   4.93ms]   4.93ms   0.00ns   4.93ms         1 [  1.74us,   1.74us]   1.74us   0.00ns   1.74us
  'fs_random_quick_restart_no_lp':         1 [  4.69ms,   4.69ms]   4.69ms   0.00ns   4.69ms         1 [  1.74us,   1.74us]   1.74us   0.00ns   1.74us
                  'graph_arc_lns':        21 [ 19.56ms, 405.26ms] 239.06ms 144.03ms    5.02s        21 [  1.26ms, 100.15ms]  62.44ms  43.07ms    1.31s
                  'graph_cst_lns':        26 [824.99us, 404.56ms] 172.37ms 161.35ms    4.48s        23 [ 10.76us, 100.06ms]  49.40ms  46.18ms    1.14s
                  'graph_dec_lns':        28 [667.71us, 414.48ms] 215.01ms 157.16ms    6.02s        27 [ 10.00ns, 100.15ms]  60.16ms  45.27ms    1.62s
                  'graph_var_lns':        26 [  5.06ms, 403.32ms] 207.78ms 163.64ms    5.40s        26 [883.00ns, 100.11ms]  53.04ms  46.16ms    1.38s
                   'lb_relax_lns':         5 [280.35ms,    1.46s] 936.27ms 496.65ms    4.68s         5 [ 54.78ms, 515.89ms] 306.88ms 193.80ms    1.53s
                 'lb_tree_search':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [ 18.39ms,    6.56s]    3.29s    3.27s    6.58s
                             'ls':        23 [ 51.09ms, 244.43ms] 193.14ms  36.94ms    4.44s        23 [ 25.74ms, 100.01ms]  96.78ms  15.15ms    2.23s
                         'ls_lin':        22 [  2.75ms, 230.90ms] 202.90ms  45.85ms    4.46s        22 [234.60us, 100.01ms]  95.47ms  20.78ms    2.10s
                         'max_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [ 19.84ms,    4.90s]    2.46s    2.44s    4.92s
                          'no_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.31ms,    4.75s]    2.38s    2.37s    4.75s
            'objective_lb_search':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  2.02ms,    4.45s]    2.23s    2.23s    4.46s
                        'probing':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.90ms,    4.81s]    2.40s    2.40s    4.81s
                   'pseudo_costs':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.84ms,    4.89s]    2.45s    2.45s    4.90s
                  'quick_restart':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.92ms,    4.20s]    2.10s    2.10s    4.20s
            'quick_restart_no_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.31ms,    6.97s]    3.48s    3.48s    6.97s
                  'reduced_costs':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.86ms,    5.07s]    2.54s    2.54s    5.08s
                      'rins/rens':        23 [  2.65ms, 440.02ms] 214.14ms 161.53ms    4.93s        21 [  8.05us, 100.11ms]  63.02ms  44.54ms    1.32s
                    'rnd_cst_lns':        27 [  8.70ms, 458.09ms] 187.92ms 156.79ms    5.07s        27 [  4.02us, 100.18ms]  46.91ms  44.16ms    1.27s
                    'rnd_var_lns':        20 [ 10.30ms, 418.62ms] 242.20ms 160.65ms    4.84s        20 [ 15.22us, 100.11ms]  63.68ms  45.65ms    1.27s

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    431    150'965   299'483       404            6'412    157'168   4'067'829      8'899'218
                     'default_lp':    392      2'051    13'646         6            4'973      8'432     118'663        496'023
                      'fs_random':    354          0         0         0                0          0           0              0
                'fs_random_no_lp':    354          0         0         0                0          0           0              0
  'fs_random_quick_restart_no_lp':    354          0         0         0                0          0           0              0
                 'lb_tree_search':    354          0    24'058         0           11'861     14'611      82'247        234'655
                         'max_lp':    354      1'188    18'877         5            8'088     10'629     108'942        527'656
                          'no_lp':    354     91'622   172'139       260           10'575    102'853   4'545'610     15'226'952
            'objective_lb_search':    391      1'300    18'763        10            7'211     11'014     114'658        513'875
                        'probing':    395          0       872         0              872        872       6'358         19'526
                   'pseudo_costs':    354      1'107    21'211        11            8'646     11'485     113'330        560'946
                  'quick_restart':    364        232    34'014        19           14'097     18'205     149'981        751'645
            'quick_restart_no_lp':    463     51'891   518'141     4'501           26'315     82'424   3'536'816     11'643'100
                  'reduced_costs':    362        944    25'861        10            9'382     12'747     107'021        543'105

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     65      0    431      366            792             4'166            10'372
                     'default_lp':     68      0    392      324            666               205             1'258
                      'fs_random':      0      0    354      354             74                40                 0
                'fs_random_no_lp':      0      0    354      354             74                40                 0
  'fs_random_quick_restart_no_lp':      0      0    354      354             74                40                 0
                 'lb_tree_search':     53      0    354      301            350                40                 0
                         'max_lp':     58      0    354      296            396               193               858
                          'no_lp':     67      0    354      287            420               631             7'030
            'objective_lb_search':     66      0    391      325            534               199               204
                        'probing':      0      0    395      395            934                40                 0
                   'pseudo_costs':     67      0    354      287            412               192               678
                  'quick_restart':     66      0    364      298            466               206               105
            'quick_restart_no_lp':     75      0    463      388          1'306             2'166            12'219
                  'reduced_costs':     67      0    362      295            476               184               120

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':       130'790   1'405'453           465'745   6'189'932     3'284'441    54'301
                     'default_lp':         1'823      26'955            37'617      63'349             0       499
                      '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':             0           0                 0           0             0         0
                         'max_lp':         1'069      18'665            17'896      50'264             0       262
                          'no_lp':        76'046     937'253           266'910   3'579'537     1'984'297    25'917
            'objective_lb_search':         1'199      24'903            11'158      24'856             0       454
                        'probing':             0           0                 0           0             0         0
                   'pseudo_costs':           957      14'795            20'906      35'641             0       252
                  'quick_restart':           193       2'087             2'337       6'705             0        48
            'quick_restart_no_lp':        38'210     306'741           496'291   1'885'107       913'942    10'616
                  'reduced_costs':           771      10'904             8'263      32'401             0       147

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':    4'314     64'993        0       829      21'017           3'713        125
                     'default_lp':      691      4'609        0         4          42              40          1
                      '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':    1'521     10'741        0         0           0               0          0
                         'max_lp':    1'420      8'313        0        57         307             105          0
                          'no_lp':    5'671     38'921        1       406       4'419           5'292         42
            'objective_lb_search':    1'625      8'590        2        70         344             157          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':    1'927     10'234        0        65         323             160          0
                  'quick_restart':    3'898     18'411        0        68         339             911          0
            'quick_restart_no_lp':   18'771    123'788        0     1'049      10'579          12'541        162
                  'reduced_costs':    2'065     11'374        1        79         400             336          2

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':    1'258            27          6        51'726      2'117             20      2'575         829           50        831        0           0     76'893   365'336    150'965
                     'default_lp':       88            16          0           478          0              9         21           4            5        226        0           0          0     4'527      2'051
                      '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             0          0              0          0           0            0          0        0           0          0         0          0
                         'max_lp':        6             0          0           255          3              2          7          57           49         57        0           0          0     2'711      1'188
                          'no_lp':    5'602           732          0        24'953      1'185            255        964         406           56        656        0           0     49'277   208'863     91'622
            'objective_lb_search':      562            40          0           430          0             24         24          70           40          3        0           0          0     2'528      1'300
                        'probing':        0             0          0             0          0              0          0           0            0          0        0           0          0         0          0
                   'pseudo_costs':       69            10          0           239          2              6         13          65           46         86        0           0          0     2'471      1'107
                  'quick_restart':       22             4          0            45          0              0          3          68           44         29        0           0          0       389        232
            'quick_restart_no_lp':    1'986            12         13         9'896        578             69        720       1'049          654        452        0           0     21'985   107'366     51'891
                  'reduced_costs':      109           278          1           139          1             41          8          79           48        209        0           0          0     2'369        944

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1     112'646      1'640    6'393        0      245
       'lb_tree_search':          1      27'140      1'135      314      131        0
               'max_lp':          1      87'387      1'336    2'756      848      110
  'objective_lb_search':          1      86'219      1'837    4'167        1      147
              'probing':          1      19'530      2'091      230        1        0
         'pseudo_costs':          1      81'149      1'872    2'494      816      133
        'quick_restart':          1      41'398      1'785    1'510        1       20
        'reduced_costs':          1      73'588      1'767    1'801      672      131

Lp dimension                 Final dimension of first component
           'default_lp':    608 rows, 669 columns, 4926 entries
       'lb_tree_search':   830 rows, 708 columns, 13608 entries
               'max_lp':    772 rows, 708 columns, 8982 entries
  'objective_lb_search':    606 rows, 669 columns, 6017 entries
              'probing':  1745 rows, 669 columns, 50176 entries
         'pseudo_costs':   814 rows, 708 columns, 10418 entries
        'quick_restart':   829 rows, 669 columns, 11815 entries
        'reduced_costs':    723 rows, 708 columns, 8770 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
           'default_lp':          0            0   6'624         0   5'060           0
       'lb_tree_search':          0            0     445         0  35'898           0
               'max_lp':          0            0   3'712         0  11'351           0
  'objective_lb_search':          0           10   4'305         0  12'913           0
              'probing':          0            0     227         0  45'544           0
         'pseudo_costs':          0            0   3'427         0  17'093           0
        'quick_restart':          0            2   1'526         0  29'123           0
        'reduced_costs':          0            2   2'588         0  25'131           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        2'812       73    2'555       0      2'102      2            68  1'640/3'564
       'lb_tree_search':        2'461      587    4'789       0      3'089    255            25  1'135/2'175
               'max_lp':        2'662      180    2'704       0      2'246     27            27  1'336/2'444
  'objective_lb_search':        3'009      183    3'153       0      1'833     63            57  1'837/3'605
              'probing':        3'263      559        0       0          0  1'091            52  2'091/3'920
         'pseudo_costs':        3'198      294    3'853       0      2'615     68            38  1'872/3'304
        'quick_restart':        2'957      451    7'077       0      4'138    307           101  1'785/3'450
        'reduced_costs':        3'093      424    5'087       0      3'498    134            33  1'767/3'108

Lp Cut            max_lp  reduced_costs  objective_lb_search  quick_restart  pseudo_costs  lb_tree_search  probing  default_lp
          CG_FF:      16             10                   19             10             6               5       36          19
           CG_K:      14              4                   13              6             5               5       17           6
          CG_KL:       -              -                    3              1             -               -        1           3
           CG_R:      24             20                   41             10            13              10       52          34
          CG_RB:      44             62                   72             40            35              27       85          75
         CG_RBP:      15              6                   38             17            11              11       51          32
         Clique:       1              1                    -              -             1               -        -           -
             IB:     343            463                  592            481           636               4      414         726
       MIR_1_FF:      52             75                   76            108            87              76      138          60
        MIR_1_K:       6             11                   21             27             7              10       47          15
       MIR_1_KL:       4             12                   15             28            11              10       30           6
        MIR_1_R:       -              -                    3              2             1               -        2           -
       MIR_1_RB:      27             23                   34             37            20              18       34          27
      MIR_1_RBP:       2              3                   22             25             8              10       26          12
       MIR_2_FF:      57             80                   76             83           101              87      104          59
        MIR_2_K:      15             13                   30             31            14              16       47          22
       MIR_2_KL:       6             10                    9             15            23              13       20           9
        MIR_2_R:       4              3                    5              2             8               2        5           3
       MIR_2_RB:      51             47                   49             47            47              44       44          38
      MIR_2_RBP:      18              6                   25             36            25              17       40          21
       MIR_3_FF:      54             79                   33             56            81              56       58          49
        MIR_3_K:      20             19                   34             31            16              19       19          20
       MIR_3_KL:       6             11                    8             15            11               8       13           6
        MIR_3_R:       9              4                    5              3             9               4        4           2
       MIR_3_RB:      44             52                   28             28            34              37       32          25
      MIR_3_RBP:      24             25                   30             19            26              30       20          19
       MIR_4_FF:      33             45                   21             22            50              60       41          24
        MIR_4_K:      15             31                   29             22            17              23       28          26
       MIR_4_KL:       8             21                   14              9            13              17       24          12
        MIR_4_R:       1              3                    3              5             8               1        2           -
       MIR_4_RB:      32             30                   22             21            39              24       13          22
      MIR_4_RBP:      26             28                   20             24            20              29       20          19
       MIR_5_FF:      28             36                   21             26            27              35       29          15
        MIR_5_K:      22             21                   26             31            27              32       26          21
       MIR_5_KL:      13             16                    4             16            14              13        9          13
        MIR_5_R:       3              3                    -              -             6               2        1           2
       MIR_5_RB:      22             31                   11             14            23              15       11          13
      MIR_5_RBP:      25             36                   18             39            19              39       21          14
       MIR_6_FF:      16             31                   11             22            17              24       34          20
        MIR_6_K:      15             20                   21             18            19              22       26           6
       MIR_6_KL:       7             12                    5              7            16              11       11           4
        MIR_6_R:       6              1                    -              2             2               1        -           2
       MIR_6_RB:      21             10                    7             12             8               9        6          12
      MIR_6_RBP:      22             25                   15             15            25              27       31          12
   ZERO_HALF_FF:      11             11                   28             14            13               4       19          21
    ZERO_HALF_K:       2              1                   15              7             1               1       11           6
   ZERO_HALF_KL:       1              -                   11              3             -               1        2           5
    ZERO_HALF_R:     121            243                  187            254           213             192      335          72
   ZERO_HALF_RB:      21             49                   26             30            48              24       22           6
  ZERO_HALF_RBP:       9             24                   41             14            11              10       30           5

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':          3/21     48%    6.42e-01       0.10
  'graph_cst_lns':         10/25     56%    8.55e-01       0.10
  'graph_dec_lns':          3/27     52%    8.23e-01       0.10
  'graph_var_lns':          5/26     54%    8.11e-01       0.10
   'lb_relax_lns':           3/5     40%    4.32e-01       0.50
      'rins/rens':          5/23     48%    5.69e-01       0.10
    'rnd_cst_lns':          9/27     63%    9.37e-01       0.10
    'rnd_var_lns':          4/20     45%    6.79e-01       0.10

LS stats                                    Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                             'fj_restart':        1                  1        87         0              0          0              1          1'373
                         'ls_lin_restart':        1                  1    18'934         0              0          0          9'573        546'673
                'ls_lin_restart_compound':        3                  2         0    78'033          6'608     35'705            219      1'636'460
        'ls_lin_restart_compound_perturb':        5                  5         0   125'575         10'212     57'676            710      2'627'550
                   'ls_lin_restart_decay':        3                  3    67'824         0              0          0          3'115      1'206'994
          'ls_lin_restart_decay_compound':        2                  2         0    43'339          6'555     18'389             77        969'984
  'ls_lin_restart_decay_compound_perturb':        4                  4         0    92'356         16'206     38'067            185      2'114'374
           'ls_lin_restart_decay_perturb':        2                  2    46'421         0              0          0          2'285        795'282
                 'ls_lin_restart_perturb':        2                  2    19'566         0              0          0          7'914        576'829
                             'ls_restart':        2                  2    35'318         0              0          0         19'121      1'056'328
                    'ls_restart_compound':        2                  2         0    51'524          2'934     24'293            453      1'019'422
            'ls_restart_compound_perturb':        1                  1         0    25'339          1'980     11'678            180        538'588
                       'ls_restart_decay':        5                  4   102'725         0              0          0          4'847      1'753'421
              'ls_restart_decay_compound':        3                  3         0    71'744         11'359     30'185            114      1'516'498
      'ls_restart_decay_compound_perturb':        2                  2         0    47'706          7'458     20'123             93      1'078'161
               'ls_restart_decay_perturb':        2                  2    46'016         0              0          0          1'869        849'369
                     'ls_restart_perturb':        6                  6   109'825         0              0          0         84'620      3'059'146

Solutions (25)            Num     Rank
           'fj_restart':    2    [0,1]
                'no_lp':    8   [3,10]
  'quick_restart_no_lp':   24   [4,24]
        'reduced_costs':    6  [16,25]
          'rins_lp_lns':    2  [12,13]
          'rnd_cst_lns':    4   [1,12]
          'rnd_var_lns':    4   [2,11]

Objective bounds     Num
    'am1_presolve':    1
      'default_lp':    2
  'initial_domain':    1
  'lb_tree_search':   90
          'max_lp':    7
   'reduced_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':     18       47       18
      'best_solutions':     86      189       72
   'fj solution hints':      0        0        0
        'lp solutions':     93       23       70
                'pump':      0        0

Improving bounds shared    Num  Sym
        'lb_tree_search':   89    0
                'max_lp':   14    0
          'pseudo_costs':   10    0
         'quick_restart':    8    0
   'quick_restart_no_lp':    8    0
         'reduced_costs':   20    0

Clauses shared                      #Exported  #Imported  #BinaryRead  #BinaryTotal
                           'core':        305        242           25            26
                     'default_lp':          1        288           26            26
                      'fs_random':          0          0            0            26
                'fs_random_no_lp':          0          0            0            26
  'fs_random_quick_restart_no_lp':          0          0            0            26
                 'lb_tree_search':          0          0           16            26
                         'max_lp':          3        287           22            26
                          'no_lp':        133        222           26            26
            'objective_lb_search':          4        288           22            26
                        'probing':          0          0            0            26
                   'pseudo_costs':          5        287           26            26
                  'quick_restart':          7        283           25            26
            'quick_restart_no_lp':        323        123           26            26
                  'reduced_costs':         54        270           24            26

LRAT_status: NA
[Scaling] scaled_objective_bound: 1730.09 corrected_bound: 1730.09 delta: 1.41548e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1730.088940153552
integers: 669
booleans: 354
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 10.013
usertime: 10.013
deterministic_time: 73.4958
gap_integral: 252.735
solution_fingerprint: 0x40238ccd9cfcdeef

[12]:
../_images/notebooks_a08_ModelOptions_32_1.svg

Second MILP Run (model_options2)¶

[13]:
model_options2 = ModelOptions(
    topology='radial',
    feeder_limit='minimum',
    feeder_route='straight',
)

The solver produces a strictly radial network, restricting the number of feeders to the minimum required given the number or turbines and maximum cable capacity. The feeder_route='straight' tells the solver to avoid blocking any feeder route with cables which tends to produce more straight-line connections, although the feeder routes may still have bends due to the exclusion zones.

Note: with this setting, neither EWRouter nor HGSRouter could secure warmstarting of the model.

[14]:
milp_router2 = MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=10,
    mip_gap=0.01,
    model_options=model_options2
)
terse = wfn.optimize(router=milp_router2)
wfn
[14]:
../_images/notebooks_a08_ModelOptions_36_0.svg

Summary¶

The MILP router strictly adheres to all provided ModelOptions:

  • It guarantees enforcement of topology (branched vs. radial).

  • It respects feeder constraints (unlimited vs. minimum).

  • It conforms to the required routing structure (segmented vs. straight).

Warmstarting of MILP routers¶

Warmstarter Compatibility with different ModelOptions setting is summarized in table below.

Model Option

Value

Warmstarter

Feeder limit

Unlimited

âś… all works

Minimum

only HGSRouter

Feeder route

Straight

âś… all works

Segmented

âś… all works

Topology

Branched

âś… all works

Radial

only HGSRouter

In the following section, a few examples are run to further illustrate this table.

Example 1:

[15]:
model_options = ModelOptions(
    topology='branched',
    feeder_limit='unlimited',
    feeder_route='segmented',
)
[16]:
milp_router = MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=1,
    mip_gap=0.01,
    model_options=model_options,
    verbose=True
)

Either EWRouter or HGSRouter can be used to warmstart.

[17]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor                           1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor                             1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]

Scaling to pure integer problem.
Num integers: 708/708 (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: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16

Initial optimization model 'optiwindnet': (model_fingerprint: 0x76dbad3948cc2e8b)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)

Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
  1.69e-04s  0.00e+00d  [DetectDominanceRelations]
  4.30e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.31e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  5.04e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.05e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000200597 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.737e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6083e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.21e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.60e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  1.65e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  2.74e-04s  0.00e+00d  [DetectDominanceRelations]
  2.10e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.07e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  9.51e-05s  0.00e+00d  [DetectDuplicateConstraints]
  7.46e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.53e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.30e-05s  0.00e+00d  [DetectDifferentVariables]
  8.72e-04s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  6.77e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.34e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.59e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.08e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  7.95e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.12e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  8.48e-06s  0.00e+00d  [MergeClauses]
  3.17e-04s  0.00e+00d  [DetectDominanceRelations]
  2.86e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.89e-04s  0.00e+00d  [DetectDominanceRelations]
  1.83e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  7.06e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.72e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00024352 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.647e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.9756e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  6.37e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.48e-03s  1.27e-03d  [Probe] #probed=708
  1.17e-04s  1.45e-04d  [MaxClique]
  1.78e-04s  0.00e+00d  [DetectDominanceRelations]
  1.25e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.37e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  8.97e-05s  0.00e+00d  [DetectDuplicateConstraints]
  7.08e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.20e-04s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.31e-05s  0.00e+00d  [DetectDifferentVariables]
  8.52e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  9.26e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.76e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.62e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.21e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  8.39e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.20e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.06e-06s  0.00e+00d  [MergeClauses]
  1.55e-04s  0.00e+00d  [DetectDominanceRelations]
  1.29e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.59e-06s  0.00e+00d  [MergeNoOverlap]
  2.50e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.08e-04s  0.00e+00d  [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 81 times.
  - rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 157 times.
  - rule 'deductions: 708 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 354 times.
  - rule 'linear2: contains a boolean' was applied 354 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
  - rule 'linear: positive at most one' was applied 105 times.
  - rule 'linear: positive equal one' was applied 40 times.
  - rule 'objective: shifted cost with exactly ones' was applied 40 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 40 times.
  - rule 'setppc: reduced linear coefficients' was applied 39 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 354 times.
  - rule 'variables: detect half reified value encoding' was applied 708 times.

Presolved optimization model 'optiwindnet': (model_fingerprint: 0xb3500f89df7d1090)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000199893 dtime: 0.00043646

Preloading model.
#Bound   0.03s best:inf   next:[1364.00132,11449.6914] initial_domain
#1       0.03s best:1812.72623 next:[1364.00132,1812.72623] complete_hint
#Model   0.04s var:708/708 constraints:972/972

Starting search at 0.04s 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]

#Bound   0.05s best:1812.72623 next:[1377.09321,1812.72623] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#2       0.05s best:1806.84914 next:[1377.09321,1806.84914] no_lp [hint] (fixed_bools=0/354)
#Bound   0.05s best:1806.84914 next:[1446.52178,1806.84914] pseudo_costs
#3       0.05s best:1805.92157 next:[1446.52178,1805.92157] graph_cst_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base)
#Bound   0.06s best:1805.92157 next:[1657.8143,1805.92157] max_lp
#4       0.07s best:1805.47664 next:[1657.8143,1805.47664] quick_restart_no_lp (fixed_bools=0/358)
#5       0.07s best:1764.91917 next:[1657.8143,1764.91917] graph_arc_lns (d=5.00e-01 s=14 t=0.10 p=0.00 stall=0 h=base)
#Bound   0.11s best:1764.91917 next:[1674.7528,1764.91917] lb_tree_search
#Bound   0.12s best:1764.91917 next:[1677.89266,1764.91917] max_lp
#Model   0.13s var:704/708 constraints:967/972
#Model   0.15s var:698/708 constraints:961/972
#6       0.19s best:1758.41439 next:[1677.89266,1758.41439] quick_restart_no_lp (fixed_bools=5/373)
#Bound   0.25s best:1758.41439 next:[1682.16026,1758.41439] max_lp
#Model   0.30s var:696/708 constraints:958/972
#Bound   0.32s best:1758.41439 next:[1683.27935,1758.41439] lb_tree_search
#Bound   0.32s best:1758.41439 next:[1686.94433,1758.41439] max_lp
#Model   0.40s var:688/708 constraints:950/972
#Bound   0.41s best:1758.41439 next:[1687.01627,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=23 @root=2 restarts=0 lp_iters=[0, 0, 238, 446])
#Bound   0.46s best:1758.41439 next:[1688.22486,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=34 @root=2 restarts=0 lp_iters=[0, 0, 552, 483])
#Bound   0.48s best:1758.41439 next:[1688.27541,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=36 @root=2 restarts=0 lp_iters=[0, 0, 726, 483])
#Bound   0.49s best:1758.41439 next:[1688.28918,1758.41439] lb_tree_search (nodes=8/8 rc=0 decisions=45 @root=2 restarts=0 lp_iters=[0, 0, 825, 485])
#Bound   0.51s best:1758.41439 next:[1688.4031,1758.41439] lb_tree_search (nodes=11/11 rc=2 decisions=61 @root=2 restarts=0 lp_iters=[0, 0, 948, 492])
#Bound   0.52s best:1758.41439 next:[1688.98027,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=72 @root=2 restarts=0 lp_iters=[0, 0, 1'056, 520])
#Bound   0.53s best:1758.41439 next:[1689.29185,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=73 @root=2 restarts=0 lp_iters=[0, 0, 1'109, 520])
#Bound   0.56s best:1758.41439 next:[1689.5203,1758.41439] lb_tree_search (nodes=14/14 rc=3 decisions=78 @root=2 restarts=0 lp_iters=[0, 0, 1'323, 552])
#Bound   0.57s best:1758.41439 next:[1689.52221,1758.41439] lb_tree_search (nodes=15/15 rc=3 decisions=84 @root=2 restarts=0 lp_iters=[0, 0, 1'429, 587])
#Bound   0.60s best:1758.41439 next:[1690.01805,1758.41439] lb_tree_search (nodes=16/16 rc=4 decisions=93 @root=2 restarts=0 lp_iters=[0, 0, 1'596, 614])
#Bound   0.63s best:1758.41439 next:[1690.23198,1758.41439] lb_tree_search (nodes=17/17 rc=4 decisions=98 @root=2 restarts=0 lp_iters=[0, 0, 1'773, 667])
#Bound   0.64s best:1758.41439 next:[1691.98313,1758.41439] lb_tree_search (nodes=17/17 rc=4 decisions=99 @root=2 restarts=0 lp_iters=[0, 0, 1'863, 667])
#Model   0.77s var:678/708 constraints:939/972
#Model   0.96s var:676/708 constraints:937/972
#Bound   0.88s best:1758.41439 next:[1693.98017,1758.41439] lb_tree_search (nodes=29/29 rc=6 decisions=179 @root=2 restarts=0 lp_iters=[0, 0, 3'395, 860])  [skipped_logs=11]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [985.47ms, 985.47ms] 985.47ms   0.00ns 985.47ms         2 [  1.31ms, 441.92ms] 221.61ms 220.30ms 443.23ms
                     'default_lp':         1 [963.45ms, 963.45ms] 963.45ms   0.00ns 963.45ms         2 [ 24.79ms, 252.35ms] 138.57ms 113.78ms 277.15ms
               'feasibility_pump':         5 [ 38.92us,  22.74ms]   5.47ms   8.73ms  27.35ms         2 [145.79us,  11.26ms]   5.70ms   5.56ms  11.41ms
                             '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':         3 [ 39.00ms, 334.94ms] 194.40ms 121.27ms 583.21ms         3 [  4.71ms, 100.30ms]  58.83ms  40.03ms 176.48ms
                  'graph_cst_lns':         4 [  8.39ms, 375.14ms] 105.38ms 155.81ms 421.51ms         3 [392.66us, 100.07ms]  33.66ms  46.96ms 100.97ms
                  'graph_dec_lns':         5 [705.81us, 134.04ms]  37.85ms  50.25ms 189.25ms         4 [ 10.00ns,  25.05ms]   7.27ms  10.40ms  29.07ms
                  'graph_var_lns':         4 [  3.34ms, 369.78ms] 126.84ms 147.33ms 507.36ms         4 [ 10.00ns, 100.01ms]  30.74ms  40.81ms 122.98ms
                   'lb_relax_lns':         2 [231.43ms, 568.12ms] 399.78ms 168.35ms 799.56ms         2 [ 58.99ms, 137.88ms]  98.43ms  39.44ms 196.87ms
                 'lb_tree_search':         1 [962.98ms, 962.98ms] 962.98ms   0.00ns 962.98ms         2 [ 46.70ms, 480.14ms] 263.42ms 216.72ms 526.84ms
                             'ls':         3 [184.35ms, 197.10ms] 190.69ms   5.21ms 572.06ms         3 [100.00ms, 100.01ms] 100.00ms   1.40us 300.01ms
                         'ls_lin':         3 [181.38ms, 192.46ms] 188.56ms   5.09ms 565.69ms         3 [100.00ms, 100.01ms] 100.01ms   1.67us 300.02ms
                         'max_lp':         1 [962.75ms, 962.75ms] 962.75ms   0.00ns 962.75ms         2 [ 54.76ms, 334.50ms] 194.63ms 139.87ms 389.26ms
                          'no_lp':         1 [963.23ms, 963.23ms] 963.23ms   0.00ns 963.23ms         2 [  1.47ms, 320.74ms] 161.11ms 159.64ms 322.21ms
            'objective_lb_search':         1 [962.01ms, 962.01ms] 962.01ms   0.00ns 962.01ms         2 [ 27.31ms, 265.12ms] 146.21ms 118.91ms 292.43ms
                        'probing':         1 [960.77ms, 960.77ms] 960.77ms   0.00ns 960.77ms         2 [ 23.68ms, 205.56ms] 114.62ms  90.94ms 229.24ms
                   'pseudo_costs':         1 [962.63ms, 962.63ms] 962.63ms   0.00ns 962.63ms         2 [ 10.45ms, 245.31ms] 127.88ms 117.43ms 255.75ms
                  'quick_restart':         1 [962.75ms, 962.75ms] 962.75ms   0.00ns 962.75ms         2 [ 24.27ms, 270.75ms] 147.51ms 123.24ms 295.02ms
            'quick_restart_no_lp':         1 [962.71ms, 962.71ms] 962.71ms   0.00ns 962.71ms         2 [  1.47ms, 409.60ms] 205.53ms 204.07ms 411.06ms
                  'reduced_costs':         1 [962.84ms, 962.84ms] 962.84ms   0.00ns 962.84ms         2 [ 10.98ms, 262.15ms] 136.57ms 125.59ms 273.13ms
                      'rins/rens':         5 [  5.78ms, 179.88ms]  48.33ms  66.78ms 241.66ms         4 [  1.28us,  33.45ms]   9.40ms  13.98ms  37.60ms
                    'rnd_cst_lns':         4 [  5.29ms, 381.02ms] 106.95ms 158.37ms 427.82ms         4 [117.00ns, 100.01ms]  25.30ms  43.14ms 101.19ms
                    'rnd_var_lns':         5 [  4.02ms, 264.85ms]  90.23ms  99.11ms 451.14ms         5 [ 10.00ns,  86.27ms]  22.64ms  33.03ms 113.18ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    365     14'937    38'710        54            2'313     17'328     332'518        792'596
                     'default_lp':    367        122     2'504         1            1'390      1'621      13'769         58'287
                      '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':    354          0     2'382         0            1'393      1'527      10'129         44'607
                         'max_lp':    354         67     2'362         1            1'368      1'541      11'827         53'172
                          'no_lp':    354      9'353    21'400        44            3'667     13'261     510'520      1'631'836
            'objective_lb_search':    366        161     3'700         1            2'015      2'414      18'536         83'446
                        'probing':    375         10       949         0              793        803       5'903         20'044
                   'pseudo_costs':    354        217     5'319         2            2'774      3'249      26'938        127'511
                  'quick_restart':    364         58     5'107         3            2'742      3'127      21'759        100'575
            'quick_restart_no_lp':    395      6'308    69'942       562            5'237     12'447     382'211      1'442'932
                  'reduced_costs':    356        141     4'604         2            2'045      2'387      17'451         85'647

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     16      0    365      349            248                96             6'717
                     'default_lp':     10      0    367      357            170                42               100
                      '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':     16      0    354      338            230                40                 0
                         'max_lp':     15      0    354      339            148                41                59
                          'no_lp':     16      0    354      338            196                24             5'452
            'objective_lb_search':     17      0    366      349            272                42                15
                        'probing':      9      0    375      366            820                40                 7
                   'pseudo_costs':     11      0    354      343            122                41               176
                  'quick_restart':     15      0    364      349            212                43                37
            'quick_restart_no_lp':     16      0    395      379            674               261             4'253
                  'reduced_costs':     15      0    356      341            152                40               132

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':        12'732     211'160            41'662     843'309       134'541     4'624
                     'default_lp':           116         954             1'744       6'923             0        20
                      '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':             0           0                 0           0             0         0
                         'max_lp':            53         770             1'887       4'723             0         7
                          'no_lp':         7'828      74'794            36'573     420'200             0     3'152
            'objective_lb_search':           150       4'198               899       2'814             0        69
                        'probing':            10          50               185       1'338             0         3
                   'pseudo_costs':           166       1'825             5'929      11'362             0        39
                  'quick_restart':            35         426             1'075       3'185             0        15
            'quick_restart_no_lp':         4'510      37'248            67'618     272'004             0     1'583
                  'reduced_costs':            93         550             1'481       8'431             0         9

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      266      1'825        0         5          63              45          1
                     'default_lp':       81        610        0         0           0               0          0
                      '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':       81        610        0         0           0               0          0
                         'max_lp':       84        609        0         0           0               0          0
                          'no_lp':      476      3'566        0        13         135             171          2
            'objective_lb_search':      161      1'208        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':      241      1'843        0         0           0               0          0
                  'quick_restart':      266      1'878        0         1           3              15          0
            'quick_restart_no_lp':    1'288      9'125        0        37         490             656          7
                  'reduced_costs':      161      1'208        0         0           0               0          0

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':       24             0          1         4'284        136              0        340           5            0         27        0           0      3'336    36'765     14'937
                     'default_lp':        0             0          0            15          0              0          5           0            0          0        0           0          0       249        122
                      '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             0          0              0          0           0            0          0        0           0          0         0          0
                         'max_lp':        0             0          0             7          0              0          0           0            0          0        0           0          0       133         67
                          'no_lp':      431           112          0         3'058         95              9         94          13            0         53        0           0          0    21'258      9'353
            'objective_lb_search':       65             0          0            61          0              6          8           0            0          0        0           0          0       257        161
                        'probing':        0             0          0             3          0              0          0           0            0          0        0           0          0        20         10
                   'pseudo_costs':        0             0          0            36          1              0          3           0            0          0        0           0          0       460        217
                  'quick_restart':        0             0          0            13          0              0          2           1            0          1        0           0          0        94         58
            'quick_restart_no_lp':       78             0          2         1'477         68              2        106          37            6         17        0           0          0    12'478      6'308
                  'reduced_costs':        0             0          0             7          0              0          2           0            0          0        0           0          0       321        141

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1       8'056        737      575        1        8
       'lb_tree_search':          1       6'094        391      201       28        0
               'max_lp':          1       5'065        512      307       17        6
  'objective_lb_search':          1       8'294        843      622        1        0
              'probing':          1       3'580      1'144      175        1        0
         'pseudo_costs':          1       8'851        807      690       83       44
        'quick_restart':          1       5'613      1'060      398        0        6
        'reduced_costs':          1       7'574        798      423       75       45

Lp dimension                 Final dimension of first component
           'default_lp':    480 rows, 669 columns, 2575 entries
       'lb_tree_search':   1466 rows, 708 columns, 9598 entries
               'max_lp':   770 rows, 708 columns, 10099 entries
  'objective_lb_search':    528 rows, 669 columns, 4162 entries
              'probing':  1072 rows, 669 columns, 13805 entries
         'pseudo_costs':    531 rows, 708 columns, 3122 entries
        'quick_restart':    744 rows, 669 columns, 9032 entries
        'reduced_costs':    630 rows, 708 columns, 5650 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow    Bad  BadScaling
           'default_lp':          0            0     580         0    757           0
       'lb_tree_search':          0            0     229         0  3'494           0
               'max_lp':          0            0     330         0  3'947           0
  'objective_lb_search':          0            0     618         0  1'612           0
              'probing':          0            0     169         0  7'061           0
         'pseudo_costs':          0            0     813         0  1'226           0
        'quick_restart':          0            0     399         0  2'588           0
        'reduced_costs':          0            0     532         0  1'373           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        1'909        2      197       0        181      0            11    737/1'308
       'lb_tree_search':        1'717       47      279       0        222      7             1      391/654
               'max_lp':        1'838       62      576       0        496      4             0      512/898
  'objective_lb_search':        2'015       11      387       0        340      1            23    843/1'452
              'probing':        2'316       51      302       0        219     18             5  1'144/2'019
         'pseudo_costs':        2'133        7      328       0        310      1             1    807/1'408
        'quick_restart':        2'232       24      517       0        434      5            10  1'060/1'774
        'reduced_costs':        2'124       15      532       0        480      0             0    798/1'302

Lp Cut            probing  default_lp  max_lp  quick_restart  reduced_costs  pseudo_costs  lb_tree_search  objective_lb_search
          CG_FF:       20          12       5             19             11            13               6                   16
           CG_K:       10           6       5             16              6            14               5                   11
          CG_KL:        3           3       -              1              1             5               -                    2
           CG_R:        9           9      14             18             18            24               6                   11
          CG_RB:       42          19      33             37             34            22              21                   31
         CG_RBP:       16          10      13             24             10            17               4                   14
             IB:      331         384       8            381            370           411               -                  376
       MIR_1_FF:       57          20      11             30             18            17              15                   23
        MIR_1_K:       14           7       4             11              3             5               -                    7
       MIR_1_KL:        8           5       2              5              1             2               1                    3
        MIR_1_R:        1           -       -              1              -             2               -                    2
       MIR_1_RB:       28          15      13             26             17            11               7                   16
      MIR_1_RBP:       11           3       2             10              3             4               1                    7
       MIR_2_FF:       48          28      27             31             22            26              36                   36
        MIR_2_K:       17          11       2             28              7             5               1                    7
       MIR_2_KL:        5           6       2              8              3             -               4                    3
        MIR_2_R:        2           2       2             10             10             1               1                    1
       MIR_2_RB:       22          19      15             35             30            14              23                   25
      MIR_2_RBP:       10          12       3             16              8             2               1                    8
       MIR_3_FF:       45          15      30             24             20            23              30                   26
        MIR_3_K:       19           6      10             24              4            10               7                    8
       MIR_3_KL:        1           -       4             15              2             5               2                    1
        MIR_3_R:        2           -       5              4             11             3               2                    3
       MIR_3_RB:       21           8      28             15             26            12              19                   15
      MIR_3_RBP:       25           3      12             19             11             4               7                    7
       MIR_4_FF:       27          18      24             16             12            18              27                   14
        MIR_4_K:       22           3      17             13              9             8               4                    6
       MIR_4_KL:       10           3       5              6              6             3               3                    3
        MIR_4_R:        3           2       2              2              1             1               -                    2
       MIR_4_RB:       18           9      17             14             11             9              14                   11
      MIR_4_RBP:       17           5      22             11              6             1               9                    7
       MIR_5_FF:       20           1      15             11              9             5              15                    9
        MIR_5_K:       17           2      12             20              6             6               7                    9
       MIR_5_KL:        7           1       9              4              4             2               5                    7
        MIR_5_R:        1           -       -              2              1             -               1                    -
       MIR_5_RB:       10           4       7              6             11             4               7                    3
      MIR_5_RBP:        9           6      12             12              5             4              10                    4
       MIR_6_FF:       20           2       9              7              4            10               5                    8
        MIR_6_K:       12           5       8             10              5             1               8                   10
       MIR_6_KL:        6           4       4              4              7             -               3                    5
        MIR_6_R:        2           3       2              3              -             1               -                    -
       MIR_6_RB:        7           4      15              6              6             2               8                    7
      MIR_6_RBP:       15           6       8             12              1             -               9                    5
   ZERO_HALF_FF:       13          13       5             14              6            15               5                   15
    ZERO_HALF_K:        7           -       -              3              2             7               1                    2
   ZERO_HALF_KL:        1           -       -              2              -             -               2                    -
    ZERO_HALF_R:      109          35      56             59             34            40              42                   48
   ZERO_HALF_RB:       14           4      11             13              5             9               4                    5
  ZERO_HALF_RBP:       10           4       2              2              1             9               3                    4

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           1/3     67%    7.21e-01       0.10
  'graph_cst_lns':           1/3     67%    7.21e-01       0.10
  'graph_dec_lns':           0/4     75%    8.21e-01       0.10
  'graph_var_lns':           0/4     75%    8.21e-01       0.10
   'lb_relax_lns':           1/2     50%    5.38e-01       0.50
      'rins/rens':           2/5     80%    8.80e-01       0.10
    'rnd_cst_lns':           1/4     75%    8.21e-01       0.10
    'rnd_var_lns':           0/5     80%    8.80e-01       0.10

LS stats                           Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                'ls_lin_restart':        1                  1    16'844         0              0          0          8'002        519'590
  'ls_lin_restart_decay_perturb':        1                  1    22'038         0              0          0            928        423'998
        'ls_lin_restart_perturb':        1                  1    16'283         0              0          0          6'728        562'005
              'ls_restart_decay':        2                  2    43'052         0              0          0          1'749        815'719
            'ls_restart_perturb':        1                  1    17'101         0              0          0         10'256        535'450

Solutions (6)             Num   Rank
        'complete_hint':    2  [0,1]
        'graph_arc_lns':    2  [4,5]
        'graph_cst_lns':    2  [2,3]
                'no_lp':    2  [1,2]
  'quick_restart_no_lp':    4  [3,6]

Objective bounds     Num
    'am1_presolve':    1
  'initial_domain':    1
  'lb_tree_search':   26
          'max_lp':    4
    'pseudo_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      1        0        1
      'best_solutions':     16       41       13
   'fj solution hints':      0        0        0
        'lp solutions':     22        5       14
                'pump':      0        0

Improving bounds shared    Num  Sym
        'lb_tree_search':    8    0
                'max_lp':   18    0
               'probing':    4    0
          'pseudo_costs':    2    0

Clauses shared            #Exported  #Imported  #BinaryRead  #BinaryTotal
                 'core':          1          0           49            49
           'default_lp':          0          0            4            49
       'lb_tree_search':          0          0           49            49
               'max_lp':          0          0            7            49
                'no_lp':          0          0           49            49
  'objective_lb_search':          0          0            7            49
              'probing':         46          0            3            49
         'pseudo_costs':          0          0            5            49
        'quick_restart':          0          0            7            49
  'quick_restart_no_lp':          2          0           49            49
        'reduced_costs':          0          0            7            49

LRAT_status: NA
[Scaling] scaled_objective_bound: 1693.98 corrected_bound: 1693.98 delta: 9.06386e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1693.980166477467
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.02467
usertime: 1.02467
deterministic_time: 5.2111
gap_integral: 21.9511
solution_fingerprint: 0x40238ccd9cfcdeef

Example 2:

[18]:
model_options = ModelOptions(
    topology='radial',
    feeder_limit='unlimited',
    feeder_route='segmented',
)
[19]:
milp_router = MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=1,
    mip_gap=0.01,
    model_options=model_options,
    verbose=True
)

Now the solution by EWRouter is not a feasible warmstart.

[20]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor                              1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor                           1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor                             1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]

Scaling to pure integer problem.
Num integers: 708/708 (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: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16

Initial optimization model 'optiwindnet': (model_fingerprint: 0xa6da1684853b7ab2)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)

Starting presolve at 0.00s
The solution hint is complete, but it is infeasible! we will try to repair it.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
  1.88e-04s  0.00e+00d  [DetectDominanceRelations]
  3.72e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.41e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=185
  5.60e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.69e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000217691 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [4.7874e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [7.8483e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  8.00e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.30e-03s  4.40e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  2.72e-04s  4.55e-04d  [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
  2.24e-04s  0.00e+00d  [DetectDominanceRelations]
  2.01e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  9.19e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  2.90e-04s  0.00e+00d  [DetectDuplicateConstraints]
  8.77e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.84e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.53e-05s  0.00e+00d  [DetectDifferentVariables]
  9.15e-04s  8.61e-05d  [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
  1.11e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  3.31e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.99e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.58e-04s  1.02e-04d  [FindBigAtMostOneAndLinearOverlap]
  1.05e-04s  1.08e-04d  [FindBigVerticalLinearOverlap]
  2.17e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.31e-05s  0.00e+00d  [MergeClauses]
  1.82e-04s  0.00e+00d  [DetectDominanceRelations]
  3.60e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.62e-04s  0.00e+00d  [DetectDominanceRelations]
  1.61e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.53e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.42e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000208641 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.226e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6728e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  8.75e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  4.12e-03s  1.26e-03d  [Probe] #probed=708
  2.51e-04s  3.09e-04d  [MaxClique]
  1.62e-04s  0.00e+00d  [DetectDominanceRelations]
  1.27e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.22e-05s  0.00e+00d  [ProcessAtMostOneAndLinear]
  6.83e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.57e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.57e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  9.73e-06s  0.00e+00d  [DetectDifferentVariables]
  1.07e-04s  4.19e-06d  [ProcessSetPPC] #relevant_constraints=223
  7.83e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.42e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.11e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.22e-04s  9.83e-05d  [FindBigAtMostOneAndLinearOverlap]
  7.52e-05s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.17e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.27e-05s  0.00e+00d  [MergeClauses]
  1.69e-04s  0.00e+00d  [DetectDominanceRelations]
  1.44e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.26e-05s  0.00e+00d  [MergeNoOverlap]
  2.77e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.13e-04s  0.00e+00d  [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 81 times.
  - rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 157 times.
  - rule 'deductions: 708 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 354 times.
  - rule 'linear2: contains a boolean' was applied 354 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
  - rule 'linear: positive at most one' was applied 145 times.
  - rule 'linear: positive equal one' was applied 40 times.
  - rule 'objective: shifted cost with exactly ones' was applied 40 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 40 times.
  - rule 'setppc: reduced linear coefficients' was applied 39 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 354 times.
  - rule 'variables: detect half reified value encoding' was applied 708 times.

Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1765fec5961d2416)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000189692 dtime: 0.00044822

Preloading model.
#Bound   0.03s best:inf   next:[1364.00132,11449.6914] initial_domain
The solution hint is complete, but it is infeasible! we will try to repair it.
#Model   0.04s var:708/708 constraints:1012/1012

Starting search at 0.04s 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]

#1       0.05s best:2411.23334 next:[1364.00132,2411.23334] fj_restart(batch:1 lin{mvs:1'433 evals:16'048} #w_updates:577 #perturb:0)
#Bound   0.05s best:2411.23334 next:[1396.24224,2411.23334] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#2       0.05s best:2387.47917 next:[1396.24224,2387.47917] no_lp [hint] (fixed_bools=0/354)
#Bound   0.05s best:2387.47917 next:[1464.81361,2387.47917] quick_restart
#Bound   0.05s best:2387.47917 next:[1471.69595,2387.47917] reduced_costs
#3       0.06s best:2280.74356 next:[1471.69595,2280.74356] fj_restart_decay_compound_perturb_obj(batch:1 lin{mvs:0 evals:21'282} gen{mvs:2'228 evals:0} comp{mvs:266 btracks:981} #w_updates:23 #perturb:0) (fixed_bools=0/354)
#Bound   0.06s best:2280.74356 next:[1473.79813,2280.74356] probing
#4       0.06s best:2031.55582 next:[1473.79813,2031.55582] graph_arc_lns (d=5.00e-01 s=20 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound   0.06s best:2031.55582 next:[1672.91324,2031.55582] max_lp
#5       0.07s best:2029.72472 next:[1672.91324,2029.72472] quick_restart_no_lp (fixed_bools=0/371)
#6       0.07s best:2025.24902 next:[1672.91324,2025.24901] quick_restart_no_lp (fixed_bools=0/372)
#7       0.08s best:2014.78694 next:[1672.91324,2014.78694] graph_var_lns (d=5.00e-01 s=19 t=0.10 p=0.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#8       0.08s best:1961.15493 next:[1672.91324,1961.15493] no_lp (fixed_bools=0/354)
#9       0.08s best:1960.86608 next:[1672.91324,1960.86608] no_lp (fixed_bools=0/354)
#10      0.11s best:1959.03498 next:[1672.91324,1959.03498] quick_restart_no_lp (fixed_bools=0/379)
#Bound   0.11s best:1959.03498 next:[1688.52481,1959.03498] max_lp
#Bound   0.12s best:1959.03498 next:[1690.90649,1959.03498] lb_tree_search
#11      0.12s best:1957.39003 next:[1690.90649,1957.39002] graph_var_lns (d=7.07e-01 s=28 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#12      0.12s best:1955.55893 next:[1690.90649,1955.55893] graph_var_lns (d=7.07e-01 s=28 t=0.10 p=1.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#13      0.13s best:1917.60742 next:[1690.90649,1917.60742] quick_restart_no_lp (fixed_bools=0/379)
#14      0.15s best:1915.99541 next:[1690.90649,1915.99541] quick_restart_no_lp (fixed_bools=0/379)
#15      0.15s best:1913.4393 next:[1690.90649,1913.4393] quick_restart_no_lp (fixed_bools=0/381)
#16      0.17s best:1912.94144 next:[1690.90649,1912.94144] quick_restart_no_lp (fixed_bools=0/382)
#17      0.19s best:1908.47629 next:[1690.90649,1908.47629] quick_restart_no_lp (fixed_bools=0/383)
#18      0.21s best:1808.43814 next:[1690.90649,1808.43814] lb_relax_lns_int (d=5.00e-01 s=23 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#19      0.21s best:1807.99321 next:[1690.90649,1807.99321] quick_restart_no_lp (fixed_bools=0/392)
#Bound   0.23s best:1807.99321 next:[1691.13639,1807.99321] max_lp
#20      0.23s best:1791.51698 next:[1691.13639,1791.51698] graph_arc_lns (d=7.07e-01 s=31 t=0.10 p=1.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#Bound   0.30s best:1791.51698 next:[1697.19206,1791.51698] max_lp
#Bound   0.31s best:1791.51698 next:[1697.62662,1791.51698] max_lp
#Model   0.38s var:700/708 constraints:1002/1012
#Bound   0.43s best:1791.51698 next:[1708.14572,1791.51698] lb_tree_search
#Model   0.44s var:692/708 constraints:994/1012
#Bound   0.44s best:1791.51698 next:[1709.6149,1791.51698] lb_tree_search (nodes=2/2 rc=0 decisions=10 @root=2 restarts=0 lp_iters=[0, 0, 51, 202])
#Bound   0.46s best:1791.51698 next:[1710.21825,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=13 @root=2 restarts=0 lp_iters=[0, 0, 161, 239])
#Bound   0.48s best:1791.51698 next:[1710.53847,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=14 @root=2 restarts=0 lp_iters=[0, 0, 240, 239])
#Bound   0.49s best:1791.51698 next:[1711.22677,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=16 @root=2 restarts=0 lp_iters=[0, 0, 346, 239])
#Bound   0.51s best:1791.51698 next:[1711.29706,1791.51698] lb_tree_search (nodes=4/4 rc=0 decisions=19 @root=2 restarts=0 lp_iters=[0, 0, 456, 282])
#Bound   0.53s best:1791.51698 next:[1711.33621,1791.51698] lb_tree_search (nodes=4/4 rc=0 decisions=21 @root=2 restarts=0 lp_iters=[0, 0, 616, 282])
#Bound   0.54s best:1791.51698 next:[1711.81088,1791.51698] lb_tree_search (nodes=5/5 rc=0 decisions=24 @root=2 restarts=0 lp_iters=[0, 0, 671, 308])
#Bound   0.57s best:1791.51698 next:[1712.4967,1791.51698] lb_tree_search (nodes=6/6 rc=0 decisions=27 @root=2 restarts=0 lp_iters=[0, 0, 835, 363])
#Bound   0.58s best:1791.51698 next:[1712.56947,1791.51698] lb_tree_search (nodes=6/6 rc=0 decisions=29 @root=2 restarts=0 lp_iters=[0, 0, 935, 363])
#21      0.77s best:1784.46098 next:[1714.47179,1784.46098] graph_var_lns (d=8.76e-01 s=48 t=0.10 p=1.00 stall=1 h=base) (fixed_bools=0/354)
#22      1.00s best:1770.99763 next:[1716.7151,1770.99763] lb_relax_lns_int (d=8.14e-01 s=55 t=0.50 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#Bound   0.99s best:1784.46098 next:[1716.7151,1784.46098] lb_tree_search (nodes=22/22 rc=1 decisions=132 @root=2 restarts=0 lp_iters=[0, 0, 3'782, 864])  [skipped_logs=23]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [965.27ms, 965.27ms] 965.27ms   0.00ns 965.27ms         2 [  1.32ms, 312.64ms] 156.98ms 155.66ms 313.96ms
                     'default_lp':         1 [965.00ms, 965.00ms] 965.00ms   0.00ns 965.00ms         2 [ 21.79ms, 252.14ms] 136.96ms 115.17ms 273.93ms
               'feasibility_pump':         5 [ 36.89us,  21.87ms]   5.56ms   8.24ms  27.82ms         3 [141.93us,  12.34ms]   4.21ms   5.75ms  12.64ms
                             'fj':         1 [ 10.79ms,  10.79ms]  10.79ms   0.00ns  10.79ms         1 [  3.94ms,   3.94ms]   3.94ms   0.00ns   3.94ms
                             'fj':         1 [ 17.73ms,  17.73ms]  17.73ms   0.00ns  17.73ms         1 [  7.30ms,   7.30ms]   7.30ms   0.00ns   7.30ms
                      'fs_random':         1 [ 11.68ms,  11.68ms]  11.68ms   0.00ns  11.68ms         1 [  1.15ms,   1.15ms]   1.15ms   0.00ns   1.15ms
                'fs_random_no_lp':         1 [ 11.73ms,  11.73ms]  11.73ms   0.00ns  11.73ms         1 [  1.15ms,   1.15ms]   1.15ms   0.00ns   1.15ms
  'fs_random_quick_restart_no_lp':         1 [ 11.08ms,  11.08ms]  11.08ms   0.00ns  11.08ms         1 [  1.13ms,   1.13ms]   1.13ms   0.00ns   1.13ms
                  'graph_arc_lns':         3 [ 12.37ms, 346.58ms] 156.55ms 140.24ms 469.65ms         3 [276.70us, 100.04ms]  40.74ms  42.85ms 122.22ms
                  'graph_cst_lns':         5 [ 10.52ms, 262.16ms] 112.73ms  96.14ms 563.66ms         5 [ 36.37us,  97.26ms]  30.77ms  36.14ms 153.87ms
                  'graph_dec_lns':         5 [  2.67ms, 156.76ms]  47.56ms  57.10ms 237.79ms         5 [ 10.00ns,  28.36ms]   6.93ms  10.98ms  34.63ms
                  'graph_var_lns':         4 [ 25.36ms, 276.04ms] 115.81ms  99.64ms 463.22ms         4 [  1.20ms, 100.02ms]  32.24ms  40.34ms 128.97ms
                   'lb_relax_lns':         3 [151.30ms, 247.46ms] 207.63ms  40.95ms 622.89ms         3 [ 31.62ms,  60.13ms]  44.62ms  11.77ms 133.86ms
                 'lb_tree_search':         1 [964.13ms, 964.13ms] 964.13ms   0.00ns 964.13ms         2 [ 51.46ms, 507.08ms] 279.27ms 227.81ms 558.53ms
                             'ls':         3 [192.95ms, 203.45ms] 198.75ms   4.36ms 596.25ms         3 [100.00ms, 100.01ms] 100.00ms   1.14us 300.01ms
                         'ls_lin':         3 [153.46ms, 218.45ms] 189.52ms  27.01ms 568.55ms         3 [100.00ms, 100.01ms] 100.01ms   2.20us 300.02ms
                         'max_lp':         1 [964.51ms, 964.51ms] 964.51ms   0.00ns 964.51ms         2 [ 45.37ms, 264.09ms] 154.73ms 109.36ms 309.46ms
                          'no_lp':         1 [965.08ms, 965.08ms] 965.08ms   0.00ns 965.08ms         2 [  1.43ms, 324.48ms] 162.96ms 161.53ms 325.91ms
            'objective_lb_search':         1 [963.74ms, 963.74ms] 963.74ms   0.00ns 963.74ms         2 [ 25.45ms, 283.21ms] 154.33ms 128.88ms 308.66ms
                        'probing':         1 [960.20ms, 960.20ms] 960.20ms   0.00ns 960.20ms         2 [ 23.95ms, 239.12ms] 131.53ms 107.59ms 263.07ms
                   'pseudo_costs':         1 [964.10ms, 964.10ms] 964.10ms   0.00ns 964.10ms         2 [  9.81ms, 273.88ms] 141.84ms 132.04ms 283.69ms
                  'quick_restart':         1 [964.25ms, 964.25ms] 964.25ms   0.00ns 964.25ms         2 [ 19.97ms, 239.41ms] 129.69ms 109.72ms 259.39ms
            'quick_restart_no_lp':         1 [963.83ms, 963.83ms] 963.83ms   0.00ns 963.83ms         2 [  1.43ms, 341.19ms] 171.31ms 169.88ms 342.62ms
                  'reduced_costs':         1 [964.04ms, 964.04ms] 964.04ms   0.00ns 964.04ms         2 [ 18.82ms, 295.85ms] 157.33ms 138.51ms 314.66ms
                      'rins/rens':         5 [  4.01ms, 336.31ms]  89.63ms 126.71ms 448.13ms         3 [758.00ns, 100.04ms]  38.18ms  44.14ms 114.53ms
                    'rnd_cst_lns':         5 [  5.60ms, 348.80ms]  86.05ms 131.64ms 430.23ms         5 [ 10.00ns, 100.02ms]  20.13ms  39.94ms 100.64ms
                    'rnd_var_lns':         5 [  3.51ms, 200.08ms]  55.52ms  73.39ms 277.60ms         5 [ 10.00ns,  59.36ms]  13.01ms  23.26ms  65.05ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    366     12'106    34'735        26            2'467     14'546     500'488      1'133'443
                     'default_lp':    373        150     3'976         2            2'089      2'457      28'618         93'913
                      'fs_random':    354          0       564         0              564        564       5'830         14'293
                'fs_random_no_lp':    354          0       606         0              606        606       6'265         15'333
  'fs_random_quick_restart_no_lp':    354          0       592         0              592        592       6'121         14'992
                 'lb_tree_search':    354          1     2'272         0            1'397      1'537      15'545         39'898
                         'max_lp':    354         61     3'619         1            2'104      2'330      24'181         83'243
                          'no_lp':    354      8'896    20'580        42            2'995     12'065     440'678      1'405'018
            'objective_lb_search':    368        100     3'628         2            2'082      2'383      25'633         84'293
                        'probing':    375         11       904         0              794        805       8'355         21'062
                   'pseudo_costs':    354        105     6'428         2            3'500      3'933      41'173        147'336
                  'quick_restart':    369         43     5'169         3            2'775      3'145      32'683        108'815
            'quick_restart_no_lp':    406      5'937    64'094       528            5'529     12'244     406'947      1'306'628
                  'reduced_costs':    357         66     4'147         1            2'094      2'342      25'052         87'116

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':      8      0    366      358            192               233             5'018
                     'default_lp':      9      1    373      363            160                41               123
                      'fs_random':      0      0    354      354             80                40                 0
                'fs_random_no_lp':      0      0    354      354             80                40                 0
  'fs_random_quick_restart_no_lp':      0      0    354      354             80                40                 0
                 'lb_tree_search':      8      0    354      346            112                40                 0
                         'max_lp':      8      0    354      346            116                40                53
                          'no_lp':      8      0    354      346            116               110             6'403
            'objective_lb_search':     10      0    368      358            196                40                16
                        'probing':      0      0    375      375            166                40                 8
                   'pseudo_costs':      8      0    354      346            116                40                80
                  'quick_restart':      9      1    369      359            152                40                41
            'quick_restart_no_lp':     10      1    406      395            290               284             4'226
                  'reduced_costs':      8      0    357      349            122                41                58

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':         9'552     103'937            24'225     779'800       203'199     3'013
                     'default_lp':           114         655             5'812       8'221             0        24
                      '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':             0           0                 0           1             0         0
                         'max_lp':            49         618             3'241       2'838             0         8
                          'no_lp':         7'294      94'341            40'846     520'326             0     1'938
            'objective_lb_search':            87       1'727             1'008       2'875             0        12
                        'probing':             5          14               338         920             0         3
                   'pseudo_costs':            94         926             3'624       6'518             0        14
                  'quick_restart':            34         493             1'197       2'568             0         0
            'quick_restart_no_lp':         4'049      27'633            85'095     253'110             0     1'123
                  'reduced_costs':            42         275               716       2'559             0         7

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      356      2'165        0        44         276              20          0
                     'default_lp':      162      1'238        0         1           5               0          0
                      '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':       81        614        0         0           0               0          0
                         'max_lp':      161      1'239        0         0           0               0          0
                          'no_lp':      403      3'501        0        26         326             239          4
            'objective_lb_search':      161      1'226        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':      321      2'477        0         0           0               0          0
                  'quick_restart':      242      1'857        0         1           3               0          0
            'quick_restart_no_lp':    1'323      8'752        0        83         723             353         13
                  'reduced_costs':      161      1'234        0         0           0               0          0

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':       26             0          1         2'857        235              0        156          44            0          0        0           0      3'587    27'409     12'106
                     'default_lp':        0             0          0            23          0              0          1           1            0          0        0           0          0       286        150
                      '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             0          0              0          0           0            0          0        0           0          0         0          1
                         'max_lp':        0             0          0             8          0              0          0           0            0          0        0           0          0       120         61
                          'no_lp':      321            47          0         1'859         75              8         79          26            0          4        0           0          0    19'512      8'896
            'objective_lb_search':       72             0          0            12          0              0          0           0            0          0        0           0          0       195        100
                        'probing':        0             0          0             3          0              0          0           0            0          0        0           0          0        20         11
                   'pseudo_costs':       11             0          0            14          0              0          0           0            0          0        0           0          0       215        105
                  'quick_restart':        0             0          0             0          0              0          0           1            0          1        0           0          0        74         43
            'quick_restart_no_lp':      122             1          6         1'065         56              3         58          83            8         22        0           0          0    11'411      5'937
                  'reduced_costs':        0             0          0             7          0              0          0           0            0          0        0           0          0       160         66

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1       7'535        899      652        0       19
            'fs_random':          1           0          0        0        0        0
       'lb_tree_search':          1       6'518        450      202       30        0
               'max_lp':          1       4'245        461      263        8        3
  'objective_lb_search':          1       7'694        854      424        0        3
              'probing':          1       4'070      1'138      154        1        0
         'pseudo_costs':          1       7'777        914      413       73        4
        'quick_restart':          1       5'115        993      402        0        2
        'reduced_costs':          1       7'487        750      271       66       16

Lp dimension                 Final dimension of first component
           'default_lp':    561 rows, 669 columns, 4275 entries
            'fs_random':         0 rows, 669 columns, 0 entries
       'lb_tree_search':  1533 rows, 708 columns, 10005 entries
               'max_lp':    812 rows, 708 columns, 8006 entries
  'objective_lb_search':    635 rows, 669 columns, 6364 entries
              'probing':  1077 rows, 669 columns, 12508 entries
         'pseudo_costs':    723 rows, 708 columns, 6865 entries
        'quick_restart':    771 rows, 669 columns, 8590 entries
        'reduced_costs':    925 rows, 708 columns, 6705 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow    Bad  BadScaling
           'default_lp':          0            0     667         0  1'436           0
            'fs_random':          0            0       0         0      0           0
       'lb_tree_search':          0            0     231         0  4'419           0
               'max_lp':          0            0     273         0  4'758           0
  'objective_lb_search':          0            0     422         0  2'398           0
              'probing':          0            0     152         0  6'274           0
         'pseudo_costs':          0            0     485         0  2'863           0
        'quick_restart':          0            0     397         0  2'941           0
        'reduced_costs':          0            0     347         0  3'094           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        2'111       14      197       0        175      1            17    899/1'622
            'fs_random':        1'212        0        0       0          0      0             0          0/0
       'lb_tree_search':        1'816       43      175       0        152      7             4      450/764
               'max_lp':        1'827       39      274       0        239     16             6      461/814
  'objective_lb_search':        2'066       18      169       0        143      4             8    854/1'573
              'probing':        2'350       52        0       0          0     24            11  1'138/2'133
         'pseudo_costs':        2'280       28      227       0        174      4             8    914/1'575
        'quick_restart':        2'205       34      226       0        193      3            11    993/1'788
        'reduced_costs':        2'116       17      300       0        277      5             8    750/1'238

Lp Cut            probing  default_lp  max_lp  quick_restart  reduced_costs  pseudo_costs  lb_tree_search  objective_lb_search
          CG_FF:       11          15      12             11             13             7              10                   12
           CG_K:        5           8       6              6              9             3               6                    4
          CG_KL:        3           3       6              4              2             1               5                    4
           CG_R:       21           8      17             12             16             7              10                   22
          CG_RB:       58          26      20             30             20            31              29                   38
         CG_RBP:       25          16      11             13              6             4              10                   22
         Clique:        -           -       2              -              1             3               2                    -
             IB:      345         431       1            352            448           450               -                  335
       MIR_1_FF:       53          23      14             33             14            17              18                   33
        MIR_1_K:       21          13       1             17              3             2               -                   10
       MIR_1_KL:        8           3       1              5              -             -               -                    3
        MIR_1_R:        1           -       -              1              -             -               -                    -
       MIR_1_RB:       24          13       3             14             10            14               4                    8
      MIR_1_RBP:       11           8       1              5              2             4               1                    4
       MIR_2_FF:       59          30      31             48             11            30              24                   39
        MIR_2_K:       20          17       3             22              2             4               1                   10
       MIR_2_KL:        6           1       -              2              -             1               1                    1
        MIR_2_R:        2           3       3              3              -             3               -                    3
       MIR_2_RB:       38          23      26             24             10            35              23                   17
      MIR_2_RBP:       19          13       3             21              3             5               -                   16
       MIR_3_FF:       37          20      28             45             19            19              33                   31
        MIR_3_K:       17          15       4             21              -             3               1                   20
       MIR_3_KL:        1           4       8              2              -             1               1                    3
        MIR_3_R:        5           2       2              1              1             3               1                    -
       MIR_3_RB:       31          17      18             26             14            25              32                   18
      MIR_3_RBP:        6           9       3              5              1             5               3                    9
       MIR_4_FF:       24          21      24             19             14            19              19                   12
        MIR_4_K:       15           7       5             12              5            16               3                    6
       MIR_4_KL:        7           -       8              4              1             3               7                    1
        MIR_4_R:        -           1       3              1              2             2               1                    -
       MIR_4_RB:       19           8      22             17             16            22              16                    8
      MIR_4_RBP:       10           2       5              7              2             8               8                    2
       MIR_5_FF:       21           9      10             13              9            13              24                   13
        MIR_5_K:       16           8      11             13             12            10              12                   17
       MIR_5_KL:        7           2      11              1              4             5              12                    6
        MIR_5_R:        1           3       2              3              -             2               -                    -
       MIR_5_RB:        4           7      17             11              3            10              12                    4
      MIR_5_RBP:        8           7      10              8              7             5               8                    6
       MIR_6_FF:       10          10      10             15              7            11               5                   17
        MIR_6_K:        8           5       8             16              4             2               9                    8
       MIR_6_KL:        1           -       4              2              2             1               8                    4
        MIR_6_R:        -           1       2              3              -             1               1                    2
       MIR_6_RB:        -           5      12              4              7            12              11                    3
      MIR_6_RBP:        7           7      12              9              1             5               5                    5
   ZERO_HALF_FF:       18          11       6             17              3            20               4                   15
    ZERO_HALF_K:        1           2       -              2              1             4               -                    4
   ZERO_HALF_KL:        1           -       -              -              -             -               -                    -
    ZERO_HALF_R:      110          54      46             68             40            54              59                   50
   ZERO_HALF_RB:       16           6       5             14              2            11              10                    8
  ZERO_HALF_RBP:        7           2       4             11              3             1               1                    1

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           2/3     67%    7.21e-01       0.10
  'graph_cst_lns':           1/5     80%    8.80e-01       0.10
  'graph_dec_lns':           0/5     80%    8.80e-01       0.10
  'graph_var_lns':           3/4     75%    8.21e-01       0.10
   'lb_relax_lns':           3/3     67%    7.21e-01       0.50
      'rins/rens':           4/4     75%    8.08e-01       0.10
    'rnd_cst_lns':           0/5     80%    8.73e-01       0.10
    'rnd_var_lns':           1/5     80%    8.80e-01       0.10

LS stats                                    Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                             'fj_restart':        1                  1     1'433         0              0          0            577         20'116
  'fj_restart_decay_compound_perturb_obj':        1                  1         0     2'228            266        981             23         45'666
                   'ls_lin_restart_decay':        1                  1    21'713         0              0          0            935        395'622
          'ls_lin_restart_decay_compound':        1                  1         0    19'261          3'707      7'777             44        448'897
                 'ls_lin_restart_perturb':        1                  1    16'465         0              0          0          8'918        478'383
                       'ls_restart_decay':        2                  2    41'300         0              0          0          1'565        749'225
                     'ls_restart_perturb':        1                  1    17'731         0              0          0         23'268        532'838

Solutions (22)                              Num     Rank
                             'fj_restart':    2    [0,1]
  'fj_restart_decay_compound_perturb_obj':    2    [2,3]
                          'graph_arc_lns':    4   [3,20]
                          'graph_var_lns':    8   [6,21]
                       'lb_relax_lns_int':    4  [17,22]
                                  'no_lp':    6    [1,9]
                    'quick_restart_no_lp':   18   [4,19]

Objective bounds     Num
    'am1_presolve':    1
  'initial_domain':    1
  'lb_tree_search':   35
          'max_lp':    5
         'probing':    1
   'quick_restart':    1
   'reduced_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      1        0        1
      'best_solutions':     42       45       35
   'fj solution hints':      0        0        0
        'lp solutions':     14        5        9
                'pump':      0        0

Improving bounds shared    Num  Sym
            'default_lp':    1    0
        'lb_tree_search':   10    0
                'max_lp':    6    0
   'quick_restart_no_lp':    1    0

Clauses shared                      #Exported  #Imported  #BinaryRead  #BinaryTotal
                           'core':          1          0            6             6
                     'default_lp':          0          0            6             6
                      'fs_random':          0          0            0             6
                'fs_random_no_lp':          0          0            0             6
  'fs_random_quick_restart_no_lp':          0          0            0             6
                 'lb_tree_search':          0          0            4             6
                         'max_lp':          0          0            6             6
                          'no_lp':          0          0            6             6
            'objective_lb_search':          0          0            6             6
                        'probing':          0          0            0             6
                   'pseudo_costs':          3          0            6             6
                  'quick_restart':          0          0            6             6
            'quick_restart_no_lp':          2          0            6             6
                  'reduced_costs':          0          0            6             6

LRAT_status: NA
[Scaling] scaled_objective_bound: 1716.72 corrected_bound: 1716.72 delta: 1.57072e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1770.997626974857
best_bound: 1716.715093944239
integers: 688
booleans: 354
conflicts: 0
branches: 592
propagations: 6121
integer_propagations: 14992
restarts: 0
lp_iterations: 0
walltime: 1.00817
usertime: 1.00817
deterministic_time: 5.04195
gap_integral: 21.8876
solution_fingerprint: 0x4f143ad140900ab2

But the solution by HGSRouter can warmstart the MILPRouter.

[21]:
wfn.optimize(router=HGSRouter(time_limit=1))
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor                              1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor                           1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor                             1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]

Scaling to pure integer problem.
Num integers: 708/708 (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: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16

Initial optimization model 'optiwindnet': (model_fingerprint: 0x9ac6e6b079540f72)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)

Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
  1.78e-04s  0.00e+00d  [DetectDominanceRelations]
  5.17e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.42e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=185
  5.55e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.46e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000213283 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.024e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.5436e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.36e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.91e-03s  4.40e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  2.90e-04s  4.55e-04d  [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
  2.04e-04s  0.00e+00d  [DetectDominanceRelations]
  2.26e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  6.48e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  8.45e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.69e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.42e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.25e-05s  0.00e+00d  [DetectDifferentVariables]
  8.45e-04s  8.61e-05d  [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
  1.03e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.56e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.28e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.21e-04s  1.02e-04d  [FindBigAtMostOneAndLinearOverlap]
  7.30e-05s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.15e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.09e-06s  0.00e+00d  [MergeClauses]
  1.51e-04s  0.00e+00d  [DetectDominanceRelations]
  2.73e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.49e-04s  0.00e+00d  [DetectDominanceRelations]
  1.59e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.06e-05s  0.00e+00d  [DetectDuplicateColumns]
  5.85e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000191454 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.018e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.4188e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  7.06e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.86e-03s  1.26e-03d  [Probe] #probed=708
  2.25e-04s  3.09e-04d  [MaxClique]
  1.94e-04s  0.00e+00d  [DetectDominanceRelations]
  1.45e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  9.62e-05s  0.00e+00d  [ProcessAtMostOneAndLinear]
  8.40e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.98e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.10e-04s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.15e-05s  0.00e+00d  [DetectDifferentVariables]
  9.87e-05s  4.19e-06d  [ProcessSetPPC] #relevant_constraints=223
  1.01e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.83e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.45e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.22e-04s  9.83e-05d  [FindBigAtMostOneAndLinearOverlap]
  7.68e-05s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.21e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.25e-06s  0.00e+00d  [MergeClauses]
  2.73e-04s  0.00e+00d  [DetectDominanceRelations]
  1.77e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  4.92e-06s  0.00e+00d  [MergeNoOverlap]
  2.78e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.17e-04s  0.00e+00d  [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 81 times.
  - rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 157 times.
  - rule 'deductions: 708 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 354 times.
  - rule 'linear2: contains a boolean' was applied 354 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
  - rule 'linear: positive at most one' was applied 145 times.
  - rule 'linear: positive equal one' was applied 40 times.
  - rule 'objective: shifted cost with exactly ones' was applied 40 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 40 times.
  - rule 'setppc: reduced linear coefficients' was applied 39 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 354 times.
  - rule 'variables: detect half reified value encoding' was applied 708 times.

Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1b7033387a045912)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.00019191 dtime: 0.00044822

Preloading model.
#Bound   0.04s best:inf   next:[1364.00132,11449.6914] initial_domain
#1       0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model   0.04s var:708/708 constraints:1012/1012

Starting search at 0.04s 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]

#Bound   0.05s best:1765.33376 next:[1396.24224,1765.33376] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#Bound   0.05s best:1765.33376 next:[1464.81361,1765.33376] quick_restart
#Bound   0.05s best:1765.33376 next:[1471.69595,1765.33376] reduced_costs
#Bound   0.06s best:1765.33376 next:[1672.91324,1765.33376] max_lp
#Bound   0.11s best:1765.33376 next:[1688.52481,1765.33376] max_lp
#Bound   0.12s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Model   0.12s var:696/708 constraints:998/1012
#Bound   0.21s best:1765.33376 next:[1691.04831,1765.33376] lb_tree_search
#Bound   0.22s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound   0.28s best:1765.33376 next:[1696.19909,1765.33376] lb_tree_search
#Bound   0.31s best:1765.33376 next:[1696.79789,1765.33376] max_lp
#Model   0.38s var:678/708 constraints:979/1012
#Bound   0.48s best:1765.33376 next:[1705.54961,1765.33376] lb_tree_search
#Bound   0.48s best:1765.33376 next:[1706.18107,1765.33376] lb_tree_search
#Model   0.55s var:672/708 constraints:973/1012
#Bound   0.67s best:1765.33376 next:[1712.47138,1765.33376] lb_tree_search
#Model   0.67s var:648/708 constraints:948/1012
#Bound   0.68s best:1765.33376 next:[1712.58595,1765.33376] lb_tree_search
#Model   0.81s var:646/708 constraints:946/1012
#Bound   0.86s best:1765.33376 next:[1715.35068,1765.33376] lb_tree_search
#Bound   0.87s best:1765.33376 next:[1715.4155,1765.33376] lb_tree_search
#Model   0.89s var:642/708 constraints:941/1012

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [968.64ms, 968.64ms] 968.64ms   0.00ns 968.64ms         2 [  1.32ms, 730.34ms] 365.83ms 364.51ms 731.66ms
                     'default_lp':         1 [962.70ms, 962.70ms] 962.70ms   0.00ns 962.70ms         2 [ 22.88ms, 295.30ms] 159.09ms 136.21ms 318.18ms
               'feasibility_pump':         7 [ 35.63us,  20.96ms]   3.69ms   7.16ms  25.81ms         2 [141.93us,  12.34ms]   6.24ms   6.10ms  12.48ms
                             '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':         4 [  7.01ms, 378.10ms] 110.99ms 154.52ms 443.96ms         3 [  1.26ms, 100.06ms]  34.85ms  46.12ms 104.54ms
                  'graph_cst_lns':         5 [  6.25ms, 383.50ms] 117.57ms 147.00ms 587.86ms         4 [ 45.28us, 100.02ms]  34.74ms  40.88ms 138.98ms
                  'graph_dec_lns':         5 [  2.65ms,  44.15ms]  18.92ms  14.85ms  94.59ms         5 [ 10.00ns,   4.36ms]   1.01ms   1.69ms   5.03ms
                  'graph_var_lns':         5 [  7.05ms, 342.11ms]  90.16ms 126.99ms 450.79ms         5 [  2.16us, 100.02ms]  22.12ms  39.05ms 110.59ms
                   'lb_relax_lns':         4 [  6.35ms, 584.83ms] 204.93ms 223.72ms 819.70ms         3 [ 16.33ms, 177.24ms]  71.27ms  74.95ms 213.80ms
                 'lb_tree_search':         1 [967.56ms, 967.56ms] 967.56ms   0.00ns 967.56ms         2 [ 39.96ms,  96.44ms]  68.20ms  28.24ms 136.39ms
                             'ls':         3 [ 15.44ms, 218.71ms] 141.61ms  89.95ms 424.84ms         3 [  8.25ms, 100.01ms]  69.42ms  43.26ms 208.26ms
                         'ls_lin':         4 [286.09us, 186.12ms] 137.89ms  79.47ms 551.54ms         4 [107.30us, 100.01ms]  75.03ms  43.26ms 300.12ms
                         'max_lp':         1 [961.48ms, 961.48ms] 961.48ms   0.00ns 961.48ms         2 [ 44.93ms, 305.87ms] 175.40ms 130.47ms 350.80ms
                          'no_lp':         1 [962.25ms, 962.25ms] 962.25ms   0.00ns 962.25ms         2 [  1.57ms, 332.11ms] 166.84ms 165.27ms 333.68ms
            'objective_lb_search':         1 [961.52ms, 961.52ms] 961.52ms   0.00ns 961.52ms         2 [ 21.20ms, 283.00ms] 152.10ms 130.90ms 304.20ms
                        'probing':         1 [967.93ms, 967.93ms] 967.93ms   0.00ns 967.93ms         2 [ 18.34ms, 203.38ms] 110.86ms  92.52ms 221.72ms
                   'pseudo_costs':         1 [961.76ms, 961.76ms] 961.76ms   0.00ns 961.76ms         2 [  9.35ms, 252.38ms] 130.86ms 121.51ms 261.73ms
                  'quick_restart':         1 [961.11ms, 961.11ms] 961.11ms   0.00ns 961.11ms         2 [ 20.28ms, 318.51ms] 169.39ms 149.12ms 338.79ms
            'quick_restart_no_lp':         1 [961.80ms, 961.80ms] 961.80ms   0.00ns 961.80ms         2 [  1.57ms, 430.77ms] 216.17ms 214.60ms 432.34ms
                  'reduced_costs':         1 [962.20ms, 962.20ms] 962.20ms   0.00ns 962.20ms         2 [ 10.41ms, 271.09ms] 140.75ms 130.34ms 281.49ms
                      'rins/rens':         4 [  6.33ms, 369.62ms] 155.49ms 153.39ms 621.96ms         3 [517.50us, 100.03ms]  54.60ms  41.09ms 163.81ms
                    'rnd_cst_lns':         5 [  4.21ms, 108.56ms]  47.78ms  41.09ms 238.92ms         5 [ 10.00ns,  16.91ms]   6.63ms   7.48ms  33.15ms
                    'rnd_var_lns':         6 [  3.90ms, 339.69ms]  86.08ms 121.44ms 516.50ms         5 [ 10.00ns,  96.00ms]  24.65ms  37.05ms 123.27ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    389     15'179    44'176        29            2'512     17'727     494'488        901'575
                     'default_lp':    375        152     2'413         1            1'359      1'633      19'417         64'702
                      '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':    354          0     9'480         0            5'006      5'883      53'640        139'028
                         'max_lp':    354         59     2'193         1            1'300      1'497      15'177         51'382
                          'no_lp':    354      9'731    23'640        73            3'701     13'748     529'119      1'688'715
            'objective_lb_search':    369        165     2'377         1            1'362      1'642      20'292         68'887
                        'probing':    375         11       867         0              793        804       8'563         22'093
                   'pseudo_costs':    354        256     2'504         1            1'373      1'729      25'285         90'722
                  'quick_restart':    356         53     4'952         4            2'713      3'096      33'078        112'632
            'quick_restart_no_lp':    398      6'391    64'614       563            5'569     12'782     428'395      1'403'297
                  'reduced_costs':    354        190     4'647         2            1'955      2'394      27'029         98'183

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     30      0    389      359            400             1'521             5'929
                     'default_lp':     15      0    375      360            218                45               113
                      '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':     33      0    354      321            228                40                 0
                         'max_lp':     31      0    354      323            224                40                48
                          'no_lp':     33      0    354      321            174               205             5'316
            'objective_lb_search':     16      0    369      353            196                51                83
                        'probing':     19      0    375      356            450                40                11
                   'pseudo_costs':     13      0    354      341            138                40               217
                  'quick_restart':     33      0    356      323            238                55                30
            'quick_restart_no_lp':     36      1    398      361            368               258             4'367
                  'reduced_costs':     30      0    354      324            220                48               151

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':        12'170      98'308           105'449     618'416       160'397     3'829
                     'default_lp':           138       2'602             3'943       6'258             0        33
                      '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':             0           0                 0           0             0         0
                         'max_lp':            45         681             1'221       4'630             0        11
                          'no_lp':         8'307     101'995            39'633     397'988             0     2'982
            'objective_lb_search':           156       4'714             2'152       4'174             0        39
                        'probing':            10         242               471         937             0         0
                   'pseudo_costs':           189       2'311             8'077      12'459             0        39
                  'quick_restart':            51       1'020             1'184       2'330             0         8
            'quick_restart_no_lp':         4'580      33'372            78'056     270'989             0     1'217
                  'reduced_costs':           111       1'107             2'412       6'946             0        28

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      350      2'513        0        25         218              79          0
                     'default_lp':       81        600        0         0           0               0          0
                      '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':      561      4'051        0         0           0               0          0
                         'max_lp':       81        568        0         0           0               0          0
                          'no_lp':      625      4'703        0        27         326             319          1
            'objective_lb_search':       84        660        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':       81        605        0         0           0               0          0
                  'quick_restart':      276      1'988        0         0           1              25          0
            'quick_restart_no_lp':    1'592     11'650        0       150       1'398             866         17
                  'reduced_costs':      167      1'212        0         3          17               9          0

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':       69             4          0         3'707        234              0        122          25            0         99        0           0      3'464    37'042     15'179
                     'default_lp':        0             0          0            30          0              0          3           0            0          0        0           0          0       297        152
                      '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             0          0              0          0           0            0          0        0           0          0         0          0
                         'max_lp':        0             0          0             9          0              0          2           0            0          0        0           0          0       116         59
                          'no_lp':      817           108          0         2'864         82             46        118          27            0        182        0           0          0    21'974      9'731
            'objective_lb_search':       30             0          0            36          0              1          3           0            0          0        0           0          0       303        165
                        'probing':        0             0          0             0          0              0          0           0            0          0        0           0          0        18         11
                   'pseudo_costs':        0             0          0            38          0              0          1           0            0          0        0           0          0       516        256
                  'quick_restart':        0             0          0             8          0              0          0           0            0          0        0           0          0        61         53
            'quick_restart_no_lp':      256             1          6         1'126         64             10         91         150           16         22        0           0          0    12'892      6'391
                  'reduced_costs':        0             0          0            25          0              0          3           3            0          0        0           0          0       449        190

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1       8'982        697      594        1       12
       'lb_tree_search':          1       1'778        590       58        2        0
               'max_lp':          1       5'144        459      257       21        5
  'objective_lb_search':          1       9'096        681      628        1        5
              'probing':          1       3'813      1'389      135        0        0
         'pseudo_costs':          1      10'847        627      708      126       25
        'quick_restart':          1       6'736        932      273        2        1
        'reduced_costs':          1       9'672        640      461       96       49

Lp dimension                 Final dimension of first component
           'default_lp':    523 rows, 669 columns, 3149 entries
       'lb_tree_search':  1552 rows, 708 columns, 12617 entries
               'max_lp':    795 rows, 708 columns, 7572 entries
  'objective_lb_search':    459 rows, 669 columns, 2715 entries
              'probing':  1107 rows, 669 columns, 12319 entries
         'pseudo_costs':    472 rows, 708 columns, 2252 entries
        'quick_restart':    934 rows, 669 columns, 9354 entries
        'reduced_costs':    623 rows, 708 columns, 3264 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
           'default_lp':          0            0     600         0     714           0
       'lb_tree_search':          0            9      60         0  11'615           0
               'max_lp':          0            1     283         0   4'921           0
  'objective_lb_search':          0            0     629         0     787           0
              'probing':          0            0     131         0   7'606           0
         'pseudo_costs':          0            0     849         0     310           0
        'quick_restart':          0            0     273         0   3'754           0
        'reduced_costs':          0            0     601         0     944           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        1'909        5      318       0        295      2            11    697/1'243
       'lb_tree_search':        1'956      149    1'057       0        823     19            14    590/1'057
               'max_lp':        1'825       48      823       0        671     10            14      459/790
  'objective_lb_search':        1'893        3      321       0        303      0             9    681/1'158
              'probing':        2'601       90    1'140       0        783     29            68  1'389/2'468
         'pseudo_costs':        1'993        0      149       0        149      0             0    627/1'010
        'quick_restart':        2'144       48      579       0        472      4            24    932/1'743
        'reduced_costs':        2'006        0      451       0        384      0            13    640/1'146

Lp Cut            default_lp  max_lp  quick_restart  reduced_costs  pseudo_costs  objective_lb_search  lb_tree_search  probing
          CG_FF:          10       8             14              2             6                    9               7       22
           CG_K:           5       4              5              2             -                    5               4       10
          CG_KL:           5       6              2              -             -                    3               5        5
           CG_R:          12      15             18              8             7                    8               6       43
          CG_RB:          18      23             40             13             9                   18              26       62
         CG_RBP:          11      13             21              3             -                    8               7       34
         Clique:           -       2              -              3             -                    -               6        -
             IB:         397       5            363            441           510                  369               -      359
       MIR_1_FF:          22      19             36              3             5                   12              24       84
        MIR_1_K:          11       1              8              2             2                    6               2       21
       MIR_1_KL:           3       4             12              1             -                    5               1       18
        MIR_1_R:           -       -              -              -             -                    -               -        1
       MIR_1_RB:           6       2             12              4             4                    9               8       26
      MIR_1_RBP:           4       2              9              1             3                    6               1       22
       MIR_2_FF:          18      28             42              9             7                   27              35       71
        MIR_2_K:           7       1             20              3             -                    8               5       29
       MIR_2_KL:           -       1              2              -             -                    1               2        6
        MIR_2_R:           2       3              5              1             1                    2               1        2
       MIR_2_RB:           9      21             28              8             9                   12              27       45
      MIR_2_RBP:           7       1             11              2             1                   10               1       24
       MIR_3_FF:           8      27             31              6            11                   12              43       58
        MIR_3_K:           9       5             17              1             2                    9               7       17
       MIR_3_KL:           1       3              2              -             -                    2               3        2
        MIR_3_R:           1       2              1              2             -                    -               -        2
       MIR_3_RB:          13      22             18             13             5                   13              25       34
      MIR_3_RBP:           3       5              8              3             3                    3               4       18
       MIR_4_FF:           8      30             19              1             4                    6              27       27
        MIR_4_K:          14       8              4              3             1                    3              12       17
       MIR_4_KL:           -       9              2              4             2                    1              14        8
        MIR_4_R:           -       3              1              1             1                    1               2        1
       MIR_4_RB:           8      15             12              9             2                    4              15       14
      MIR_4_RBP:           2       9              4              2             -                    1               9       14
       MIR_5_FF:           5      16              7              7             1                   11              30       18
        MIR_5_K:           5      14              7              3             2                   10              18       23
       MIR_5_KL:           2       8              5              3             -                    2              14       10
        MIR_5_R:           -       -              -              2             2                    1               -        4
       MIR_5_RB:           8      15              7              5             2                    7               9       14
      MIR_5_RBP:           5       4              7              4             2                    4              12       10
       MIR_6_FF:           2      13              8              1             3                    7              23       20
        MIR_6_K:           3       7             10              3             1                    4              15       18
       MIR_6_KL:           1       3              4              3             1                    1               8        9
        MIR_6_R:           -       1              -              -             -                    -               3        1
       MIR_6_RB:           2       7              5              9             2                    5              12        3
      MIR_6_RBP:           2       5              5              4             -                    2              13        9
   ZERO_HALF_FF:           7       7             15              6             2                   11               5       14
    ZERO_HALF_K:           2       -              4              1             2                    1               -        -
   ZERO_HALF_KL:           -       2              3              -             -                    -               -        -
    ZERO_HALF_R:          32      54             67             31             7                   32              85      119
   ZERO_HALF_RB:           1       4              6              6             5                    3              11       15
  ZERO_HALF_RBP:           6       2              5              1             -                    7               3        6

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           0/3     67%    7.21e-01       0.10
  'graph_cst_lns':           0/4     75%    8.21e-01       0.10
  'graph_dec_lns':           0/5     80%    8.80e-01       0.10
  'graph_var_lns':           0/5     60%    7.48e-01       0.10
   'lb_relax_lns':           0/3     67%    7.21e-01       0.50
      'rins/rens':           0/3     67%    7.21e-01       0.10
    'rnd_cst_lns':           0/5     80%    8.80e-01       0.10
    'rnd_var_lns':           0/5    100%    9.39e-01       0.10

LS stats                                Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
                     'ls_lin_restart':        2                  2    34'758         0              0          0         32'205        800'474
    'ls_lin_restart_compound_perturb':        1                  1         0        12              0          6              0            145
             'ls_lin_restart_perturb':        1                  1    16'719         0              0          0         22'408        475'427
                         'ls_restart':        1                  1     1'559         0              0          0            659         40'595
                   'ls_restart_decay':        1                  1    20'803         0              0          0            761        395'626
  'ls_restart_decay_compound_perturb':        1                  1         0    21'651          3'724      8'960             48        515'399

Solutions (1)       Num   Rank
  'complete_hint':    2  [0,1]

Objective bounds     Num
    'am1_presolve':    1
  'initial_domain':    1
  'lb_tree_search':    9
          'max_lp':    4
   'quick_restart':    1
   'reduced_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      0        0        0
      'best_solutions':      2       49        2
   'fj solution hints':      0        0        0
        'lp solutions':     19        4       14
                'pump':      0        0

Improving bounds shared    Num  Sym
        'lb_tree_search':   52    0
                'max_lp':   16    0
               'probing':    2    0
   'quick_restart_no_lp':    2    0

Clauses shared            #Exported  #Imported  #BinaryRead  #BinaryTotal
                 'core':          0          0           18            86
           'default_lp':          0          0           14            86
       'lb_tree_search':          0          0           18            86
               'max_lp':          0          0           18            86
                'no_lp':          4          0           18            86
  'objective_lb_search':          0          0           14            86
              'probing':         79          0           10            86
         'pseudo_costs':          0          0           10            86
        'quick_restart':          0          0           18            86
  'quick_restart_no_lp':          3          0           18            86
        'reduced_costs':          0          0           18            86

LRAT_status: NA
[Scaling] scaled_objective_bound: 1715.42 corrected_bound: 1715.42 delta: 1.5858e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1715.415500957352
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.0109
usertime: 1.0109
deterministic_time: 5.13197
gap_integral: 20.4665
solution_fingerprint: 0x7cfd54e085bf6326

🧮 What is SolverOptions?¶

SolverOptions refers to solver-specific configuration parameters that affect how the solver works internally (once the model is already built).

These settings are typically passed directly to a solver like CPLEX, Gurobi, CBC, etc., and influence:

* Search strategy
* Runtime limits
* Optimality tolerances
* Logging and precision settings

✅ Common SolverOptions for MILPRouter:¶

Parameter

Description

time_limit

Maximum allowed solve time (in seconds)

gap

Optimality tolerance (e.g., 0.01 for 1% gap)

mip_emphasis

Prioritize bound quality, feasibility, or integrality

threads

Number of threads to use

After initializing the router, OptiWindNet sets a set of default options internally to match OptiWindNet’s preferred values.

You can see the solveroptions modified by OptiWindNet after creating an instance of the MILPRouter via:

router.optiwindnet_default_options

If desired, set the logging level to INFO before running ``.optimize()`` with the MILPRouter to display detailed messages about the solver configuration:

import logging
logging.basicConfig(level=logging.INFO)
[22]:
milp_router_ortools = MILPRouter(solver_name='ortools.cp_sat', time_limit=15, mip_gap=0.01)
milp_router_ortools.optiwindnet_default_options
[22]:
{}
[23]:
milp_router_cplex = MILPRouter(solver_name='cplex', time_limit=15, mip_gap=0.01)
milp_router_cplex.optiwindnet_default_options
[23]:
{'parallel': -1, 'emphasis_mip': 4}
[24]:
milp_router_cbc = MILPRouter(solver_name='cbc', time_limit=15, mip_gap=0.01)
milp_router_cbc.optiwindnet_default_options
[24]:
{'threads': 8,
 'timeMode': 'elapsed',
 'nodeStrategy': 'downFewest',
 'Dins': 'on',
 'VndVariableNeighborhoodSearch': 'on',
 'Rens': 'on',
 'Rins': 'on',
 'pivotAndComplement': 'off',
 'proximitySearch': 'off',
 'gomoryCuts': 'on',
 'mixedIntegerRoundingCuts': 'on',
 'flowCoverCuts': 'on',
 'cliqueCuts': 'off',
 'twoMirCuts': 'off',
 'knapsackCuts': 'off',
 'probingCuts': 'off',
 'zeroHalfCuts': 'off',
 'liftAndProjectCuts': 'off',
 'residualCapacityCuts': 'off'}
[25]:
milp_router_gurobi = MILPRouter(solver_name='gurobi', time_limit=15, mip_gap=0.01)
milp_router_gurobi.optiwindnet_default_options
[25]:
{'mipfocus': 1}
[26]:
milp_router_highs = MILPRouter(solver_name='highs', time_limit=15, mip_gap=0.01)
milp_router_highs.optiwindnet_default_options
[26]:
{}
[27]:
milp_router_scip = MILPRouter(solver_name='scip', time_limit=15, mip_gap=0.01)
milp_router_scip.optiwindnet_default_options
[27]:
{'parallel/maxnthreads': 8,
 'concurrent/scip-feas/prefprio': 0.6,
 'concurrent/scip/prefprio': 0.3,
 'concurrent/scip-cpsolver/prefprio': 0,
 'concurrent/scip-easycip/prefprio': 0,
 'concurrent/scip-opti/prefprio': 0}

This attribute only reflects the options explicitly modified by OptiWindNet during initialization. solvers in MILPRouter typically support a much larger set of configurable options, which we can also adjust separately. For a complete list of available options for each MILP solver, please refer to the corresponding solver’s official documentation or user manual. For example, in the case of the CBC solver, we can refer to its full list of options here: http://www.decom.ufop.br/haroldo/files/cbcCommandLine.pdf

Note: Modifying any of the options originally set by OptiWindNet will not change the values stored in optiwindnet_default_options. However, the updated values will be used when solving the optimization problem.

Solver options (including those set by OptiWindNet as well as additional configurable parameters) can be modified by creating a dictionary and passing it to the router. The same approach applies to model options.

[28]:
solver_options=dict(
    num_workers = 5,
)

wfn.optimize(router=MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=1,
    mip_gap=0.01,
    solver_options=solver_options,
    verbose=True,
))
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor                           1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor                             1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor                              1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor        1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]

Scaling to pure integer problem.
Num integers: 708/708 (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: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01 num_workers: 5

Initial optimization model 'optiwindnet': (model_fingerprint: 0x797dc3582745efd1)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)

Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
  1.77e-04s  0.00e+00d  [DetectDominanceRelations]
  4.30e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.23e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  8.84e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.59e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000269544 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.9098e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.4976e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.59e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.40e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  4.99e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  1.92e-04s  0.00e+00d  [DetectDominanceRelations]
  2.12e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.48e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  6.67e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.38e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.68e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.62e-05s  0.00e+00d  [DetectDifferentVariables]
  8.18e-04s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  9.11e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.86e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.53e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.29e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  8.41e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.72e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.75e-06s  0.00e+00d  [MergeClauses]
  1.75e-04s  0.00e+00d  [DetectDominanceRelations]
  3.22e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  4.25e-04s  0.00e+00d  [DetectDominanceRelations]
  1.62e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  4.11e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.05e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000189514 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.891e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6549e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  7.44e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.72e-03s  1.27e-03d  [Probe] #probed=708
  4.32e-04s  1.45e-04d  [MaxClique]
  1.95e-04s  0.00e+00d  [DetectDominanceRelations]
  1.69e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.48e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  7.13e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.98e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.98e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.07e-05s  0.00e+00d  [DetectDifferentVariables]
  7.46e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  7.31e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.57e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.56e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.18e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  7.90e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.39e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  8.66e-06s  0.00e+00d  [MergeClauses]
  2.06e-04s  0.00e+00d  [DetectDominanceRelations]
  2.03e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.65e-06s  0.00e+00d  [MergeNoOverlap]
  2.99e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.39e-04s  0.00e+00d  [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40

Presolve summary:
  - 0 affine relations were detected.
  - rule 'TODO linear inclusion: superset is equality' was applied 81 times.
  - rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
  - rule 'at_most_one: transformed into max clique' was applied 1 time.
  - rule 'bool_or: implications' was applied 157 times.
  - rule 'deductions: 708 stored' was applied 1 time.
  - rule 'linear + amo: extracted enforcement literal' was applied 354 times.
  - rule 'linear2: contains a boolean' was applied 354 times.
  - rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
  - rule 'linear: positive at most one' was applied 105 times.
  - rule 'linear: positive equal one' was applied 40 times.
  - rule 'objective: shifted cost with exactly ones' was applied 40 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 40 times.
  - rule 'setppc: reduced linear coefficients' was applied 39 times.
  - rule 'setppc: removed trivial linear constraint' was applied 1 time.
  - rule 'variables: detect fully reified value encoding' was applied 354 times.
  - rule 'variables: detect half reified value encoding' was applied 708 times.

Presolved optimization model 'optiwindnet': (model_fingerprint: 0xf807134f56ab71c3)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
  - 354 Booleans in [0,1]
  - 314 in [0,4]
  - 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000224917 dtime: 0.00043646

Preloading model.
#Bound   0.04s best:inf   next:[1364.00132,11449.6914] initial_domain
#1       0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model   0.04s var:708/708 constraints:972/972

Starting search at 0.04s with 5 workers.
3 full problem subsolvers: [core, default_lp, no_lp]
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.04s best:1765.33376 next:[1377.09321,1765.33376] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#Bound   0.05s best:1765.33376 next:[1439.63944,1765.33376] default_lp
#2       0.05s best:1760.06663 next:[1439.63944,1760.06663] graph_cst_lns (d=5.00e-01 s=7 t=0.10 p=0.00 stall=0 h=base)
#3       0.07s best:1758.41439 next:[1439.63944,1758.41439] graph_var_lns (d=7.07e-01 s=13 t=0.10 p=1.00 stall=1 h=base)
#Bound   0.09s best:1758.41439 next:[1485.28171,1758.41439] default_lp
#Bound   0.11s best:1758.41439 next:[1626.81799,1758.41439] default_lp
#Bound   0.11s best:1758.41439 next:[1635.75544,1758.41439] default_lp
#Bound   0.12s best:1758.41439 next:[1641.34643,1758.41439] default_lp
#Bound   0.14s best:1758.41439 next:[1651.76223,1758.41439] default_lp
#Model   0.14s var:706/708 constraints:969/972
#Bound   0.28s best:1758.41439 next:[1657.95701,1758.41439] default_lp
#Bound   0.31s best:1758.41439 next:[1667.18806,1758.41439] default_lp
#Model   0.34s var:702/708 constraints:965/972

Task timing                   n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
              'core':         1 [961.99ms, 961.99ms] 961.99ms   0.00ns 961.99ms         2 [  1.31ms, 783.70ms] 392.51ms 391.19ms 785.01ms
        'default_lp':         1 [962.13ms, 962.13ms] 962.13ms   0.00ns 962.13ms         2 [ 20.78ms, 504.19ms] 262.49ms 241.70ms 524.97ms
  'feasibility_pump':         4 [ 19.97us,  12.41ms]   3.72ms   5.06ms  14.90ms         2 [145.79us,  11.26ms]   5.70ms   5.56ms  11.41ms
                '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':         4 [  9.12ms, 198.17ms] 110.69ms  75.67ms 442.76ms         4 [236.07us, 100.05ms]  56.14ms  44.70ms 224.57ms
     'graph_cst_lns':         4 [  5.98ms, 210.10ms]  75.76ms  82.49ms 303.03ms         4 [ 49.37us, 100.03ms]  32.49ms  40.71ms 129.97ms
     'graph_dec_lns':         4 [  1.26ms, 177.39ms]  47.82ms  74.87ms 191.27ms         4 [ 10.00ns, 100.06ms]  25.07ms  43.29ms 100.28ms
     'graph_var_lns':         4 [  1.77ms,  66.90ms]  24.71ms  25.55ms  98.83ms         4 [ 10.00ns,  26.49ms]   7.96ms  10.92ms  31.83ms
                'ls':         4 [ 82.49ms, 103.68ms]  96.38ms   8.36ms 385.52ms         4 [100.00ms, 100.01ms] 100.01ms   1.46us 400.02ms
             'no_lp':         1 [961.58ms, 961.58ms] 961.58ms   0.00ns 961.58ms         2 [  1.57ms, 722.46ms] 362.01ms 360.45ms 724.02ms
         'rins/rens':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
       'rnd_cst_lns':         5 [  3.17ms, 174.13ms]  42.70ms  65.93ms 213.50ms         4 [ 23.00ns,  94.47ms]  24.42ms  40.47ms  97.67ms
       'rnd_var_lns':         5 [  2.93ms, 193.17ms]  52.19ms  71.91ms 260.97ms         5 [ 10.00ns, 100.05ms]  23.26ms  38.74ms 116.31ms

Search stats          Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
             'core':    365     26'589    58'832        91            1'661     28'001     826'673      1'859'068
       'default_lp':    376        367     5'551         2            2'840      3'476      31'963        144'211
  'fs_random_no_lp':      0          0         0         0                0          0           0              0
            'no_lp':    354     17'193    35'484        92            3'879     21'190     909'632      2'994'487

SAT formula           Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
             'core':      3      0    365      362            112               128             8'938
       'default_lp':      3      0    376      373            156                42               307
  'fs_random_no_lp':      0      0      0        0              0                 0                 0
            'no_lp':      3      0    354      351             84                84             8'313

SAT stats             ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
             'core':        22'728     365'049            43'486   1'496'075       493'154     9'133
       'default_lp':           317       4'378             8'939      18'680             0        56
  'fs_random_no_lp':             0           0                 0           0             0         0
            'no_lp':        14'045     170'345            81'195     815'177       167'815     4'679

Vivification          Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
             'core':      111        711        0         0           0              10          0
       'default_lp':      245      1'903        0         1          25               0          0
  'fs_random_no_lp':        0          0        0         0           0               0          0
            'no_lp':      658      4'984        0        43         484             353          3

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         8'068        339              0      1'065           0            0          0        0           0      8'101    61'204     26'589
       'default_lp':        0             0          0            52          1              0          4           1            0          0        0           0          0       762        367
  'fs_random_no_lp':        0             0          0             0          0              0          0           0            0          0        0           0          0         0          0
            'no_lp':       14             0          0         4'512        191             68        167          43            0        192        0           0      3'591    39'211     17'193

Lp stats         Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
  'default_lp':          1      15'379      1'038    1'206        0       73

Lp dimension      Final dimension of first component
  'default_lp':  468 rows, 669 columns, 3326 entries

Lp debug         CutPropag  CutEqPropag  Adjust  Overflow    Bad  BadScaling
  'default_lp':          0            0   1'273         0  1'765           0

Lp pool          Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
  'default_lp':        2'210       11       70       0         58      4            48  1'038/2'008

Lp Cut            default_lp
          CG_FF:          24
           CG_K:           6
          CG_KL:           3
           CG_R:          15
          CG_RB:          34
         CG_RBP:          22
             IB:         421
       MIR_1_FF:          30
        MIR_1_K:          15
       MIR_1_KL:           4
        MIR_1_R:           1
       MIR_1_RB:          15
      MIR_1_RBP:           6
       MIR_2_FF:          47
        MIR_2_K:          17
       MIR_2_KL:           6
        MIR_2_R:           4
       MIR_2_RB:          30
      MIR_2_RBP:          22
       MIR_3_FF:          20
        MIR_3_K:          10
       MIR_3_KL:           6
        MIR_3_R:           3
       MIR_3_RB:          17
      MIR_3_RBP:           6
       MIR_4_FF:          20
        MIR_4_K:          12
       MIR_4_KL:           5
        MIR_4_R:           3
       MIR_4_RB:          15
      MIR_4_RBP:          12
       MIR_5_FF:           9
        MIR_5_K:          12
       MIR_5_KL:           8
        MIR_5_R:           1
       MIR_5_RB:           6
      MIR_5_RBP:           6
       MIR_6_FF:           7
        MIR_6_K:           4
       MIR_6_KL:           1
        MIR_6_R:           4
       MIR_6_RB:           9
      MIR_6_RBP:           4
   ZERO_HALF_FF:          17
    ZERO_HALF_K:          12
   ZERO_HALF_KL:           3
    ZERO_HALF_R:          68
   ZERO_HALF_RB:          11
  ZERO_HALF_RBP:           5

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           1/4     50%    5.97e-01       0.10
  'graph_cst_lns':           1/4     75%    8.21e-01       0.10
  'graph_dec_lns':           0/4     75%    8.21e-01       0.10
  'graph_var_lns':           1/4    100%    9.14e-01       0.10
      'rins/rens':           0/0      0%    5.00e-01       0.10
    'rnd_cst_lns':           0/4    100%    9.14e-01       0.10
    'rnd_var_lns':           0/5     60%    7.48e-01       0.10

LS stats                                Batches  Restarts/Perturbs  LinMoves  GenMoves  CompoundMoves  Bactracks  WeightUpdates  ScoreComputed
        'ls_restart_compound_perturb':        1                  1         0    22'852          2'245     10'300            110        520'367
                   'ls_restart_decay':        1                  1    21'061         0              0          0            813        406'510
  'ls_restart_decay_compound_perturb':        1                  1         0    21'284          3'490      8'896             38        502'525
                 'ls_restart_perturb':        1                  1    16'755         0              0          0         13'651        518'173

Solutions (3)       Num   Rank
  'complete_hint':    2  [0,1]
  'graph_cst_lns':    2  [1,2]
  'graph_var_lns':    2  [2,3]

Objective bounds     Num
    'am1_presolve':    1
      'default_lp':    8
  'initial_domain':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      1        0        1
      'best_solutions':      6       30        5
   'fj solution hints':      0        0        0
        'lp solutions':      0        0        0
                'pump':      0        0

Improving bounds shared    Num  Sym
            'default_lp':    6    0

Clauses shared    #Exported  #Imported  #BinaryRead  #BinaryTotal
         'core':          0          0            0             0
   'default_lp':          0          0            0             0
        'no_lp':          0          0            0             0

LRAT_status: NA
[Scaling] scaled_objective_bound: 1667.19 corrected_bound: 1667.19 delta: 9.35979e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1667.18805409741
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00281
usertime: 1.00281
deterministic_time: 3.15208
gap_integral: 14.3334
solution_fingerprint: 0x40238ccd9cfcdeef

[28]:
array([11, 10,  1,  1,  7,  6, -1,  5, 13,  8, 12, 14, -1, 16, 22, 23, -1,
       19, 30, 20, 39, -1, 24, -1, -1, 26, 28, -1, 27, -1, 29, -1, 18, 31,
       32, 37,  7, 33, 35, 21])

Summary¶

Key Differences between ModelOptions and SolverOptions are listed below.

Feature

ModelOptions

SolverOptions

Scope

Problem formulation level

Solver execution level

Affects

Model structure and constraints

Search process and performance

Applicable to

All methods (heuristics, metaheuristics, MILP)

Only MILP solvers and HGS

Examples

topology, feeder_route, feeder_limit, balanced

time_limit, gap, threads

Impact

Determines what is solved

Determines how it’s solved

Defined by

The modeling framework

The specific solver (e.g., CPLEX, Gurobi)

  • Use ModelOptions to specify what kind of solution you want (structure, constraints, flexibility).

  • Use SolverOptions to control how long and how hard the solver should try to find that solution.