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 arrange the turbines in a "radial", "branched", or "ringed" topology. The rings have a redundancy link that maintains conectivity in case of one link failure (also called cable loops).

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 (needs a feeder_limit that pins their count)

max_feeders

Required by feeder_limit="specified" (an upper bound) and "exactly" (exact count). For a "ringed" topology this counts physical substation connections, so it must be a multiple of 2 (each ring uses two).

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

Controllable via method ('radial_EW' → radial, 'ringed' → closed-loop, others → branched)

Controllable via feeder_route parameter

Not user controllable

HGSRouter

Radial by default; ringed=True builds cable cycles instead

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", "ringed"} default: branched
    Architecture of the subtrees in a solution.

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

feeder_limit in {"unlimited", "exactly", "specified", "minimum", "min_plus1", "min_plus2", "min_plus3"} default: unlimited
    Whether to limit the number of feeders. Both ``'specified'`` (an upper
    bound) and ``'exactly'`` (an exact count) require the additional kwarg
    ``'max_feeders'``. Option ``'balanced'`` is only enforceable if the feeder
    count is pinned to a single value, i.e. ``'minimum'`` or ``'exactly'``.

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

max_feeders [int] default: 0
    Number of feeders: the maximum if <feeder_limit = "specified">, the exact count if <feeder_limit = "exactly">

Optimize an exemplary location

[4]:
wfn = WindFarmNetwork.from_pbf(filepath='data/DTU_letters.osm.pbf', cables=[(2, 500.0), (5, 800.0), (7, 1000.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
[9]:
hgs_router = HGSRouter(time_limit=2, ringed=True)
terse = wfn.optimize(router=hgs_router)
wfn
[9]:
../_images/notebooks_a08_ModelOptions_22_0.svg

Set the feeder_limit lower than the possible minimum.

[10]:
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.
[10]:
../_images/notebooks_a08_ModelOptions_24_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)¶

[11]:
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.

[12]:
milp_router = MILPRouter(
    solver_name='ortools.cp_sat',
    time_limit=10,
    mip_gap=0.01,
    model_options=model_options1,
    verbose=True,
)
[13]:
# 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
  4.97e-04s  0.00e+00d  [DetectDominanceRelations]
  4.61e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.60e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  1.08e-04s  0.00e+00d  [DetectDuplicateColumns]
  7.16e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000335796 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] [8.307e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [0.000118014s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  6.94e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.25e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  1.57e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  1.81e-04s  0.00e+00d  [DetectDominanceRelations]
  1.40e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.59e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  7.11e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.67e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.16e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.03e-05s  0.00e+00d  [DetectDifferentVariables]
  7.02e-04s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  6.68e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  3.24e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  5.98e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  5.77e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  1.31e-04s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.51e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.13e-05s  0.00e+00d  [MergeClauses]
  3.54e-04s  0.00e+00d  [DetectDominanceRelations]
  3.11e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.57e-04s  0.00e+00d  [DetectDominanceRelations]
  1.77e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.45e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.44e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000197903 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.614e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6843e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  7.43e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.57e-03s  1.27e-03d  [Probe] #probed=708
  1.38e-04s  1.45e-04d  [MaxClique]
  1.55e-04s  0.00e+00d  [DetectDominanceRelations]
  1.23e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.07e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  6.90e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.75e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.71e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.21e-05s  0.00e+00d  [DetectDifferentVariables]
  6.36e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  7.64e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.56e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.67e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.29e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  8.61e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.28e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.43e-05s  0.00e+00d  [MergeClauses]
  1.53e-04s  0.00e+00d  [DetectDominanceRelations]
  1.31e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.71e-06s  0.00e+00d  [MergeNoOverlap]
  2.59e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.14e-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.000239112 dtime: 0.00043646

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

Starting search at 0.03s 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] quick_restart
#2       0.05s best:3418.25727 next:[1439.63944,3418.25727] fj_restart_decay_compound_perturb_obj(batch:1 lin{mvs:0 evals:12'221} gen{mvs:1'355 evals:0} comp{mvs:487 btracks:434} #w_updates:13 #perturb:0) (fixed_bools=0/354)
#Bound   0.05s best:3418.25727 next:[1446.52178,3418.25727] reduced_costs
#3       0.06s best:3286.44322 next:[1446.52178,3286.44322] ls_restart_decay(batch:1 lin{mvs:17 evals:159} #w_updates:5 #perturb:0) (fixed_bools=0/354)
#4       0.06s best:2748.44362 next:[1446.52178,2748.44362] quick_restart_no_lp (fixed_bools=0/354)
#Bound   0.06s best:2748.44362 next:[1451.43989,2748.44362] pseudo_costs
#5       0.06s best:2124.90285 next:[1451.43989,2124.90284] no_lp (fixed_bools=0/354)
#Bound   0.06s best:2124.90285 next:[1657.8143,2124.90284] lb_tree_search
#6       0.07s best:2122.86795 next:[1657.8143,2122.86795] quick_restart_no_lp (fixed_bools=0/361)
#7       0.07s best:2119.06769 next:[1657.8143,2119.06769] quick_restart_no_lp (fixed_bools=0/361)
#8       0.08s best:2097.80481 next:[1657.8143,2097.80481] rnd_var_lns (d=7.07e-01 s=26 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#9       0.08s best:2086.27975 next:[1657.8143,2086.27974] no_lp (fixed_bools=0/354)
#10      0.08s best:2084.91276 next:[1657.8143,2084.91276] no_lp (fixed_bools=0/354)
#11      0.09s best:1985.95991 next:[1657.8143,1985.95991] rins_lp_lns (d=5.00e-01 s=28 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#12      0.10s best:1952.91214 next:[1657.8143,1952.91214] quick_restart_no_lp (fixed_bools=0/362)
#13      0.10s best:1949.11187 next:[1657.8143,1949.11187] quick_restart_no_lp (fixed_bools=0/362)
#14      0.10s best:1931.83949 next:[1657.8143,1931.83949] graph_cst_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)
#15      0.11s best:1925.89379 next:[1657.8143,1925.89379] ls_lin_restart_decay_compound(batch:1 lin{mvs:0 evals:3'244} gen{mvs:334 evals:0} comp{mvs:16 btracks:159} #w_updates:4 #perturb:0) (fixed_bools=0/354)
#Bound   0.11s best:1925.89379 next:[1674.7528,1925.89379] lb_tree_search
#Bound   0.12s best:1925.89379 next:[1677.89266,1925.89379] max_lp
#Bound   0.13s best:1925.89379 next:[1681.70525,1925.89379] max_lp
#16      0.13s best:1856.88766 next:[1681.70525,1856.88766] reduced_costs (fixed_bools=0/354)
#Bound   0.14s best:1856.88766 next:[1682.16269,1856.88766] max_lp
#17      0.15s best:1854.67248 next:[1682.16269,1854.67248] quick_restart_no_lp (fixed_bools=0/370)
#18      0.16s best:1846.17065 next:[1682.16269,1846.17065] quick_restart_no_lp (fixed_bools=0/370)
#19      0.16s best:1829.69442 next:[1682.16269,1829.69442] quick_restart_no_lp (fixed_bools=0/372)
#20      0.17s best:1818.47193 next:[1682.16269,1818.47193] graph_var_lns (d=8.14e-01 s=40 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#21      0.19s best:1817.64927 next:[1682.16269,1817.64927] ls_restart_perturb(batch:1 lin{mvs:783 evals:16'456} #w_updates:357 #perturb:0) (fixed_bools=0/354)
#22      0.20s best:1815.43294 next:[1682.16269,1815.43294] quick_restart_no_lp (fixed_bools=0/379)
#23      0.20s best:1805.55513 next:[1682.16269,1805.55513] ls_lin_restart_perturb(batch:1 lin{mvs:999 evals:19'251} #w_updates:541 #perturb:0) (fixed_bools=0/354)
#24      0.21s best:1803.3388 next:[1682.16269,1803.33879] quick_restart_no_lp (fixed_bools=0/381)
#25      0.25s best:1799.78283 next:[1682.16269,1799.78282] reduced_costs (fixed_bools=0/358)
#26      0.25s best:1799.67074 next:[1682.16269,1799.67074] quick_restart_no_lp (fixed_bools=0/382)
#27      0.26s best:1799.01451 next:[1682.16269,1799.0145] quick_restart_no_lp (fixed_bools=0/383)
#Bound   0.29s best:1799.01451 next:[1686.64815,1799.0145] lb_tree_search
#28      0.37s best:1782.13706 next:[1686.64815,1782.13706] lb_relax_lns_bool_h (d=5.00e-01 s=46 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound   0.39s best:1782.13706 next:[1688.02074,1782.13706] max_lp
#Bound   0.43s best:1782.13706 next:[1688.06841,1782.13706] max_lp
#Model   0.44s var:698/708 constraints:961/972
#Bound   0.44s best:1782.13706 next:[1688.07122,1782.13706] max_lp
#Bound   0.54s best:1782.13706 next:[1691.51773,1782.13706] lb_tree_search
#29      0.59s best:1758.85932 next:[1691.51773,1758.85932] lb_relax_lns_int (d=5.00e-01 s=23 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#30      0.60s best:1758.41439 next:[1691.51773,1758.41439] quick_restart_no_lp (fixed_bools=5/393)
#Model   0.70s var:696/708 constraints:958/972
#Bound   0.78s best:1758.41439 next:[1696.30992,1758.41439] lb_tree_search
#Model   0.79s var:694/708 constraints:956/972
#Model   0.83s var:692/708 constraints:954/972
#Model   0.86s var:690/708 constraints:952/972
#Model   0.87s var:684/708 constraints:946/972
#Bound   0.98s best:1758.41439 next:[1696.56568,1758.41439] max_lp
#Model   1.02s var:680/708 constraints:941/972
#Bound   1.07s best:1758.41439 next:[1700.56121,1758.41439] lb_tree_search
#Bound   1.10s best:1758.41439 next:[1700.61188,1758.41439] lb_tree_search (nodes=4/4 rc=0 decisions=33 @root=8 restarts=0 lp_iters=[0, 0, 271, 51])
#Model   1.12s var:672/708 constraints:933/972
#Bound   1.19s best:1758.41439 next:[1700.69725,1758.41439] max_lp
#Model   1.23s var:664/708 constraints:925/972
#Bound   1.26s best:1758.41439 next:[1701.86666,1758.41439] max_lp
#Bound   1.31s best:1758.41439 next:[1707.09759,1758.41439] lb_tree_search
#Model   1.33s var:650/708 constraints:911/972
#Model   1.54s var:648/708 constraints:909/972
#Model   1.66s var:638/708 constraints:897/972
#Bound   1.85s best:1758.41439 next:[1716.25618,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=55 @root=12 restarts=0 lp_iters=[0, 0, 1'313, 168])  [skipped_logs=10]
#Model   2.18s var:620/708 constraints:877/972
#Model   2.56s var:618/708 constraints:875/972
#Model   2.75s var:616/708 constraints:872/972
#Bound   2.60s best:1758.41439 next:[1718.43631,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=69 @root=15 restarts=0 lp_iters=[0, 0, 1'828, 168])  [skipped_logs=3]
#Model   3.61s var:612/708 constraints:868/972
#Bound   3.96s best:1758.41439 next:[1724.63806,1758.41439] lb_tree_search (nodes=9/9 rc=1 decisions=99 @root=18 restarts=0 lp_iters=[0, 0, 4'375, 412])  [skipped_logs=10]
#Bound   4.64s best:1758.41439 next:[1725.6461,1758.41439] lb_tree_search (nodes=13/13 rc=1 decisions=126 @root=18 restarts=0 lp_iters=[0, 0, 7'236, 945])  [skipped_logs=6]
#Model   5.20s var:608/708 constraints:863/972
#Model   5.22s var:606/708 constraints:861/972
#Model   5.59s var:604/708 constraints:859/972
#Bound   5.96s best:1758.41439 next:[1727.78593,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=174 @root=19 restarts=0 lp_iters=[0, 0, 10'818, 1'159])  [skipped_logs=15]
#Model   6.62s var:600/708 constraints:855/972
#Bound   6.62s best:1758.41439 next:[1727.98383,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=183 @root=20 restarts=0 lp_iters=[0, 0, 11'911, 1'159])  [skipped_logs=2]
#Model   7.20s var:594/708 constraints:849/972
#Model   7.77s var:590/708 constraints:845/972
#Model   7.77s var:588/708 constraints:841/972
#Model   7.85s var:580/708 constraints:832/972
#Model   7.90s var:578/708 constraints:830/972
#Bound   8.06s best:1758.41439 next:[1728.90581,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=199 @root=23 restarts=0 lp_iters=[0, 0, 13'210, 1'159])  [skipped_logs=2]
#Model   8.86s var:576/708 constraints:828/972
#Bound   8.69s best:1758.41439 next:[1730.32682,1758.41439] lb_tree_search (nodes=19/20 rc=2 decisions=236 @root=23 restarts=0 lp_iters=[0, 0, 15'620, 1'258])  [skipped_logs=8]
#Model   9.14s var:572/708 constraints:824/972
#Bound   9.99s best:1758.41439 next:[1731.23905,1758.41439] lb_tree_search (nodes=20/21 rc=2 decisions=253 @root=25 restarts=0 lp_iters=[0, 0, 17'032, 1'386])  [skipped_logs=4]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  1.31ms,    8.51s]    4.25s    4.25s    8.51s
                     'default_lp':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  1.91ms,    4.35s]    2.18s    2.18s    4.36s
               'feasibility_pump':        45 [  1.05ms,  22.58ms]   1.89ms   3.15ms  84.99ms        44 [145.79us,  11.26ms] 418.23us   1.65ms  18.40ms
                             'fj':         1 [  6.78ms,   6.78ms]   6.78ms   0.00ns   6.78ms         1 [257.12us, 257.12us] 257.12us   0.00ns 257.12us
                             'fj':         1 [ 12.08ms,  12.08ms]  12.08ms   0.00ns  12.08ms         1 [  4.08ms,   4.08ms]   4.08ms   0.00ns   4.08ms
                      'fs_random':         1 [ 11.16ms,  11.16ms]  11.16ms   0.00ns  11.16ms         1 [944.37us, 944.37us] 944.37us   0.00ns 944.37us
                'fs_random_no_lp':         1 [ 10.83ms,  10.83ms]  10.83ms   0.00ns  10.83ms         1 [956.02us, 956.02us] 956.02us   0.00ns 956.02us
  'fs_random_quick_restart_no_lp':         1 [ 11.66ms,  11.66ms]  11.66ms   0.00ns  11.66ms         1 [930.93us, 930.93us] 930.93us   0.00ns 930.93us
                  'graph_arc_lns':        22 [645.28us, 411.74ms] 240.38ms 139.68ms    5.29s        20 [833.58us, 100.17ms]  72.11ms  37.37ms    1.44s
                  'graph_cst_lns':        20 [ 16.91ms, 411.43ms] 235.62ms 157.18ms    4.71s        20 [ 85.10us, 100.32ms]  60.85ms  46.00ms    1.22s
                  'graph_dec_lns':        21 [464.06us, 401.75ms] 221.20ms 155.24ms    4.65s        20 [ 10.00ns, 100.20ms]  61.43ms  43.86ms    1.23s
                  'graph_var_lns':        22 [  6.21ms, 430.73ms] 211.61ms 160.20ms    4.66s        22 [ 11.85us, 100.24ms]  55.34ms  46.21ms    1.22s
                   'lb_relax_lns':         6 [120.56ms,    1.49s] 864.32ms 604.50ms    5.19s         6 [ 18.44ms, 513.33ms] 298.67ms 221.88ms    1.79s
                 'lb_tree_search':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [ 18.39ms,    5.51s]    2.76s    2.74s    5.52s
                             'ls':        25 [  3.47ms, 245.82ms] 183.68ms  68.47ms    4.59s        25 [128.24us, 100.01ms]  87.15ms  31.93ms    2.18s
                         'ls_lin':        24 [  3.31ms, 253.59ms] 185.80ms  70.16ms    4.46s        24 [649.13us, 100.01ms]  87.84ms  32.19ms    2.11s
                         'max_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [ 19.84ms,    4.85s]    2.44s    2.42s    4.87s
                          'no_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.31ms,    4.62s]    2.31s    2.31s    4.62s
            'objective_lb_search':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  2.02ms,    4.21s]    2.11s    2.10s    4.21s
                        'probing':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  1.90ms,    4.90s]    2.45s    2.45s    4.91s
                   'pseudo_costs':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.84ms,    4.56s]    2.28s    2.28s    4.56s
                  'quick_restart':         1 [   9.97s,    9.97s]    9.97s   0.00ns    9.97s         2 [  1.92ms,    3.88s]    1.94s    1.94s    3.89s
            'quick_restart_no_lp':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.31ms,    7.08s]    3.54s    3.54s    7.08s
                  'reduced_costs':         1 [   9.96s,    9.96s]    9.96s   0.00ns    9.96s         2 [  1.86ms,    4.91s]    2.45s    2.45s    4.91s
                      'rins/rens':        29 [873.68us, 430.71ms] 180.46ms 156.83ms    5.23s        24 [676.14us, 100.18ms]  52.71ms  40.59ms    1.27s
                    'rnd_cst_lns':        30 [ 11.95ms, 389.68ms] 203.03ms 157.88ms    6.09s        30 [ 10.00ns, 100.13ms]  53.46ms  46.94ms    1.60s
                    'rnd_var_lns':        25 [  6.44ms, 456.83ms] 190.79ms 164.86ms    4.77s        25 [  4.04us, 100.11ms]  47.35ms  46.30ms    1.18s

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    516    145'244   312'822       375            4'957    148'672   3'938'089      7'566'787
                     'default_lp':    400      1'510    24'775         8            8'326     12'148     162'386        696'811
                      'fs_random':    354          0       456         0              456        456       3'080         10'195
                'fs_random_no_lp':    354          0       492         0              492        492       3'309         10'970
  'fs_random_quick_restart_no_lp':    354          0       478         0              478        478       3'228         10'685
                 'lb_tree_search':    354        104    22'699         0            9'537     11'487      97'818        417'704
                         'max_lp':    354      1'206    23'823         4           10'176     12'986     115'944        586'914
                          'no_lp':    354     91'222   163'979       257            7'238     98'799   4'266'826     14'782'772
            'objective_lb_search':    398      1'318    28'881        13            9'541     13'633     162'227        749'811
                        'probing':    395          0       872         0              872        872       6'358         19'734
                   'pseudo_costs':    354      1'459    26'221         8            9'358     12'437     148'370        732'547
                  'quick_restart':    368        413    49'787        22           17'868     22'641     226'916      1'117'259
            'quick_restart_no_lp':    443     49'200   495'765     4'290           24'516     77'484   3'181'472     10'803'074
                  'reduced_costs':    362      1'370    34'080        11            9'963     13'560     153'767        772'421

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     70      1    516      445          1'180             7'679            11'519
                     'default_lp':     66      0    400      334            646               215             1'037
                      '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':     67      0    354      287            404               200                 2
                         'max_lp':     52      0    354      302            314               142               829
                          'no_lp':     68      0    354      286            472               971             7'282
            'objective_lb_search':     79      0    398      319            608               199               102
                        'probing':      0      0    395      395            934                40                 0
                   'pseudo_costs':     66      0    354      288            410               196               906
                  'quick_restart':     68      0    368      300            542               209               162
            'quick_restart_no_lp':     79      0    443      364          1'124             1'612            10'171
                  'reduced_costs':     66      0    362      296            478               212               799

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':       116'675     999'797           628'102   6'152'900     3'528'070    41'521
                     'default_lp':         1'185      17'464            21'929      39'975             0       358
                      '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':            22          31               986         717             0        86
                         'max_lp':         1'039      20'494            23'294      51'228             0       364
                          'no_lp':        78'108   1'136'499           259'079   3'610'643     2'242'718    24'132
            'objective_lb_search':         1'125      22'940            15'998      35'577             0       422
                        'probing':             0           0                 0           0             0         0
                   'pseudo_costs':         1'231      21'637            33'763      53'540             0       474
                  'quick_restart':           234       3'141             3'754       9'643             0       161
            'quick_restart_no_lp':        37'185     299'961           492'025   1'931'245     1'029'722     9'686
                  'reduced_costs':         1'057      11'793            14'969      53'874             0       309

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':    3'395     58'621        0       856      23'139           3'169        184
                     'default_lp':    2'307     13'500        0        99         747             557          4
                      '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':    2'199     13'301        1        81         625             455          4
                         'max_lp':    1'752     11'488        0        37         286             227          2
                          'no_lp':    4'360     28'518        0       370       4'276           5'042         24
            'objective_lb_search':    3'019     17'228        0       107         800             677          8
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':    2'515     14'884        0       129         966             654          2
                  'quick_restart':    5'506     31'229        1       132         941           1'304          5
            'quick_restart_no_lp':   16'771    112'547        0     1'266      13'110          11'345        176
                  'reduced_costs':    3'141     18'432        1       122         859             843         13

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'423             0         14        39'634      3'132             12      1'887         856            6        513        0           0     78'583   343'456    145'244
                     'default_lp':       27             1          2           337          0              7         21          99           20         23        0           0          0     3'672      1'510
                      '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':       35             0          3            86          0              1          0          81           17          2        0           0          0        14        104
                         'max_lp':        1             0          0           353          0              4         11          37            5          0        0           0          0     2'610      1'206
                          'no_lp':      465            48          6        22'972        984            379      1'160         370           12      1'344        0           0     55'504   217'310     91'222
            'objective_lb_search':      654           111          6           403          0              9         19         107           14         12        0           0          0     2'295      1'318
                        'probing':        0             0          0             0          0              0          0           0            0          0        0           0          0         0          0
                   'pseudo_costs':       57             1          4           447          1              0         27         129           15          8        0           0          0     3'033      1'459
                  'quick_restart':       13             0          2           156          1              0          5         132           22         24        0           0          0       739        413
            'quick_restart_no_lp':    2'228            23         20         9'016        527             65        670       1'266          469        622        0           0     22'480   104'761     49'200
                  'reduced_costs':       33             0          5           289          2             23         20         122           73         99        0           0          0     4'005      1'370

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1      94'165      1'924    4'733        1      252
            'fs_random':          1           0          0        0        0        0
       'lb_tree_search':          1      23'740      1'273      227      118        0
               'max_lp':          1      81'447      1'363    2'651      812      106
  'objective_lb_search':          1      77'580      2'013    3'901        1      119
              'probing':          1      19'816      2'095      232        0        0
         'pseudo_costs':          1      87'203      1'828    3'498      896      138
        'quick_restart':          1      37'829      1'883    1'482        1       57
        'reduced_costs':          1      84'477      1'799    2'354      806      191

Lp dimension                 Final dimension of first component
           'default_lp':    531 rows, 669 columns, 4118 entries
            'fs_random':         0 rows, 669 columns, 0 entries
       'lb_tree_search':  1916 rows, 708 columns, 36204 entries
               'max_lp':    586 rows, 708 columns, 7008 entries
  'objective_lb_search':   697 rows, 669 columns, 10348 entries
              'probing':  1750 rows, 669 columns, 50514 entries
         'pseudo_costs':    639 rows, 708 columns, 7341 entries
        'quick_restart':   755 rows, 669 columns, 11390 entries
        'reduced_costs':    652 rows, 708 columns, 7109 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
           'default_lp':          0            0   4'967         0   7'409           0
            'fs_random':          0            0       0         0       0           0
       'lb_tree_search':          0            7     345         0  41'101           0
               'max_lp':          0            0   3'564         0  12'251           0
  'objective_lb_search':          0            2   4'002         0  15'050           0
              'probing':          0            0     228         0  46'380           0
         'pseudo_costs':          0            0   4'513         0  12'626           0
        'quick_restart':          0            0   1'537         0  29'023           0
        'reduced_costs':          0            0   3'332         0  19'073           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        3'096      102    2'865       0      2'044     27            81  1'924/3'942
            'fs_random':        1'172        0        0       0          0      0             0          0/0
       'lb_tree_search':        2'599      638    7'148       0      4'389    334            14  1'273/2'306
               'max_lp':        2'689      194    2'916       0      2'234     50            23  1'363/2'395
  'objective_lb_search':        3'185      172    4'755       0      2'905     91            61  2'013/4'093
              'probing':        3'267      564        0       0          0  1'091            52  2'095/3'926
         'pseudo_costs':        3'154      196    3'882       0      2'789     48            54  1'828/3'387
        'quick_restart':        3'055      430    7'299       0      4'604    308            98  1'883/3'643
        'reduced_costs':        3'125      392    4'494       0      3'249     87            40  1'799/3'235

Lp Cut            max_lp  reduced_costs  pseudo_costs  lb_tree_search  default_lp  quick_restart  probing  objective_lb_search
          CG_FF:       9             12            25               5          22             28       36                   17
           CG_K:       6              8            14               5          16             25       17                   10
          CG_KL:       -              -             6               -           2              1        1                    1
           CG_R:      26             33            48              15          25             23       52                   13
          CG_RB:      55             72            77              34          56             51       85                   73
         CG_RBP:      20             13            36              13          45             25       51                   31
         Clique:       1              1             2               -           -              -        -                    -
             IB:     351            519           713               2         777            477      414                  634
       MIR_1_FF:      52             84            58              81          67             95      138                   95
        MIR_1_K:       7              6            12               6          23             19       47                   29
       MIR_1_KL:       5             12            13               8          10             14       30                   13
        MIR_1_R:       2              1             -               -           2              3        2                    3
       MIR_1_RB:      28             19            18              17          28             22       34                   43
      MIR_1_RBP:       8             11             7              16          17             28       26                   23
       MIR_2_FF:      57             68            85              96          77            107      106                   94
        MIR_2_K:      14              7             9              15          19             28       47                   34
       MIR_2_KL:       7             10            14              25          13              9       21                   15
        MIR_2_R:       7              4             7               1           8             14        5                    8
       MIR_2_RB:      33             57            44              44          37             34       45                   55
      MIR_2_RBP:      16              9            12              21          32             33       40                   35
       MIR_3_FF:      55             82            66              75          51             53       58                   53
        MIR_3_K:      20             13            19              19          23             40       19                   32
       MIR_3_KL:       9             13             9               8          11             12       13                   11
        MIR_3_R:       8              7             4               5           5              5        4                    5
       MIR_3_RB:      39             60            44              33          35             21       32                   34
      MIR_3_RBP:      18             19            16              27          29             37       20                   36
       MIR_4_FF:      34             49            33              63          30             23       41                   35
        MIR_4_K:      21             18            16              23          17             21       28                   29
       MIR_4_KL:      11             14             5              14           8              8       24                   15
        MIR_4_R:       2              6             2               6           8              1        2                    4
       MIR_4_RB:      28             47            25              17          29             16       13                   23
      MIR_4_RBP:      37             27            13              24          20             23       20                   19
       MIR_5_FF:      21             41            20              44          28             17       29                   13
        MIR_5_K:      21             26            20              27          25             22       26                   24
       MIR_5_KL:      16             15             9              19          15              8        9                   10
        MIR_5_R:       1              4             -               2           3              1        1                    2
       MIR_5_RB:      15             30            13              18          16              6       11                   15
      MIR_5_RBP:      30             26            19              51          20             25       21                   32
       MIR_6_FF:      12             22            24              20          16             19       34                   17
        MIR_6_K:      13             20            26              19           9             16       26                   16
       MIR_6_KL:       5             14             7               8           8              9       11                    8
        MIR_6_R:       2              3             4               1           1              -        -                    -
       MIR_6_RB:      13             20            15              13          14              9        6                    6
      MIR_6_RBP:      14             26            16              31          12             24       31                   29
   ZERO_HALF_FF:      20             19             8              13          25             10       19                   29
    ZERO_HALF_K:      10              2             -               1           8              3       11                    6
   ZERO_HALF_KL:       5              3             1               6           -              1        2                    3
    ZERO_HALF_R:     138            175           166             235         147            346      335                  230
   ZERO_HALF_RB:      28             33            26              36          26             50       22                   20
  ZERO_HALF_RBP:      13             19             2              11           9             21       30                   31

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':          5/20     45%    5.21e-01       0.10
  'graph_cst_lns':          6/20     45%    6.10e-01       0.10
  'graph_dec_lns':          2/20     45%    6.89e-01       0.10
  'graph_var_lns':          5/22     50%    7.14e-01       0.10
   'lb_relax_lns':           4/6     50%    6.06e-01       0.50
      'rins/rens':          8/26     50%    6.65e-01       0.10
    'rnd_cst_lns':          7/30     50%    7.86e-01       0.10
    'rnd_var_lns':          6/25     60%    9.11e-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
  'fj_restart_decay_compound_perturb_obj':        1                  1         0     1'355            487        434             13         27'144
                         'ls_lin_restart':        1                  1    18'588         0              0          0          6'050        591'597
                'ls_lin_restart_compound':        3                  3         0    77'730          6'475     35'621            299      1'531'778
        'ls_lin_restart_compound_perturb':        5                  4         0   126'229          8'775     58'715            907      2'526'016
                   'ls_lin_restart_decay':        3                  3    69'967         0              0          0          3'442      1'202'624
          'ls_lin_restart_decay_compound':        2                  2         0    24'587          3'734     10'423             41        511'369
  'ls_lin_restart_decay_compound_perturb':        3                  3         0    73'619         11'047     31'284            141      1'579'556
           'ls_lin_restart_decay_perturb':        2                  2    44'183         0              0          0          1'901        838'980
                 'ls_lin_restart_perturb':        5                  5    58'879         0              0          0         34'282      1'647'512
                             'ls_restart':        4                  4    76'877         0              0          0         37'560      2'197'612
            'ls_restart_compound_perturb':        3                  3         0    77'884          5'634     36'117            477      1'538'148
                       'ls_restart_decay':        4                  4    69'692         0              0          0          3'301      1'226'552
              'ls_restart_decay_compound':        5                  4         0   114'230         17'616     48'302            191      2'416'467
      'ls_restart_decay_compound_perturb':        5                  5         0    91'393         14'701     38'336            202      2'076'439
               'ls_restart_decay_perturb':        3                  2    70'390         0              0          0          3'301      1'239'488
                     'ls_restart_perturb':        1                  1       783         0              0          0            357         19'971

Solutions (30)                              Num     Rank
                             'fj_restart':    2    [0,1]
  'fj_restart_decay_compound_perturb_obj':    2    [1,2]
                          'graph_cst_lns':    2  [13,14]
                          'graph_var_lns':    2  [19,20]
                    'lb_relax_lns_bool_h':    2  [27,28]
                       'lb_relax_lns_int':    2  [28,29]
          'ls_lin_restart_decay_compound':    2  [14,15]
                 'ls_lin_restart_perturb':    2  [22,23]
                       'ls_restart_decay':    2    [2,3]
                     'ls_restart_perturb':    2  [20,21]
                                  'no_lp':    6   [4,10]
                    'quick_restart_no_lp':   26   [3,30]
                          'reduced_costs':    4  [15,25]
                            'rins_lp_lns':    2  [10,11]
                            'rnd_var_lns':    2    [7,8]

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

Solution repositories    Added  Queried  Synchro
    'alternative_path':     17       58       16
      'best_solutions':    113      184       85
   'fj solution hints':      0        0        0
        'lp solutions':    112       29       81
                'pump':      0        0

Improving bounds shared    Num  Sym
            'default_lp':    2    0
        'lb_tree_search':   88    0
                'max_lp':   24    0
          'pseudo_costs':   10    0
         'quick_restart':    8    0
   'quick_restart_no_lp':    8    0
         'reduced_costs':   10    0

Clauses shared                      #Exported  #Imported  #BinaryRead  #BinaryTotal
                           'core':        247        198           46            47
                     'default_lp':         21        296           42            47
                      'fs_random':          0          0            0            47
                'fs_random_no_lp':          0          0            0            47
  'fs_random_quick_restart_no_lp':          0          0            0            47
                 'lb_tree_search':          1        300           39            47
                         'max_lp':          8        138           22            47
                          'no_lp':        177        258           47            47
            'objective_lb_search':         18        297           47            47
                        'probing':          0          0            0            47
                   'pseudo_costs':         29        305           43            47
                  'quick_restart':         21        295           47            47
            'quick_restart_no_lp':        500        154           47            47
                  'reduced_costs':         72        288           42            47

LRAT_status: NA
[Scaling] scaled_objective_bound: 1731.24 corrected_bound: 1731.24 delta: 1.40213e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1731.239044689607
integers: 688
booleans: 354
conflicts: 0
branches: 492
propagations: 3309
integer_propagations: 10970
restarts: 0
lp_iterations: 0
walltime: 10.0138
usertime: 10.0138
deterministic_time: 72.7035
gap_integral: 247.027
solution_fingerprint: 0x40238ccd9cfcdeef

[13]:
../_images/notebooks_a08_ModelOptions_33_1.svg

Second MILP Run (model_options2)¶

[14]:
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.

[15]:
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
[15]:
../_images/notebooks_a08_ModelOptions_37_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:

[16]:
model_options = ModelOptions(
    topology='branched',
    feeder_limit='unlimited',
    feeder_route='segmented',
)
[17]:
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.

[18]:
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
  2.00e-04s  0.00e+00d  [DetectDominanceRelations]
  4.29e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  3.01e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  5.78e-05s  0.00e+00d  [DetectDuplicateColumns]
  9.84e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000256381 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.805e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6902e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.43e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  8.32e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  1.98e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  2.08e-04s  0.00e+00d  [DetectDominanceRelations]
  2.90e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  6.33e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  8.38e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.81e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.37e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.23e-05s  0.00e+00d  [DetectDifferentVariables]
  1.02e-03s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  7.53e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.63e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.59e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.04e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  8.48e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.08e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  7.96e-06s  0.00e+00d  [MergeClauses]
  1.47e-04s  0.00e+00d  [DetectDominanceRelations]
  2.10e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.55e-04s  0.00e+00d  [DetectDominanceRelations]
  1.24e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  5.36e-05s  0.00e+00d  [DetectDuplicateColumns]
  8.66e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000531971 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] [3.2157e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [8.5475e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  8.00e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.70e-03s  1.27e-03d  [Probe] #probed=708
  1.39e-04s  1.45e-04d  [MaxClique]
  1.80e-04s  0.00e+00d  [DetectDominanceRelations]
  1.63e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.19e-05s  0.00e+00d  [ProcessAtMostOneAndLinear]
  6.98e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.50e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.01e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  9.91e-06s  0.00e+00d  [DetectDifferentVariables]
  6.29e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  6.87e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.17e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.35e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.04e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  7.15e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.04e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  7.76e-06s  0.00e+00d  [MergeClauses]
  1.86e-04s  0.00e+00d  [DetectDominanceRelations]
  2.40e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.20e-06s  0.00e+00d  [MergeNoOverlap]
  3.02e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.33e-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.000220028 dtime: 0.00043646

Preloading model.
#Bound   0.04s best:inf   next:[1364.00132,11449.6914] initial_domain
#1       0.04s 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]

#2       0.05s best:1806.84914 next:[1364.00132,1806.84914] quick_restart_no_lp [hint] (fixed_bools=0/354)
#Bound   0.05s best:1806.84914 next:[1439.63944,1806.84914] quick_restart
#Bound   0.05s best:1806.84914 next:[1446.52178,1806.84914] reduced_costs
#Bound   0.06s best:1806.84914 next:[1657.8143,1806.84914] max_lp
#3       0.07s best:1805.92157 next:[1657.8143,1805.92157] graph_cst_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base)
#4       0.08s best:1805.47664 next:[1657.8143,1805.47664] quick_restart_no_lp (fixed_bools=0/372)
#5       0.10s 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.12s 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.15s var:698/708 constraints:961/972
#6       0.22s best:1758.41439 next:[1677.89266,1758.41439] quick_restart_no_lp (fixed_bools=5/377)
#Bound   0.25s best:1758.41439 next:[1682.16026,1758.41439] max_lp
#Model   0.31s var:696/708 constraints:958/972
#Bound   0.32s best:1758.41439 next:[1683.27935,1758.41439] lb_tree_search
#Bound   0.33s best:1758.41439 next:[1686.94433,1758.41439] max_lp
#Model   0.33s var:694/708 constraints:956/972
#Bound   0.43s best:1758.41439 next:[1687.01627,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=25 @root=2 restarts=0 lp_iters=[0, 0, 244, 446])
#Model   0.43s var:690/708 constraints:952/972
#Bound   0.46s best:1758.41439 next:[1688.27541,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=37 @root=2 restarts=0 lp_iters=[0, 0, 513, 474])
#Bound   0.48s best:1758.41439 next:[1688.28918,1758.41439] lb_tree_search (nodes=8/8 rc=0 decisions=48 @root=2 restarts=0 lp_iters=[0, 0, 625, 477])
#Bound   0.50s best:1758.41439 next:[1688.38401,1758.41439] lb_tree_search (nodes=11/11 rc=2 decisions=65 @root=2 restarts=0 lp_iters=[0, 0, 744, 484])
#Bound   0.51s best:1758.41439 next:[1688.4031,1758.41439] lb_tree_search (nodes=12/12 rc=2 decisions=68 @root=2 restarts=0 lp_iters=[0, 0, 844, 548])
#Bound   0.54s best:1758.41439 next:[1688.98027,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=83 @root=2 restarts=0 lp_iters=[0, 0, 998, 576])
#Bound   0.55s best:1758.41439 next:[1689.5203,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=84 @root=2 restarts=0 lp_iters=[0, 0, 1'051, 576])
#Bound   0.58s best:1758.41439 next:[1689.52221,1758.41439] lb_tree_search (nodes=15/15 rc=4 decisions=92 @root=2 restarts=0 lp_iters=[0, 0, 1'309, 598])
#Bound   0.61s best:1758.41439 next:[1690.01805,1758.41439] lb_tree_search (nodes=16/16 rc=5 decisions=100 @root=2 restarts=0 lp_iters=[0, 0, 1'479, 627])
#Bound   0.64s best:1758.41439 next:[1690.68811,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=106 @root=2 restarts=0 lp_iters=[0, 0, 1'673, 680])
#Bound   0.65s best:1758.41439 next:[1691.48972,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=107 @root=2 restarts=0 lp_iters=[0, 0, 1'726, 680])
#Bound   0.65s best:1758.41439 next:[1691.98313,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=108 @root=2 restarts=0 lp_iters=[0, 0, 1'749, 680])
#Model   0.84s var:676/708 constraints:937/972
#Bound   0.74s best:1758.41439 next:[1693.64939,1758.41439] lb_tree_search (nodes=21/21 rc=6 decisions=124 @root=2 restarts=0 lp_iters=[0, 0, 2'117, 781])  [skipped_logs=6]
#Bound   1.00s best:1758.41439 next:[1693.65527,1758.41439] lb_tree_search (nodes=21/21 rc=6 decisions=131 @root=2 restarts=0 lp_iters=[0, 0, 2'405, 781])  [skipped_logs=0]

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [962.81ms, 962.81ms] 962.81ms   0.00ns 962.81ms         2 [  1.31ms, 522.23ms] 261.77ms 260.46ms 523.54ms
                     'default_lp':         1 [961.25ms, 961.25ms] 961.25ms   0.00ns 961.25ms         2 [ 25.07ms, 271.65ms] 148.36ms 123.29ms 296.72ms
               'feasibility_pump':         5 [ 35.49us,  20.59ms]   5.01ms   7.88ms  25.05ms         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 [ 11.24ms, 374.28ms] 149.50ms 160.34ms 448.50ms         2 [  4.71ms, 100.04ms]  52.38ms  47.66ms 104.75ms
                  'graph_cst_lns':         4 [ 26.40ms, 471.25ms] 146.04ms 188.03ms 584.14ms         4 [392.66us, 100.00ms]  27.20ms  42.14ms 108.79ms
                  'graph_dec_lns':         5 [642.12us, 727.22us] 694.82us  30.23us   3.47ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
                  'graph_var_lns':         4 [  3.25ms, 394.72ms] 121.47ms 159.34ms 485.90ms         4 [ 10.00ns, 100.00ms]  27.69ms  41.93ms 110.75ms
                   'lb_relax_lns':         2 [224.46ms, 692.44ms] 458.45ms 233.99ms 916.90ms         2 [ 58.99ms, 180.30ms] 119.65ms  60.66ms 239.29ms
                 'lb_tree_search':         1 [962.03ms, 962.03ms] 962.03ms   0.00ns 962.03ms         2 [ 46.70ms, 357.73ms] 202.22ms 155.51ms 404.43ms
                             'ls':         3 [185.99ms, 198.56ms] 193.07ms   5.25ms 579.22ms         3 [100.00ms, 100.01ms] 100.01ms   1.09us 300.02ms
                         'ls_lin':         3 [184.53ms, 197.21ms] 191.41ms   5.23ms 574.23ms         3 [100.01ms, 100.01ms] 100.01ms 954.15ns 300.02ms
                         'max_lp':         1 [960.23ms, 960.23ms] 960.23ms   0.00ns 960.23ms         2 [ 54.76ms, 309.97ms] 182.36ms 127.60ms 364.73ms
                          'no_lp':         1 [962.72ms, 962.72ms] 962.72ms   0.00ns 962.72ms         2 [  1.47ms, 307.56ms] 154.51ms 153.05ms 309.02ms
            'objective_lb_search':         1 [961.78ms, 961.78ms] 961.78ms   0.00ns 961.78ms         2 [ 27.32ms, 277.85ms] 152.58ms 125.26ms 305.16ms
                        'probing':         1 [961.93ms, 961.93ms] 961.93ms   0.00ns 961.93ms         2 [ 23.78ms, 209.41ms] 116.59ms  92.82ms 233.18ms
                   'pseudo_costs':         1 [962.24ms, 962.24ms] 962.24ms   0.00ns 962.24ms         2 [ 10.45ms, 230.27ms] 120.36ms 109.91ms 240.71ms
                  'quick_restart':         1 [962.46ms, 962.46ms] 962.46ms   0.00ns 962.46ms         2 [ 26.31ms, 242.81ms] 134.56ms 108.25ms 269.12ms
            'quick_restart_no_lp':         1 [962.29ms, 962.29ms] 962.29ms   0.00ns 962.29ms         2 [  1.47ms, 387.33ms] 194.40ms 192.93ms 388.80ms
                  'reduced_costs':         1 [962.28ms, 962.28ms] 962.28ms   0.00ns 962.28ms         2 [ 10.98ms, 284.67ms] 147.83ms 136.85ms 295.65ms
                      'rins/rens':         5 [  5.83ms, 164.45ms]  39.09ms  62.74ms 195.47ms         3 [532.00ns,  27.21ms]   9.08ms  12.82ms  27.24ms
                    'rnd_cst_lns':         5 [  5.24ms, 364.03ms]  88.53ms 138.16ms 442.65ms         5 [117.00ns, 100.02ms]  20.89ms  39.57ms 104.47ms
                    'rnd_var_lns':         5 [  3.80ms, 350.83ms] 105.89ms 131.69ms 529.46ms         5 [ 10.00ns, 100.12ms]  26.01ms  38.47ms 130.07ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    365     13'322    26'162        38            1'518     14'735     433'786        888'795
                     'default_lp':    360        223     2'683         1            1'396      1'709      18'329         75'411
                      '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'318         0            1'397      1'518       9'928         43'548
                         'max_lp':    354         51     2'336         1            1'367      1'523      10'970         49'774
                          'no_lp':    354      9'411    19'232        31            2'929     12'523     510'946      1'595'878
            'objective_lb_search':    363        152     3'652         1            2'028      2'400      18'109         82'150
                        'probing':    375         10       949         0              793        803       5'753         19'583
                   'pseudo_costs':    354        208     5'301         2            2'785      3'245      26'943        127'193
                  'quick_restart':    373         44     5'172         3            2'708      3'151      21'269         98'318
            'quick_restart_no_lp':    400      5'851    67'570       506            5'259     12'012     363'467      1'389'119
                  'reduced_costs':    356        138     4'513         2            2'090      2'400      17'023         83'402

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     16      0    365      349            134                81             5'421
                     'default_lp':      9      0    360      351            116                40               170
                      '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':     17      0    354      337            150                40                 0
                         'max_lp':     16      0    354      338            148                41                45
                          'no_lp':      9      0    354      345            102                33             5'678
            'objective_lb_search':     18      0    363      345            198                43                13
                        'probing':      9      0    375      366            588                40                 6
                   'pseudo_costs':      9      0    354      345            104                40               170
                  'quick_restart':     16      0    373      357            346                40                26
            'quick_restart_no_lp':     16      0    400      384            526               256             4'136
                  'reduced_costs':      9      0    356      347            108                40               125

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':        10'940     117'464            24'147     707'532       168'076     4'150
                     'default_lp':           162         931             6'256       7'982             0        52
                      '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':            43         822             1'639       3'726             0         5
                          'no_lp':         7'423      62'319            27'329     373'753             0     3'547
            'objective_lb_search':           143       3'816               728       2'695             0        62
                        'probing':             9          33                91       1'218             0         4
                   'pseudo_costs':           160       1'807             5'863      10'853             0        38
                  'quick_restart':            38         562               605       2'671             0        11
            'quick_restart_no_lp':         4'061      33'894            63'450     247'401             0     1'276
                  'reduced_costs':            88         909             1'293       6'632             0        13

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      109        710        0         0           2               0          0
                     'default_lp':       81        613        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        613        0         0           0               0          0
                         'max_lp':       84        607        0         0           0               0          0
                          'no_lp':      382      2'922        0        19         228             214          1
            'objective_lb_search':      161      1'209        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':      241      1'847        0         0           0               0          0
                  'quick_restart':      268      1'911        0         0           0              10          0
            'quick_restart_no_lp':    1'387      9'533        0        43         418             813          8
                  'reduced_costs':      161      1'229        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':      142            21          0         3'911        197              0        239           0            0         11        0           0      3'349    34'588     13'322
                     'default_lp':        0             0          0            50          1              0          2           0            0          0        0           0          0       507        223
                      '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             5          0              0          0           0            0          0        0           0          0       110         51
                          'no_lp':        5             0          0         3'478         76              9         69          19            0         42        0           0          0    21'475      9'411
            'objective_lb_search':       63             0          0            56          0              5          6           0            0          0        0           0          0       239        152
                        'probing':        0             0          0             4          0              0          0           0            0          0        0           0          0        19         10
                   'pseudo_costs':        0             0          0            35          0              0          3           0            0          0        0           0          0       443        208
                  'quick_restart':        7             0          0            11          0              0          0           0            0          0        0           0          0        70         44
            'quick_restart_no_lp':       35             0          2         1'186         57              7         90          43            8         19        0           0          0    11'184      5'851
                  'reduced_costs':        0             0          0            10          0              0          3           0            0          0        0           0          0       312        138

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1      10'356        704      769        0       38
       'lb_tree_search':          1       4'798        421      157       22        0
               'max_lp':          1       4'648        469      282        9        5
  'objective_lb_search':          1       8'501        838      592        1        3
              'probing':          1       3'439      1'257      162        0        0
         'pseudo_costs':          1       8'300        808      656       77       47
        'quick_restart':          1       5'586        944      373        1        2
        'reduced_costs':          1       7'877        847      396       69       29

Lp dimension                 Final dimension of first component
           'default_lp':    379 rows, 669 columns, 2165 entries
       'lb_tree_search':   1456 rows, 708 columns, 9319 entries
               'max_lp':    767 rows, 708 columns, 9636 entries
  'objective_lb_search':    573 rows, 669 columns, 4854 entries
              'probing':  1066 rows, 669 columns, 16548 entries
         'pseudo_costs':    538 rows, 708 columns, 3133 entries
        'quick_restart':    737 rows, 669 columns, 9064 entries
        'reduced_costs':    717 rows, 708 columns, 5964 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow    Bad  BadScaling
           'default_lp':          0            0     804         0    744           0
       'lb_tree_search':          0            0     179         0  4'677           0
               'max_lp':          0            0     296         0  4'064           0
  'objective_lb_search':          0            0     591         0  1'566           0
              'probing':          0            0     154         0  7'307           0
         'pseudo_costs':          0            0     776         0  1'226           0
        'quick_restart':          0            0     370         0  3'575           0
        'reduced_costs':          0            0     484         0  1'717           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        1'876        2      163       0        147      0             6    704/1'240
       'lb_tree_search':        1'747       66      319       0        270      9             1      421/701
               'max_lp':        1'795       80      606       0        538      5             2      469/836
  'objective_lb_search':        2'010        8      445       0        397      0            28    838/1'446
              'probing':        2'429       68      255       0        231     14             7  1'257/2'234
         'pseudo_costs':        2'134        7      278       0        260      1             1    808/1'413
        'quick_restart':        2'116       41      591       0        517      0            21    944/1'770
        'reduced_costs':        2'173       28      294       0        272      2             1    847/1'440

Lp Cut            default_lp  max_lp  quick_restart  reduced_costs  pseudo_costs  lb_tree_search  probing  objective_lb_search
          CG_FF:          15       5             11             11            13               6       15                   15
           CG_K:          17       4              4              7            14               5        8                   11
          CG_KL:           5       -              -              3             5               -        4                    2
           CG_R:          11      13             13             18            24               6       15                   11
          CG_RB:          19      27             36             31            22              21       41                   31
         CG_RBP:          10      14             15             10            17               4       17                   16
             IB:         397       6            341            376           412               -      329                  367
       MIR_1_FF:          10      12             34             15            17              17       66                   22
        MIR_1_K:           7       4             14              2             5               1       10                    9
       MIR_1_KL:           3       2              6              -             2               1        7                    3
        MIR_1_R:           -       -              -              -             2               -        1                    2
       MIR_1_RB:          11      13             24             24            11               8       26                   20
      MIR_1_RBP:           2       2              8              3             4               1       14                    8
       MIR_2_FF:          19      27             32             17            26              35       55                   39
        MIR_2_K:           8       2             14              6             5               2       20                    9
       MIR_2_KL:           4       -              2              2             -               2        4                    3
        MIR_2_R:           2       2              2              -             1               1        3                    1
       MIR_2_RB:          14      15             34             33            14              21       35                   26
      MIR_2_RBP:           7       2             14              1             2               1       27                    9
       MIR_3_FF:          21      31             29             33            23              40       47                   24
        MIR_3_K:           8      10             22             10            10               9       29                   10
       MIR_3_KL:           3       4              5              2             5               3        7                    1
        MIR_3_R:           1       5              1             10             3               2        3                    2
       MIR_3_RB:           3      27             16             27            12              20       29                   17
      MIR_3_RBP:           5       9             16              7             4               4       20                    6
       MIR_4_FF:          12      21             21             15            18              29       31                   11
        MIR_4_K:           7      15             14              8             8               4       21                    5
       MIR_4_KL:           -       5              9              5             3               4       12                    2
        MIR_4_R:           -       2              -              3             1               -        2                    2
       MIR_4_RB:           8      16              9             15             9              18       24                    9
      MIR_4_RBP:           1      17             11              4             1              13       23                    8
       MIR_5_FF:           6      12             12             12             5              16       20                   10
        MIR_5_K:           -      10             15             11             6               9       21                    9
       MIR_5_KL:           2       7              6              6             2               5       14                    5
        MIR_5_R:           1       -              -              5             -               1        -                    -
       MIR_5_RB:           7       7              3             11             4               8        6                    3
      MIR_5_RBP:           3       7              9              6             4              11       24                    7
       MIR_6_FF:           1      10             12              5            10               6       19                    6
        MIR_6_K:           -       6              5              6             1               9       23                    7
       MIR_6_KL:           1       2              4              6             -               3       11                    4
        MIR_6_R:           1       2              2              1             1               -        4                    1
       MIR_6_RB:           4      14              6             12             2               8       12                    6
      MIR_6_RBP:           1       7              6              5             -              10       24                    6
   ZERO_HALF_FF:          11       5             19             12            15               5       12                   14
    ZERO_HALF_K:           1       -              4              3             7               1        5                    2
   ZERO_HALF_KL:           -       -              1              -             -               2        -                    -
    ZERO_HALF_R:          26      55             71             40            40              42      103                   48
   ZERO_HALF_RB:           8      11             11              5             9               4        8                    5
  ZERO_HALF_RBP:           1       2              1              3             9               3        6                    4

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           2/2     50%    5.38e-01       0.10
  'graph_cst_lns':           1/4     75%    8.21e-01       0.10
  'graph_dec_lns':           0/0      0%    5.00e-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':           4/5     80%    8.80e-01       0.10
    'rnd_cst_lns':           0/5     60%    7.48e-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_lin_restart':        1                  1    17'169         0              0          0         15'692        458'526
  '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'448         0              0          0         23'370        508'597

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

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

Solution repositories    Added  Queried  Synchro
    'alternative_path':      1        0        1
      'best_solutions':     14       42       12
   'fj solution hints':      0        0        0
        'lp solutions':     20        5       13
                'pump':      0        0

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

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

LRAT_status: NA
[Scaling] scaled_objective_bound: 1693.66 corrected_bound: 1693.66 delta: 9.06745e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1693.655268710995
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00813
usertime: 1.00813
deterministic_time: 5.07389
gap_integral: 21.4106
solution_fingerprint: 0x40238ccd9cfcdeef

Example 2:

[19]:
model_options = ModelOptions(
    topology='radial',
    feeder_limit='unlimited',
    feeder_route='segmented',
)
[20]:
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.

[21]:
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: 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]
  4.45e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.39e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=185
  4.97e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.10e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000221628 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.511e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.5622e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.12e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.14e-03s  4.40e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  2.70e-04s  4.55e-04d  [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
  2.67e-04s  0.00e+00d  [DetectDominanceRelations]
  2.87e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.69e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  1.33e-04s  0.00e+00d  [DetectDuplicateConstraints]
  7.51e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.40e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.13e-05s  0.00e+00d  [DetectDifferentVariables]
  7.69e-04s  8.61e-05d  [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
  8.03e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.68e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.66e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.33e-04s  1.02e-04d  [FindBigAtMostOneAndLinearOverlap]
  8.47e-05s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.29e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.69e-06s  0.00e+00d  [MergeClauses]
  1.61e-04s  0.00e+00d  [DetectDominanceRelations]
  3.39e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.96e-04s  0.00e+00d  [DetectDominanceRelations]
  1.42e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  4.80e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.58e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.00018887 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.481e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6203e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  1.07e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  4.07e-03s  1.26e-03d  [Probe] #probed=708
  4.98e-04s  3.09e-04d  [MaxClique]
  5.08e-04s  0.00e+00d  [DetectDominanceRelations]
  1.75e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.05e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  8.82e-05s  0.00e+00d  [DetectDuplicateConstraints]
  7.85e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.06e-04s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  1.17e-05s  0.00e+00d  [DetectDifferentVariables]
  9.45e-05s  4.19e-06d  [ProcessSetPPC] #relevant_constraints=223
  9.40e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.57e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.20e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.38e-04s  9.83e-05d  [FindBigAtMostOneAndLinearOverlap]
  1.48e-04s  1.08e-04d  [FindBigVerticalLinearOverlap]
  6.48e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  5.03e-05s  0.00e+00d  [MergeClauses]
  1.85e-04s  0.00e+00d  [DetectDominanceRelations]
  1.61e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.94e-06s  0.00e+00d  [MergeNoOverlap]
  3.01e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.31e-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.000245565 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] default_lp
#Bound   0.06s best:1765.33376 next:[1471.69595,1765.33376] reduced_costs
#Bound   0.07s best:1765.33376 next:[1672.91324,1765.33376] max_lp
#Bound   0.12s best:1765.33376 next:[1688.52481,1765.33376] max_lp
#Bound   0.13s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Model   0.14s var:696/708 constraints:998/1012
#Bound   0.23s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound   0.30s best:1765.33376 next:[1697.93,1765.33376] lb_tree_search
#Model   0.35s var:676/708 constraints:977/1012
#Bound   0.50s best:1765.33376 next:[1704.77644,1765.33376] lb_tree_search
#Bound   0.51s best:1765.33376 next:[1704.77682,1765.33376] lb_tree_search
#Model   0.55s var:674/708 constraints:975/1012
#Bound   0.64s best:1765.33376 next:[1713.42595,1765.33376] lb_tree_search
#Model   0.70s var:646/708 constraints:946/1012
#Model   0.78s var:644/708 constraints:944/1012
#Model   0.84s var:642/708 constraints:942/1012
#Bound   0.88s best:1765.33376 next:[1716.83974,1765.33376] lb_tree_search
#Model   0.89s var:636/708 constraints:934/1012

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [959.50ms, 959.50ms] 959.50ms   0.00ns 959.50ms         2 [  1.32ms, 364.67ms] 183.00ms 181.67ms 366.00ms
                     'default_lp':         1 [959.24ms, 959.24ms] 959.24ms   0.00ns 959.24ms         2 [ 22.88ms, 328.98ms] 175.93ms 153.05ms 351.86ms
               'feasibility_pump':         5 [ 39.40us,  23.30ms]   5.83ms   8.82ms  29.16ms         3 [141.93us,  12.34ms]   4.21ms   5.75ms  12.64ms
                             '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 [ 25.94ms, 369.48ms] 145.81ms 158.29ms 437.44ms         3 [  1.26ms, 100.06ms]  34.85ms  46.12ms 104.54ms
                  'graph_cst_lns':         5 [ 10.93ms, 157.08ms]  52.84ms  53.38ms 264.18ms         5 [ 45.28us,  29.02ms]   7.23ms  11.01ms  36.17ms
                  'graph_dec_lns':         5 [  2.99ms, 112.32ms]  34.97ms  40.12ms 174.85ms         5 [ 10.00ns,  14.56ms]   3.47ms   5.61ms  17.33ms
                  'graph_var_lns':         5 [  6.76ms, 335.42ms]  93.85ms 122.37ms 469.24ms         5 [  2.16us, 100.01ms]  23.11ms  38.61ms 115.55ms
                   'lb_relax_lns':         2 [114.37ms, 826.76ms] 470.57ms 356.20ms 941.13ms         2 [ 20.23ms, 233.41ms] 126.82ms 106.59ms 253.64ms
                 'lb_tree_search':         1 [962.89ms, 962.89ms] 962.89ms   0.00ns 962.89ms         2 [ 39.55ms, 118.73ms]  79.14ms  39.59ms 158.27ms
                             'ls':         2 [194.58ms, 218.23ms] 206.40ms  11.82ms 412.81ms         2 [100.00ms, 100.01ms] 100.00ms 757.50ns 200.01ms
                         'ls_lin':         3 [177.67ms, 192.04ms] 184.51ms   5.89ms 553.53ms         3 [100.01ms, 100.01ms] 100.01ms 576.21ns 300.02ms
                         'max_lp':         1 [958.90ms, 958.90ms] 958.90ms   0.00ns 958.90ms         2 [ 45.51ms, 335.18ms] 190.35ms 144.83ms 380.69ms
                          'no_lp':         1 [959.11ms, 959.11ms] 959.11ms   0.00ns 959.11ms         2 [  1.57ms, 328.57ms] 165.07ms 163.50ms 330.14ms
            'objective_lb_search':         1 [958.75ms, 958.75ms] 958.75ms   0.00ns 958.75ms         2 [ 21.20ms, 288.01ms] 154.60ms 133.41ms 309.21ms
                        'probing':         1 [962.86ms, 962.86ms] 962.86ms   0.00ns 962.86ms         2 [ 18.34ms, 203.38ms] 110.86ms  92.52ms 221.72ms
                   'pseudo_costs':         1 [958.17ms, 958.17ms] 958.17ms   0.00ns 958.17ms         2 [  9.35ms, 235.77ms] 122.56ms 113.21ms 245.12ms
                  'quick_restart':         1 [963.36ms, 963.36ms] 963.36ms   0.00ns 963.36ms         2 [ 20.28ms, 274.74ms] 147.51ms 127.23ms 295.02ms
            'quick_restart_no_lp':         1 [958.99ms, 958.99ms] 958.99ms   0.00ns 958.99ms         2 [  1.57ms, 407.97ms] 204.77ms 203.20ms 409.54ms
                  'reduced_costs':         1 [958.83ms, 958.83ms] 958.83ms   0.00ns 958.83ms         2 [ 10.41ms, 289.51ms] 149.96ms 139.55ms 299.92ms
                      'rins/rens':         4 [  2.90ms, 377.45ms] 179.24ms 169.91ms 716.96ms         3 [  1.18ms, 100.07ms]  67.08ms  46.60ms 201.25ms
                    'rnd_cst_lns':         4 [  4.59ms, 362.73ms] 102.74ms 150.43ms 410.96ms         4 [ 10.00ns, 100.03ms]  25.44ms  43.07ms 101.77ms
                    'rnd_var_lns':         5 [  4.03ms, 220.25ms]  69.11ms  80.12ms 345.54ms         5 [ 10.00ns,  45.18ms]  12.36ms  17.38ms  61.81ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    366     10'964    34'030        25            1'631     12'378     507'130      1'124'062
                     'default_lp':    372        171     2'412         1            1'354      1'649      20'913         69'284
                      '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     7'048         0            3'815      4'426      40'791        108'492
                         'max_lp':    354         75     2'163         1            1'296      1'511      15'377         52'049
                          'no_lp':    354      9'324    23'430        77            3'702     13'340     477'046      1'562'447
            'objective_lb_search':    365        165     2'362         1            1'357      1'638      20'448         68'854
                        'probing':    375         11       867         0              793        804       8'563         22'092
                   'pseudo_costs':    354        243     2'475         1            1'402      1'730      24'773         87'999
                  'quick_restart':    360         59     7'883         4            3'956      4'650      47'794        167'986
            'quick_restart_no_lp':    396      6'016    62'691       536            5'231     12'047     386'809      1'290'062
                  'reduced_costs':    355        210     4'745         2            1'946      2'410      27'174        100'142

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     36      0    366      330            294                98             3'729
                     'default_lp':     16      0    372      356            216                46               130
                      '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':     36      0    354      318            236                40                 0
                         'max_lp':     32      0    354      322            234                40                60
                          'no_lp':     36      0    354      318            178               133             5'689
            'objective_lb_search':     17      0    365      348            192                47                74
                        'probing':     19      0    375      356            448                40                11
                   'pseudo_costs':      6      0    354      348            104                40               202
                  'quick_restart':     36      1    360      323            258                59                31
            'quick_restart_no_lp':     39      1    396      356            384               240             4'246
                  'reduced_costs':     31      0    355      324            230                46               171

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':         7'737      93'719            20'213     677'377       210'564     2'975
                     'default_lp':           159       3'654             4'696       6'703             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':            72         954             2'483       3'934             0        15
                          'no_lp':         7'575      93'304            43'970     449'844             0     2'180
            'objective_lb_search':           155       4'015             2'071       4'153             0        51
                        'probing':            10         242               471         937             0         0
                   'pseudo_costs':           185       2'653             7'873      13'198             0        41
                  'quick_restart':            48         893             1'333       2'317             0         7
            'quick_restart_no_lp':         4'277      31'336            70'983     261'729             0     1'141
                  'reduced_costs':           131       1'297             3'094       7'437             0        30

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      117        723        0         0           3               9          0
                     'default_lp':       81        598        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':      401      2'912        0         0           0               0          0
                         'max_lp':       81        566        0         0           0               0          0
                          'no_lp':      633      4'578        0        24         296             329          1
            'objective_lb_search':       84        658        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':       81        619        0         0           0               0          0
                  'quick_restart':      514      3'565        0         1          17              63          0
            'quick_restart_no_lp':    1'262      8'788        0        90         816             506          8
                  'reduced_costs':      165      1'174        0         2           8              12          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':       21             0          2         2'789        312              0        186           0            0        231        0           0      3'418    25'365     10'964
                     'default_lp':        0             0          0            32          1              0          1           0            0          0        0           0          0       332        171
                      '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            13          0              0          2           0            0          0        0           0          0       145         75
                          'no_lp':      786           221          0         2'091        101             37         89          24            0        189        0           0          0    21'412      9'324
            'objective_lb_search':       30             0          0            49          0              3          2           0            0          0        0           0          0       319        165
                        'probing':        0             0          0             0          0              0          0           0            0          0        0           0          0        18         11
                   'pseudo_costs':        0             0          0            40          0              0          1           0            0          0        0           0          0       501        243
                  'quick_restart':        0             0          0             6          0              0          1           1            0          0        0           0          0        68         59
            'quick_restart_no_lp':      191             1          4         1'067         79              3         74          90            4         10        0           0          0    12'393      6'016
                  'reduced_costs':        1             0          0            29          0              0          1           2            0          0        0           0          0       492        210

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1      10'149        694      614        0       15
       'lb_tree_search':          1       1'943        738       60        3        0
               'max_lp':          1       5'429        436      262       11        8
  'objective_lb_search':          1       9'297        695      642        1        5
              'probing':          1       3'813      1'389      135        0        0
         'pseudo_costs':          1      10'070        601      661      117       22
        'quick_restart':          1       5'879        966      311        0        1
        'reduced_costs':          1      10'613        636      509      104       54

Lp dimension                 Final dimension of first component
           'default_lp':    537 rows, 669 columns, 3268 entries
       'lb_tree_search':  1532 rows, 708 columns, 12484 entries
               'max_lp':  1478 rows, 708 columns, 10243 entries
  'objective_lb_search':    489 rows, 669 columns, 2925 entries
              'probing':  1107 rows, 669 columns, 12319 entries
         'pseudo_costs':    418 rows, 708 columns, 2233 entries
        'quick_restart':    879 rows, 669 columns, 8459 entries
        'reduced_costs':    617 rows, 708 columns, 3015 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
           'default_lp':          0            0     621         0     714           0
       'lb_tree_search':          0            0      63         0  10'883           0
               'max_lp':          0            0     281         0   4'905           0
  'objective_lb_search':          0            0     644         0     787           0
              'probing':          0            0     131         0   7'625           0
         'pseudo_costs':          0            0     792         0     310           0
        'quick_restart':          0            0     309         0   4'226           0
        'reduced_costs':          0            0     662         0     946           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        1'906        5      333       0        310      2            11    694/1'252
       'lb_tree_search':        2'104      177    1'407       0      1'199     16            12    738/1'317
               'max_lp':        1'802       24      781       0        642      8            10      436/729
  'objective_lb_search':        1'907        3      333       0        315      0             9    695/1'179
              'probing':        2'601       90    1'140       0        783     29            68  1'389/2'468
         'pseudo_costs':        1'967        0       50       0         50      0             0      601/965
        'quick_restart':        2'178       43    1'226       0        986      7            35    966/1'745
        'reduced_costs':        2'002        0      451       0        383      0             9    636/1'127

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

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           0/3     67%    7.21e-01       0.10
  'graph_cst_lns':           0/5     80%    8.80e-01       0.10
  'graph_dec_lns':           0/5     80%    8.80e-01       0.10
  'graph_var_lns':           0/5     80%    8.73e-01       0.10
   'lb_relax_lns':           0/2     50%    5.38e-01       0.50
      'rins/rens':           1/4     50%    5.97e-01       0.10
    'rnd_cst_lns':           0/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':        2                  2    33'683         0              0          0         26'176        807'725
             'ls_lin_restart_perturb':        1                  1    16'719         0              0          0         22'408        475'427
                   '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
      'default_lp':    1
  'initial_domain':    1
  'lb_tree_search':    6
          'max_lp':    3
   'reduced_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      0        0        0
      'best_solutions':      2       41        2
   'fj solution hints':      0        0        0
        'lp solutions':     18        4       10
                'pump':      0        0

Improving bounds shared    Num  Sym
        'lb_tree_search':   52    0
                'max_lp':   18    0
               'probing':    2    0
         'quick_restart':    4    0
   'quick_restart_no_lp':    3    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           17            86
                'no_lp':          1          0           18            86
  'objective_lb_search':          0          0           15            86
              'probing':         79          0            9            86
         'pseudo_costs':          0          0            9            86
        'quick_restart':          3          0           18            86
  'quick_restart_no_lp':          3          0           18            86
        'reduced_costs':          0          0           17            86

LRAT_status: NA
[Scaling] scaled_objective_bound: 1716.84 corrected_bound: 1716.84 delta: 1.56927e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1716.839733456794
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00769
usertime: 1.00769
deterministic_time: 4.77917
gap_integral: 18.9574
solution_fingerprint: 0x7cfd54e085bf6326

But the solution by HGSRouter can warmstart the MILPRouter.

[22]:
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.81e-04s  0.00e+00d  [DetectDominanceRelations]
  3.75e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.39e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=185
  5.92e-05s  0.00e+00d  [DetectDuplicateColumns]
  6.71e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000306224 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] [1.037e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.7796e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  8.27e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.47e-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
  1.85e-04s  0.00e+00d  [DetectDominanceRelations]
  1.66e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  7.40e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  8.91e-05s  0.00e+00d  [DetectDuplicateConstraints]
  7.24e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.39e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.28e-05s  0.00e+00d  [DetectDifferentVariables]
  1.32e-03s  8.61e-05d  [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
  1.02e-04s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  3.08e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.75e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  1.49e-04s  1.02e-04d  [FindBigAtMostOneAndLinearOverlap]
  9.04e-05s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.46e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.11e-05s  0.00e+00d  [MergeClauses]
  5.06e-04s  0.00e+00d  [DetectDominanceRelations]
  2.91e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.63e-04s  0.00e+00d  [DetectDominanceRelations]
  1.98e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  1.36e-04s  0.00e+00d  [DetectDuplicateColumns]
  3.54e-04s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000199714 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.032e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.4984e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  2.15e-04s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.77e-03s  1.26e-03d  [Probe] #probed=708
  2.39e-04s  3.09e-04d  [MaxClique]
  4.28e-04s  0.00e+00d  [DetectDominanceRelations]
  1.52e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  8.85e-05s  0.00e+00d  [ProcessAtMostOneAndLinear]
  8.14e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.80e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  8.94e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  9.49e-06s  0.00e+00d  [DetectDifferentVariables]
  8.35e-05s  4.19e-06d  [ProcessSetPPC] #relevant_constraints=223
  6.98e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=182
  2.34e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.33e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  3.78e-04s  9.83e-05d  [FindBigAtMostOneAndLinearOverlap]
  2.35e-04s  1.08e-04d  [FindBigVerticalLinearOverlap]
  1.55e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.64e-05s  0.00e+00d  [MergeClauses]
  4.76e-04s  0.00e+00d  [DetectDominanceRelations]
  1.83e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.01e-06s  0.00e+00d  [MergeNoOverlap]
  3.29e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.58e-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.000522599 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] default_lp
#Bound   0.06s best:1765.33376 next:[1471.69595,1765.33376] pseudo_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
#Model   0.12s var:696/708 constraints:998/1012
#Bound   0.12s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Bound   0.21s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound   0.29s best:1765.33376 next:[1697.93,1765.33376] lb_tree_search
#Model   0.38s var:676/708 constraints:977/1012
#Bound   0.49s best:1765.33376 next:[1704.77644,1765.33376] lb_tree_search
#Bound   0.50s best:1765.33376 next:[1704.77682,1765.33376] lb_tree_search
#Model   0.55s var:674/708 constraints:975/1012
#Bound   0.63s best:1765.33376 next:[1709.61625,1765.33376] lb_tree_search
#Model   0.68s var:660/708 constraints:960/1012
#Model   0.78s var:656/708 constraints:956/1012
#Model   0.88s var:652/708 constraints:952/1012
#Bound   0.89s best:1765.33376 next:[1717.44876,1765.33376] lb_tree_search
#Model   0.94s var:640/708 constraints:939/1012

Task timing                                n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
                           'core':         1 [962.22ms, 962.22ms] 962.22ms   0.00ns 962.22ms         2 [  1.32ms, 392.77ms] 197.05ms 195.72ms 394.09ms
                     'default_lp':         1 [962.18ms, 962.18ms] 962.18ms   0.00ns 962.18ms         2 [ 22.88ms, 322.75ms] 172.82ms 149.94ms 345.63ms
               'feasibility_pump':         5 [ 39.11us,  28.39ms]   6.94ms  10.78ms  34.72ms         3 [141.93us,  12.34ms]   4.21ms   5.75ms  12.64ms
                             '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 [ 27.84ms, 396.63ms] 153.08ms 172.24ms 459.25ms         3 [  1.26ms, 100.08ms]  34.85ms  46.13ms 104.56ms
                  'graph_cst_lns':         5 [ 10.98ms, 188.04ms]  86.64ms  78.72ms 433.19ms         5 [ 45.28us,  45.86ms]  17.72ms  20.29ms  88.60ms
                  'graph_dec_lns':         5 [  2.60ms, 123.27ms]  40.27ms  43.29ms 201.37ms         5 [ 10.00ns,  22.31ms]   5.19ms   8.60ms  25.97ms
                  'graph_var_lns':         5 [  6.69ms, 325.41ms]  93.64ms 117.28ms 468.19ms         5 [  2.16us, 100.01ms]  22.88ms  38.69ms 114.42ms
                   'lb_relax_lns':         2 [118.73ms, 823.87ms] 471.30ms 352.57ms 942.60ms         2 [ 20.23ms, 234.71ms] 127.47ms 107.24ms 254.94ms
                 'lb_tree_search':         1 [961.88ms, 961.88ms] 961.88ms   0.00ns 961.88ms         2 [ 39.55ms, 116.14ms]  77.84ms  38.30ms 155.69ms
                             'ls':         2 [225.43ms, 226.48ms] 225.96ms 523.88us 451.92ms         2 [100.00ms, 100.01ms] 100.00ms   1.01us 200.01ms
                         'ls_lin':         3 [174.70ms, 192.93ms] 185.95ms   8.03ms 557.84ms         3 [100.00ms, 100.01ms] 100.01ms   1.12us 300.02ms
                         'max_lp':         1 [960.02ms, 960.02ms] 960.02ms   0.00ns 960.02ms         2 [ 45.51ms, 345.53ms] 195.52ms 150.01ms 391.04ms
                          'no_lp':         1 [962.34ms, 962.34ms] 962.34ms   0.00ns 962.34ms         2 [  1.57ms, 325.56ms] 163.56ms 161.99ms 327.13ms
            'objective_lb_search':         1 [961.54ms, 961.54ms] 961.54ms   0.00ns 961.54ms         2 [ 21.20ms, 307.95ms] 164.57ms 143.37ms 329.15ms
                        'probing':         1 [961.77ms, 961.77ms] 961.77ms   0.00ns 961.77ms         2 [ 18.34ms, 203.38ms] 110.86ms  92.52ms 221.72ms
                   'pseudo_costs':         1 [961.36ms, 961.36ms] 961.36ms   0.00ns 961.36ms         2 [  9.35ms, 259.12ms] 134.24ms 124.88ms 268.47ms
                  'quick_restart':         1 [961.77ms, 961.77ms] 961.77ms   0.00ns 961.77ms         2 [ 20.28ms, 273.07ms] 146.67ms 126.40ms 293.34ms
            'quick_restart_no_lp':         1 [961.60ms, 961.60ms] 961.60ms   0.00ns 961.60ms         2 [  1.57ms, 413.31ms] 207.44ms 205.87ms 414.88ms
                  'reduced_costs':         1 [961.70ms, 961.70ms] 961.70ms   0.00ns 961.70ms         2 [ 10.41ms, 282.35ms] 146.38ms 135.97ms 292.75ms
                      'rins/rens':         4 [  4.58ms, 365.83ms] 109.28ms 149.09ms 437.12ms         3 [997.20us, 100.01ms]  35.49ms  45.66ms 106.46ms
                    'rnd_cst_lns':         5 [  4.25ms, 320.38ms]  80.13ms 120.61ms 400.66ms         5 [ 10.00ns,  85.31ms]  17.91ms  33.71ms  89.55ms
                    'rnd_var_lns':         5 [  4.01ms, 259.71ms]  78.62ms  95.76ms 393.10ms         5 [ 10.00ns,  71.22ms]  17.51ms  27.47ms  87.57ms

Search stats                        Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
                           'core':    366     13'367    34'400        50            1'593     14'810     465'499        978'438
                     'default_lp':    370        156     2'385         1            1'355      1'635      20'006         67'044
                      '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     8'328         0            4'461      5'186      48'022        135'224
                         'max_lp':    354         74     2'186         1            1'318      1'522      15'813         53'351
                          'no_lp':    354      9'699    23'439        67            3'700     13'692     494'718      1'587'729
            'objective_lb_search':    367        181     2'368         1            1'358      1'655      20'767         69'816
                        'probing':    375         11       867         0              793        804       8'563         22'092
                   'pseudo_costs':    354        244     2'479         1            1'398      1'727      24'867         88'805
                  'quick_restart':    360         59     7'611         4            3'971      4'646      47'278        165'567
            'quick_restart_no_lp':    405      5'954    61'336       523            5'612     12'446     422'892      1'383'285
                  'reduced_costs':    354        182     5'880         3            2'575      3'123      31'854        118'327

SAT formula                         Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
                           'core':     34      0    366      332            302               322             5'880
                     'default_lp':     16      0    370      354            208                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':     34      0    354      320            244                40                 0
                         'max_lp':     26      0    354      328            206                40                58
                          'no_lp':     28      0    354      326            176               123             5'442
            'objective_lb_search':     17      0    367      350            198                47                93
                        'probing':     19      0    375      356            448                40                11
                   'pseudo_costs':      8      0    354      346            114                41               205
                  'quick_restart':     34      1    360      325            262                52                36
            'quick_restart_no_lp':     35      1    405      369            368               275             4'197
                  'reduced_costs':     34      0    354      320            244                47               145

SAT stats                           ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
                           'core':        10'690     152'022            41'503     836'154       243'132     3'279
                     'default_lp':           143       3'208             4'684       6'751             0        37
                      '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':            69         919             2'540       3'696             0        16
                          'no_lp':         8'017      97'624            32'577     464'922             0     2'771
            'objective_lb_search':           169       4'553             2'473       4'430             0        49
                        'probing':            10         242               471         937             0         0
                   'pseudo_costs':           180       2'290             6'799      11'608             0        37
                  'quick_restart':            48         962             1'228       2'247             0        10
            'quick_restart_no_lp':         4'194      31'333            75'454     247'758             0     1'085
                  'reduced_costs':           135       1'667             2'318       8'902             0        26

Vivification                        Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
                           'core':      117        723        0         0           3               9          0
                     'default_lp':       81        598        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':      481      3'512        0         0           0               0          0
                         'max_lp':       81        578        0         0           0               0          0
                          'no_lp':      664      4'795        0        26         315             384          1
            'objective_lb_search':       84        658        0         0           0               0          0
                        'probing':        0          0        0         0           0               0          0
                   'pseudo_costs':       81        614        0         0           0               0          0
                  'quick_restart':      492      3'268        0         0           2              51          0
            'quick_restart_no_lp':    1'720     11'811        0       133       1'239             799         15
                  'reduced_costs':      249      1'804        0         1           3              16          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':       63             0          2         3'105        246              0        174           0            0          2        0           0      3'624    31'998     13'367
                     'default_lp':        0             0          0            37          0              0          0           0            0          0        0           0          0       314        156
                      '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            14          0              0          2           0            0          0        0           0          0       143         74
                          'no_lp':      786           221          0         2'668        118             53        103          26            0        192        0           0          0    22'569      9'699
            'objective_lb_search':       30             0          0            48          0              2          1           0            0          0        0           0          0       353        181
                        'probing':        0             0          0             0          0              0          0           0            0          0        0           0          0        18         11
                   'pseudo_costs':        1             0          0            32          0              0          5           0            0          0        0           0          0       498        244
                  'quick_restart':        0             0          0            10          0              0          0           0            0          0        0           0          0        80         59
            'quick_restart_no_lp':      133             3          4         1'021         65              5         64         133           11         24        0           0          0    11'704      5'954
                  'reduced_costs':        2             0          0            19          1              0          7           1            0          0        0           0          0       456        182

Lp stats                  Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
           'default_lp':          1      10'019        681      564        0       17
       'lb_tree_search':          1       1'881        741       59        3        0
               'max_lp':          1       5'482        436      261       13        7
  'objective_lb_search':          1       9'898        700      663        1        4
              'probing':          1       3'813      1'389      135        0        0
         'pseudo_costs':          1      10'869        625      678      137       19
        'quick_restart':          1       5'836        990      305        0        1
        'reduced_costs':          1       9'294        770      416       87       39

Lp dimension                 Final dimension of first component
           'default_lp':    516 rows, 669 columns, 3230 entries
       'lb_tree_search':  1539 rows, 708 columns, 12781 entries
               'max_lp':  1498 rows, 708 columns, 10513 entries
  'objective_lb_search':    487 rows, 669 columns, 2869 entries
              'probing':  1107 rows, 669 columns, 12319 entries
         'pseudo_costs':    480 rows, 708 columns, 2364 entries
        'quick_restart':    870 rows, 669 columns, 8822 entries
        'reduced_costs':    647 rows, 708 columns, 5090 entries

Lp debug                  CutPropag  CutEqPropag  Adjust  Overflow     Bad  BadScaling
           'default_lp':          0            0     574         0     714           0
       'lb_tree_search':          0            0      62         0  11'263           0
               'max_lp':          0            0     281         0   4'905           0
  'objective_lb_search':          0            0     664         0     787           0
              'probing':          0            0     131         0   7'591           0
         'pseudo_costs':          0            0     825         0     310           0
        'quick_restart':          0            0     303         0   4'211           0
        'reduced_costs':          0            0     538         0   1'662           0

Lp pool                   Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
           'default_lp':        1'893        5      340       0        310      2            19    681/1'218
       'lb_tree_search':        2'107      171    1'311       0      1'120     21            11    741/1'330
               'max_lp':        1'802       24      696       0        559      8             8      436/729
  'objective_lb_search':        1'912        3      338       0        315      0            14    700/1'186
              'probing':        2'601       90    1'140       0        783     29            68  1'389/2'468
         'pseudo_costs':        1'991        0       64       0         64      0             0    625/1'001
        'quick_restart':        2'202       44    1'114       0        903      7            27    990/1'760
        'reduced_costs':        2'136        8      768       0        585      0            11    770/1'314

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

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           0/3     67%    7.21e-01       0.10
  'graph_cst_lns':           0/5     80%    8.80e-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/2     50%    5.38e-01       0.50
      'rins/rens':           1/4     75%    8.08e-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    33'684         0              0          0         26'176        807'638
             'ls_lin_restart_perturb':        1                  1    16'719         0              0          0         22'408        475'427
                   'ls_restart_decay':        1                  1    20'803         0              0          0            761        395'626
  'ls_restart_decay_compound_perturb':        1                  1         0    21'779          3'834      8'971             41        516'917

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

Objective bounds     Num
    'am1_presolve':    1
      'default_lp':    1
  'initial_domain':    1
  'lb_tree_search':    6
          'max_lp':    3
    'pseudo_costs':    1

Solution repositories    Added  Queried  Synchro
    'alternative_path':      0        0        0
      'best_solutions':      2       42        2
   'fj solution hints':      0        0        0
        'lp solutions':     17        4       11
                'pump':      0        0

Improving bounds shared    Num  Sym
        'lb_tree_search':   41    0
                'max_lp':   21    0
               'probing':    4    0
         'quick_restart':    4    0
   'quick_restart_no_lp':    2    0

Clauses shared            #Exported  #Imported  #BinaryRead  #BinaryTotal
                 'core':          0          0           17            85
           'default_lp':          0          0           14            85
       'lb_tree_search':          0          0           17            85
               'max_lp':          0          0           17            85
                'no_lp':          2          0           17            85
  'objective_lb_search':          0          0           14            85
              'probing':         79          0            9            85
         'pseudo_costs':          0          0            9            85
        'quick_restart':          3          0           17            85
  'quick_restart_no_lp':          1          0           17            85
        'reduced_costs':          0          0           17            85

LRAT_status: NA
[Scaling] scaled_objective_bound: 1717.45 corrected_bound: 1717.45 delta: 1.5622e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1717.448755604366
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00795
usertime: 1.00795
deterministic_time: 4.82558
gap_integral: 19.1036
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)
[23]:
milp_router_ortools = MILPRouter(solver_name='ortools.cp_sat', time_limit=15, mip_gap=0.01)
milp_router_ortools.optiwindnet_default_options
[23]:
{}
[24]:
milp_router_cplex = MILPRouter(solver_name='cplex', time_limit=15, mip_gap=0.01)
milp_router_cplex.optiwindnet_default_options
[24]:
{'parallel': -1, 'emphasis_mip': 4}
[25]:
milp_router_cbc = MILPRouter(solver_name='cbc', time_limit=15, mip_gap=0.01)
milp_router_cbc.optiwindnet_default_options
[25]:
{'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'}
[26]:
milp_router_gurobi = MILPRouter(solver_name='gurobi', time_limit=15, mip_gap=0.01)
milp_router_gurobi.optiwindnet_default_options
[26]:
{'mipfocus': 1}
[27]:
milp_router_highs = MILPRouter(solver_name='highs', time_limit=15, mip_gap=0.01)
milp_router_highs.optiwindnet_default_options
[27]:
{'parallel': 'on'}
[28]:
milp_router_scip = MILPRouter(solver_name='scip', time_limit=15, mip_gap=0.01)
milp_router_scip.optiwindnet_default_options
[28]:
{'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.

[29]:
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.98e-04s  0.00e+00d  [DetectDominanceRelations]
  6.91e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  2.74e-05s  0.00e+00d  [ExtractEncodingFromLinear] #potential_supersets=145
  9.35e-05s  0.00e+00d  [DetectDuplicateColumns]
  8.53e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000309602 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.6485e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [2.3042e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
  7.65e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  7.20e-03s  3.89e-03d  [Probe] #probed=1'416 #new_binary_clauses=354
  5.29e-04s  2.15e-04d  [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
  1.91e-04s  0.00e+00d  [DetectDominanceRelations]
  2.23e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  6.47e-04s  0.00e+00d  [ProcessAtMostOneAndLinear] #num_changes=354
  8.26e-05s  0.00e+00d  [DetectDuplicateConstraints]
  6.94e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  1.37e-04s  6.08e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
  1.34e-05s  0.00e+00d  [DetectDifferentVariables]
  7.40e-04s  7.01e-05d  [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
  7.87e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.79e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.35e-05s  1.65e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
  2.28e-04s  9.42e-05d  [FindBigAtMostOneAndLinearOverlap]
  1.73e-04s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.30e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  9.81e-06s  0.00e+00d  [MergeClauses]
  1.48e-04s  0.00e+00d  [DetectDominanceRelations]
  2.80e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
  1.51e-04s  0.00e+00d  [DetectDominanceRelations]
  1.15e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.66e-05s  0.00e+00d  [DetectDuplicateColumns]
  7.02e-05s  0.00e+00d  [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00020166 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.875e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.7264e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
  8.26e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  3.37e-03s  1.27e-03d  [Probe] #probed=708
  1.62e-04s  1.45e-04d  [MaxClique]
  2.78e-04s  0.00e+00d  [DetectDominanceRelations]
  2.09e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  2.16e-04s  0.00e+00d  [ProcessAtMostOneAndLinear]
  6.71e-05s  0.00e+00d  [DetectDuplicateConstraints]
  5.62e-05s  0.00e+00d  [DetectDuplicateConstraintsWithDifferentEnforcements]
  9.29e-05s  4.59e-06d  [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
  9.81e-06s  0.00e+00d  [DetectDifferentVariables]
  8.30e-05s  3.03e-06d  [ProcessSetPPC] #relevant_constraints=183
  8.64e-05s  0.00e+00d  [TransformClausesToExactlyOne] #num_amos=142
  2.63e-04s  0.00e+00d  [DetectEncodedComplexDomains]
  1.43e-05s  1.10e-07d  [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
  1.21e-04s  9.14e-05d  [FindBigAtMostOneAndLinearOverlap]
  8.53e-05s  1.07e-04d  [FindBigVerticalLinearOverlap]
  1.28e-05s  5.27e-06d  [FindBigHorizontalLinearOverlap] #linears=80
  1.68e-05s  0.00e+00d  [MergeClauses]
  1.82e-04s  0.00e+00d  [DetectDominanceRelations]
  1.72e-03s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
  3.33e-06s  0.00e+00d  [MergeNoOverlap]
  3.02e-06s  0.00e+00d  [MergeNoOverlap2D]
  1.33e-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.000214068 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.05s best:1765.33376 next:[1377.09321,1765.33376] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#2       0.05s best:1760.06663 next:[1377.09321,1760.06663] graph_cst_lns (d=5.00e-01 s=7 t=0.10 p=0.00 stall=0 h=base)
#Bound   0.05s best:1760.06663 next:[1439.63944,1760.06663] default_lp
#3       0.08s 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.12s best:1758.41439 next:[1485.28171,1758.41439] default_lp
#Bound   0.13s best:1758.41439 next:[1627.06701,1758.41439] default_lp
#Bound   0.25s best:1758.41439 next:[1639.88368,1758.41439] default_lp
#Bound   0.27s best:1758.41439 next:[1653.37248,1758.41439] default_lp
#Model   0.28s var:706/708 constraints:969/972
#Bound   0.29s best:1758.41439 next:[1658.77163,1758.41439] default_lp
#Bound   0.36s best:1758.41439 next:[1663.47561,1758.41439] default_lp
#Bound   0.37s best:1758.41439 next:[1666.17074,1758.41439] default_lp
#Model   0.39s var:702/708 constraints:965/972
#Bound   0.44s best:1758.41439 next:[1670.91239,1758.41439] default_lp
#Model   0.50s var:696/708 constraints:958/972
#Bound   0.82s best:1758.41439 next:[1671.03065,1758.41439] default_lp

Task timing                   n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
              'core':         1 [958.45ms, 958.45ms] 958.45ms   0.00ns 958.45ms         2 [  1.31ms, 857.47ms] 429.39ms 428.08ms 858.78ms
        'default_lp':         1 [958.77ms, 958.77ms] 958.77ms   0.00ns 958.77ms         2 [ 21.25ms, 432.30ms] 226.78ms 205.53ms 453.56ms
  'feasibility_pump':         4 [ 24.46us,  12.48ms]   3.78ms   5.06ms  15.11ms         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 [  8.50ms, 203.88ms]  77.75ms  76.08ms 311.02ms         4 [236.07us, 100.01ms]  32.87ms  39.74ms 131.47ms
     'graph_cst_lns':         4 [  6.07ms, 205.14ms] 107.19ms  74.55ms 428.75ms         4 [ 49.37us, 100.04ms]  48.48ms  37.56ms 193.91ms
     'graph_dec_lns':         4 [  1.39ms, 167.45ms]  45.31ms  70.58ms 181.24ms         4 [ 10.00ns, 100.05ms]  25.07ms  43.29ms 100.28ms
     'graph_var_lns':         4 [  1.91ms,  53.68ms]  21.55ms  20.25ms  86.22ms         4 [ 10.00ns,  17.93ms]   5.82ms   7.32ms  23.27ms
                'ls':         4 [ 95.88ms, 108.13ms] 102.63ms   5.18ms 410.52ms         4 [100.00ms, 100.01ms] 100.00ms 868.15ns 400.02ms
             'no_lp':         1 [958.29ms, 958.29ms] 958.29ms   0.00ns 958.29ms         2 [  1.57ms, 695.76ms] 348.66ms 347.10ms 697.32ms
         '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.46ms,  88.97ms]  31.65ms  31.08ms 158.26ms         5 [ 23.00ns,  36.92ms]  10.27ms  13.94ms  51.34ms
       'rnd_var_lns':         5 [  2.68ms, 174.45ms]  64.07ms  70.09ms 320.34ms         5 [ 10.00ns,  78.65ms]  26.79ms  32.87ms 133.97ms

Search stats          Bools  Conflicts  Branches  Restarts  BacktrackToRoot  Backtrack  BoolPropag  IntegerPropag
             'core':    365     23'272    47'026        70            1'579     24'617     787'552      1'697'263
       'default_lp':    373        177     6'609         2            3'503      4'100      29'660        137'689
  'fs_random_no_lp':      0          0         0         0                0          0           0              0
            'no_lp':    354     17'845    37'060        90            4'640     22'721     985'048      3'098'858

SAT formula           Fixed  Equiv  Total  VarLeft  BinaryClauses  PermanentClauses  TemporaryClauses
             'core':      6      0    365      359            106                81             7'690
       'default_lp':      6      0    373      367            162                40               166
  'fs_random_no_lp':      0      0      0        0              0                 0                 0
            'no_lp':      6      0    354      348             78               104             8'110

SAT stats             ClassicMinim  LitRemoved  LitRemovedBinary  LitLearned  LitForgotten  Subsumed
             'core':        19'728     289'800            32'202   1'355'986       554'322     6'339
       'default_lp':           117       1'080             5'580      10'539             0        10
  'fs_random_no_lp':             0           0                 0           0             0         0
            'no_lp':        14'692     159'814            53'644     752'596       135'164     6'197

Vivification          Clauses  Decisions  LitTrue  Subsumed  LitRemoved  DecisionReused  Conflicts
             'core':      111        711        0         0           0              10          0
       'default_lp':      321      2'483        0         0           0               0          0
  'fs_random_no_lp':        0          0        0         0           0               0          0
            'no_lp':      835      6'364        0        29         287             512          1

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':       30             0          0         5'824        325              0        515           0            0         22        0           0      8'835    58'571     23'272
       'default_lp':        0             0          0             8          1              0          2           0            0          0        0           0          0       366        177
  'fs_random_no_lp':        0             0          0             0          0              0          0           0            0          0        0           0          0         0          0
            'no_lp':       53             0          0         6'004        167             64        193          29            0         68        0           0      3'081    39'904     17'845

Lp stats         Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.
  'default_lp':          1      10'264      1'073      791        1       17

Lp dimension      Final dimension of first component
  'default_lp':  591 rows, 669 columns, 5145 entries

Lp debug         CutPropag  CutEqPropag  Adjust  Overflow    Bad  BadScaling
  'default_lp':          0            0     805         0  4'118           0

Lp pool          Constraints  Updates  Simplif  Merged  Shortened  Split  Strengthened    Cuts/Call
  'default_lp':        2'245       42      177       0        121      0            26  1'073/2'046

Lp Cut            default_lp
          CG_FF:          15
           CG_K:           8
          CG_KL:           5
           CG_R:          14
          CG_RB:          21
         CG_RBP:          14
             IB:         405
       MIR_1_FF:          41
        MIR_1_K:          11
       MIR_1_KL:          10
       MIR_1_RB:          27
      MIR_1_RBP:          11
       MIR_2_FF:          29
        MIR_2_K:          16
       MIR_2_KL:           6
        MIR_2_R:           5
       MIR_2_RB:          23
      MIR_2_RBP:          18
       MIR_3_FF:          31
        MIR_3_K:          17
       MIR_3_KL:           4
        MIR_3_R:           2
       MIR_3_RB:          11
      MIR_3_RBP:          16
       MIR_4_FF:          21
        MIR_4_K:          13
       MIR_4_KL:           6
        MIR_4_R:           1
       MIR_4_RB:          11
      MIR_4_RBP:          12
       MIR_5_FF:          22
        MIR_5_K:          14
       MIR_5_KL:           9
        MIR_5_R:           4
       MIR_5_RB:          11
      MIR_5_RBP:          12
       MIR_6_FF:           9
        MIR_6_K:          10
       MIR_6_KL:           8
        MIR_6_R:           1
       MIR_6_RB:           4
      MIR_6_RBP:          11
   ZERO_HALF_FF:          13
    ZERO_HALF_K:           3
   ZERO_HALF_KL:           2
    ZERO_HALF_R:          94
   ZERO_HALF_RB:          10
  ZERO_HALF_RBP:          12

LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
  'graph_arc_lns':           1/4     75%    8.08e-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/5     80%    8.80e-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_restart_compound_perturb':        1                  1         0    23'363          1'792     10'781            143        529'013
                   'ls_restart_decay':        1                  1    21'061         0              0          0            813        406'510
  'ls_restart_decay_compound_perturb':        1                  1         0    20'766          3'146      8'809             50        491'821
           'ls_restart_decay_perturb':        1                  1    21'674         0              0          0            862        416'274

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':   10
  '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':   12    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: 1671.03 corrected_bound: 1671.03 delta: 9.31735e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1671.030650155732
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00407
usertime: 1.00407
deterministic_time: 3.06135
gap_integral: 13.8546
solution_fingerprint: 0x40238ccd9cfcdeef

[29]:
TerseLinks(scope='topology', topology='branched', T=40, R=1, links=40)

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.