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 |
|---|---|
|
Controls whether the solution allows “radial” or “branched” subtrees |
|
Determines if feeder paths must be “straight” or may be “segmented” |
|
Specifies limits on the number of feeders used in the solution |
|
Whether subtree loads must be balanced |
|
Required when |
These options change the formulation of the problem before it is handed to the solver.
Capability of different routers¶
Router |
Topology |
Feeder Route |
Feeder Limit |
|---|---|---|---|
EWRouter |
Not user-controllable |
Controllable via |
Not user controllable |
HGSRouter |
Always produces radial topology |
Not user-controllable |
Controllable via |
MILPRouter |
Controllable via |
Controllable via |
Controllable via |
Import required functions
[1]:
from optiwindnet.api import WindFarmNetwork, EWRouter, HGSRouter, MILPRouter, ModelOptions
[2]:
# Display figures as SVG in Jupyter notebooks
%config InlineBackend.figure_formats = ['svg']
Access ModelOptions help
[3]:
ModelOptions.help()
topology in {"radial", "branched"} default: branched
Set the topology of subtrees in the solution.
feeder_route in {"straight", "segmented"} default: segmented
If feeder routes must be "straight" or can be detoured ("segmented").
feeder_limit in {"unlimited", "specified", "minimum", "min_plus1", "min_plus2", "min_plus3"} default: unlimited
Whether to limit the maximum number of feeders, if set to "specified", additional kwarg "max_feeders" must be given.
balanced [bool] default: False
Whether to enforce balanced subtrees (subtree loads differ at most by one unit).
max_feeders [int] default: 0
Maximum number of feeders (used only if <feeder_limit = "specified">)
Optimize an exemplary location
[4]:
wfn = WindFarmNetwork.from_pbf(filepath='data/DTU_letters.osm.pbf', cables=[(2, 1500.0), (5, 1800.0), (7, 2000.0)])
[5]:
wfn
[5]:
EWRouter¶
This router does not accept
ModelOptionsas an argument.The optional EWRouter() parameter
feeder_routecan be set to'segmented'(default) or'straight'.
Example using feeder_route='segmented'
[6]:
terse = wfn.optimize(router=EWRouter())
wfn
[6]:
Example using feeder_route='straight'
[7]:
terse = wfn.optimize(router=EWRouter(feeder_route='straight'))
wfn
[7]:
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 = Falsefeeder_limitis flexible and generally favors minimizing total cable length:For locations with one substation,
feeder_limitcan be adjusted.For locations with multiple substations, the
feeder_limitargument is ignored, and the number of feeders is fixed to the minimum required.
Other
ModelOptionsparameters, such astopology(HGSRouter always generates radial topologies) andfeeder_route, are not currently supported.
[8]:
hgs_router = HGSRouter(time_limit=2)
terse = wfn.optimize(router=hgs_router)
wfn
[8]:
Set the feeder_limit lower than the possible minimum.
[9]:
hgs_router2 = HGSRouter(time_limit=2, feeder_limit=0)
terse = wfn.optimize(router=hgs_router2)
wfn
Vehicles (feeders) number (0) too low for feasibilty with given capacity (7). Setting to 6.
[9]:
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 |
|
|
feeder_limit |
|
|
feeder_route |
|
|
With MILP, we observe the following behavior across different ModelOptions settings:
First MILP Run (model_options1)¶
[10]:
model_options1 = ModelOptions(
topology='branched',
feeder_limit='unlimited',
feeder_route='segmented',
)
The solver constructs a branched network structure without applying any limit on the number of feeders. The feeder routes follow a segmented (piecewise-straight) pattern, as specified. All aspects of the network are consistent with the given ModelOptions.
This solution can also serve as a valid warm start for subsequent optimizations.
[11]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=10,
mip_gap=0.01,
model_options=model_options1,
verbose=True,
)
[12]:
# lower cable capacities to cleary observe the difference between runs
wfn = WindFarmNetwork.from_pbf(
filepath='data/DTU_letters.osm.pbf',
cables=[(2, 1500.0), (5, 1800.0)],
)
terse = wfn.optimize(router=milp_router)
wfn
Running basic LP presolve, initial problem dimensions: 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FixedVariablePreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::SingletonPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::ForcingAndImpliedFreeConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FreeConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::UnconstrainedVariablePreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 10 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0xd59f925c7e3b068e)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.91e-04s 0.00e+00d [DetectDominanceRelations]
4.45e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
8.01e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
2.01e-04s 0.00e+00d [DetectDuplicateColumns]
8.42e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000468374 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.0911e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.8383e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
3.13e-04s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
8.47e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
2.46e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
4.02e-04s 0.00e+00d [DetectDominanceRelations]
2.86e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.83e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
3.65e-04s 0.00e+00d [DetectDuplicateConstraints]
8.43e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.53e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.34e-05s 0.00e+00d [DetectDifferentVariables]
8.42e-04s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
8.40e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
4.70e-04s 0.00e+00d [DetectEncodedComplexDomains]
6.80e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.39e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
1.05e-04s 1.07e-04d [FindBigVerticalLinearOverlap]
1.36e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.96e-06s 0.00e+00d [MergeClauses]
1.61e-04s 0.00e+00d [DetectDominanceRelations]
2.98e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.78e-04s 0.00e+00d [DetectDominanceRelations]
2.21e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.68e-05s 0.00e+00d [DetectDuplicateColumns]
7.26e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000240571 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [2.0893e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [3.2264e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
8.90e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.49e-03s 1.27e-03d [Probe] #probed=708
1.70e-04s 1.45e-04d [MaxClique]
1.82e-04s 0.00e+00d [DetectDominanceRelations]
1.45e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.37e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
7.56e-05s 0.00e+00d [DetectDuplicateConstraints]
9.10e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
4.09e-04s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.84e-05s 0.00e+00d [DetectDifferentVariables]
9.80e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
9.47e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
4.21e-04s 0.00e+00d [DetectEncodedComplexDomains]
6.26e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
3.88e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
1.10e-04s 1.07e-04d [FindBigVerticalLinearOverlap]
1.61e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.58e-05s 0.00e+00d [MergeClauses]
2.09e-04s 0.00e+00d [DetectDominanceRelations]
2.31e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.59e-06s 0.00e+00d [MergeNoOverlap]
2.54e-06s 0.00e+00d [MergeNoOverlap2D]
1.08e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xd87267f4fcc3ea39)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00019219 dtime: 0.00043646
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#Model 0.04s var:708/708 constraints:972/972
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#1 0.04s best:4527.87552 next:[1364.00132,4527.87552] fj_restart(batch:1 lin{mvs:87 evals:1'073} #w_updates:1 #perturb:0)
#Bound 0.05s best:4527.87552 next:[1377.09321,4527.87552] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#Bound 0.05s best:4527.87552 next:[1439.63944,4527.87552] default_lp
#2 0.05s best:4413.64442 next:[1439.63944,4413.64442] rnd_cst_lns (d=5.00e-01 s=17 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#3 0.06s best:4303.06138 next:[1439.63944,4303.06138] rnd_var_lns (d=5.00e-01 s=16 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound 0.06s best:4303.06138 next:[1440.53408,4303.06138] default_lp
#Bound 0.06s best:4303.06138 next:[1446.52178,4303.06138] reduced_costs
#4 0.06s best:2124.90285 next:[1446.52178,2124.90284] no_lp (fixed_bools=0/354)
#5 0.07s best:2122.86795 next:[1446.52178,2122.86795] quick_restart_no_lp (fixed_bools=0/356)
#Bound 0.07s best:2122.86795 next:[1657.8143,2122.86795] max_lp
#6 0.07s best:2106.0405 next:[1657.8143,2106.0405] quick_restart_no_lp (fixed_bools=0/356)
#7 0.07s best:2105.59557 next:[1657.8143,2105.59557] quick_restart_no_lp (fixed_bools=0/357)
#8 0.08s best:2086.27975 next:[1657.8143,2086.27974] no_lp (fixed_bools=0/354)
#9 0.08s best:2084.91276 next:[1657.8143,2084.91276] no_lp (fixed_bools=0/354)
#10 0.08s best:2080.58847 next:[1657.8143,2080.58847] no_lp (fixed_bools=0/354)
#11 0.09s best:2066.47295 next:[1657.8143,2066.47295] rnd_var_lns (d=7.07e-01 s=25 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#12 0.09s best:2062.69622 next:[1657.8143,2062.69622] rnd_cst_lns (d=7.07e-01 s=26 t=0.10 p=1.00 stall=0 h=base) [combined with: no_lp...] (fixed_bools=0/354)
#13 0.11s best:1953.34464 next:[1657.8143,1953.34464] rins_lp_lns (d=5.00e-01 s=28 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#14 0.12s best:1949.54437 next:[1657.8143,1949.54437] quick_restart_no_lp (fixed_bools=0/369)
#15 0.12s best:1943.15324 next:[1657.8143,1943.15323] quick_restart_no_lp (fixed_bools=0/373)
#16 0.13s best:1906.8682 next:[1657.8143,1906.8682] quick_restart_no_lp (fixed_bools=0/373)
#Bound 0.13s best:1906.8682 next:[1677.89266,1906.8682] max_lp
#17 0.14s best:1856.88766 next:[1677.89266,1856.88766] reduced_costs (fixed_bools=0/354)
#Bound 0.14s best:1856.88766 next:[1681.70525,1856.88766] max_lp
#Bound 0.16s best:1856.88766 next:[1682.16269,1856.88766] max_lp
#18 0.17s best:1854.67248 next:[1682.16269,1854.67248] quick_restart_no_lp (fixed_bools=0/379)
#19 0.19s best:1846.17065 next:[1682.16269,1846.17065] quick_restart_no_lp (fixed_bools=0/381)
#20 0.20s best:1829.69442 next:[1682.16269,1829.69442] quick_restart_no_lp (fixed_bools=0/381)
#21 0.23s best:1829.24949 next:[1682.16269,1829.24949] quick_restart_no_lp (fixed_bools=0/381)
#22 0.25s best:1799.78283 next:[1682.16269,1799.78282] reduced_costs (fixed_bools=0/358)
#23 0.26s best:1776.24144 next:[1682.16269,1776.24144] quick_restart_no_lp (fixed_bools=0/386)
#Bound 0.30s best:1776.24144 next:[1685.87825,1776.24144] lb_tree_search
#24 0.33s best:1759.76521 next:[1685.87825,1759.76521] quick_restart_no_lp (fixed_bools=0/386)
#Model 0.40s var:706/708 constraints:969/972
#Bound 0.41s best:1759.76521 next:[1688.02074,1759.76521] max_lp
#Model 0.44s var:696/708 constraints:959/972
#Bound 0.45s best:1759.76521 next:[1688.06841,1759.76521] max_lp
#Bound 0.47s best:1759.76521 next:[1688.07122,1759.76521] max_lp
#Model 0.54s var:694/708 constraints:956/972
#Bound 0.57s best:1759.76521 next:[1696.90766,1759.76521] lb_tree_search
#Model 0.60s var:690/708 constraints:952/972
#Bound 0.88s best:1759.76521 next:[1700.22951,1759.76521] lb_tree_search
#Model 0.95s var:672/708 constraints:933/972
#Bound 1.17s best:1759.76521 next:[1704.01343,1759.76521] lb_tree_search
#Model 1.19s var:660/708 constraints:921/972
#25 1.49s best:1758.41439 next:[1704.01343,1758.41439] reduced_costs (fixed_bools=9/359)
#Bound 1.50s best:1758.41439 next:[1706.02583,1758.41439] lb_tree_search
#Model 1.51s var:656/708 constraints:917/972
#Model 1.61s var:652/708 constraints:913/972
#Bound 1.78s best:1758.41439 next:[1709.1775,1758.41439] lb_tree_search
#Model 1.78s var:640/708 constraints:900/972
#Bound 1.81s best:1758.41439 next:[1709.44111,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=51 @root=10 restarts=0 lp_iters=[0, 0, 626, 140])
#Bound 2.13s best:1758.41439 next:[1710.46561,1758.41439] lb_tree_search
#Bound 2.13s best:1758.41439 next:[1710.48,1758.41439] lb_tree_search
#Bound 2.45s best:1758.41439 next:[1711.7716,1758.41439] lb_tree_search
#Bound 2.45s best:1758.41439 next:[1711.776,1758.41439] lb_tree_search
#Model 2.81s var:628/708 constraints:887/972
#Model 2.91s var:626/708 constraints:885/972
#Bound 2.90s best:1758.41439 next:[1715.14685,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=58 @root=16 restarts=0 lp_iters=[0, 0, 853, 140]) [skipped_logs=3]
#Model 3.13s var:624/708 constraints:882/972
#Model 3.61s var:622/708 constraints:880/972
#Bound 3.74s best:1758.41439 next:[1718.61937,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=72 @root=20 restarts=0 lp_iters=[0, 0, 1'319, 342]) [skipped_logs=6]
#Model 4.16s var:616/708 constraints:874/972
#Model 4.54s var:608/708 constraints:866/972
#Bound 4.97s best:1758.41439 next:[1724.7417,1758.41439] lb_tree_search (nodes=7/7 rc=2 decisions=96 @root=23 restarts=0 lp_iters=[0, 0, 3'115, 342]) [skipped_logs=16]
#Model 5.40s var:604/708 constraints:861/972
#Bound 6.00s best:1758.41439 next:[1726.40252,1758.41439] lb_tree_search (nodes=16/16 rc=2 decisions=143 @root=23 restarts=0 lp_iters=[0, 0, 6'772, 1'044]) [skipped_logs=13]
#Model 6.05s var:602/708 constraints:859/972
#Model 6.99s var:598/708 constraints:855/972
#Bound 6.98s best:1758.41439 next:[1727.51861,1758.41439] lb_tree_search (nodes=23/23 rc=2 decisions=189 @root=23 restarts=0 lp_iters=[0, 0, 10'042, 1'787]) [skipped_logs=11]
#Bound 7.87s best:1758.41439 next:[1728.97694,1758.41439] lb_tree_search (nodes=29/29 rc=3 decisions=251 @root=23 restarts=0 lp_iters=[0, 0, 13'430, 2'293]) [skipped_logs=8]
#Model 8.28s var:592/708 constraints:848/972
#Bound 9.01s best:1758.41439 next:[1729.228,1758.41439] lb_tree_search (nodes=31/31 rc=3 decisions=291 @root=25 restarts=0 lp_iters=[0, 0, 16'135, 2'804]) [skipped_logs=5]
#Model 9.26s var:588/708 constraints:844/972
#Model 9.55s var:578/708 constraints:833/972
#Model 9.83s var:574/708 constraints:827/972
#Bound 9.92s best:1758.41439 next:[1730.08894,1758.41439] lb_tree_search (nodes=36/37 rc=4 decisions=344 @root=25 restarts=0 lp_iters=[0, 0, 19'836, 2'976]) [skipped_logs=9]
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.31ms, 7.71s] 3.85s 3.85s 7.71s
'default_lp': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 1.91ms, 3.93s] 1.97s 1.96s 3.93s
'feasibility_pump': 45 [ 28.37us, 25.49ms] 1.92ms 3.66ms 86.20ms 40 [145.79us, 11.26ms] 443.19us 1.73ms 17.73ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 1 [ 5.17ms, 5.17ms] 5.17ms 0.00ns 5.17ms 1 [257.12us, 257.12us] 257.12us 0.00ns 257.12us
'fs_random': 1 [ 4.84ms, 4.84ms] 4.84ms 0.00ns 4.84ms 1 [ 1.74us, 1.74us] 1.74us 0.00ns 1.74us
'fs_random_no_lp': 1 [ 4.93ms, 4.93ms] 4.93ms 0.00ns 4.93ms 1 [ 1.74us, 1.74us] 1.74us 0.00ns 1.74us
'fs_random_quick_restart_no_lp': 1 [ 4.69ms, 4.69ms] 4.69ms 0.00ns 4.69ms 1 [ 1.74us, 1.74us] 1.74us 0.00ns 1.74us
'graph_arc_lns': 21 [ 19.56ms, 405.26ms] 239.06ms 144.03ms 5.02s 21 [ 1.26ms, 100.15ms] 62.44ms 43.07ms 1.31s
'graph_cst_lns': 26 [824.99us, 404.56ms] 172.37ms 161.35ms 4.48s 23 [ 10.76us, 100.06ms] 49.40ms 46.18ms 1.14s
'graph_dec_lns': 28 [667.71us, 414.48ms] 215.01ms 157.16ms 6.02s 27 [ 10.00ns, 100.15ms] 60.16ms 45.27ms 1.62s
'graph_var_lns': 26 [ 5.06ms, 403.32ms] 207.78ms 163.64ms 5.40s 26 [883.00ns, 100.11ms] 53.04ms 46.16ms 1.38s
'lb_relax_lns': 5 [280.35ms, 1.46s] 936.27ms 496.65ms 4.68s 5 [ 54.78ms, 515.89ms] 306.88ms 193.80ms 1.53s
'lb_tree_search': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 18.39ms, 6.56s] 3.29s 3.27s 6.58s
'ls': 23 [ 51.09ms, 244.43ms] 193.14ms 36.94ms 4.44s 23 [ 25.74ms, 100.01ms] 96.78ms 15.15ms 2.23s
'ls_lin': 22 [ 2.75ms, 230.90ms] 202.90ms 45.85ms 4.46s 22 [234.60us, 100.01ms] 95.47ms 20.78ms 2.10s
'max_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 19.84ms, 4.90s] 2.46s 2.44s 4.92s
'no_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.31ms, 4.75s] 2.38s 2.37s 4.75s
'objective_lb_search': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 2.02ms, 4.45s] 2.23s 2.23s 4.46s
'probing': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.90ms, 4.81s] 2.40s 2.40s 4.81s
'pseudo_costs': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.84ms, 4.89s] 2.45s 2.45s 4.90s
'quick_restart': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.92ms, 4.20s] 2.10s 2.10s 4.20s
'quick_restart_no_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.31ms, 6.97s] 3.48s 3.48s 6.97s
'reduced_costs': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.86ms, 5.07s] 2.54s 2.54s 5.08s
'rins/rens': 23 [ 2.65ms, 440.02ms] 214.14ms 161.53ms 4.93s 21 [ 8.05us, 100.11ms] 63.02ms 44.54ms 1.32s
'rnd_cst_lns': 27 [ 8.70ms, 458.09ms] 187.92ms 156.79ms 5.07s 27 [ 4.02us, 100.18ms] 46.91ms 44.16ms 1.27s
'rnd_var_lns': 20 [ 10.30ms, 418.62ms] 242.20ms 160.65ms 4.84s 20 [ 15.22us, 100.11ms] 63.68ms 45.65ms 1.27s
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 431 150'965 299'483 404 6'412 157'168 4'067'829 8'899'218
'default_lp': 392 2'051 13'646 6 4'973 8'432 118'663 496'023
'fs_random': 354 0 0 0 0 0 0 0
'fs_random_no_lp': 354 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 354 0 0 0 0 0 0 0
'lb_tree_search': 354 0 24'058 0 11'861 14'611 82'247 234'655
'max_lp': 354 1'188 18'877 5 8'088 10'629 108'942 527'656
'no_lp': 354 91'622 172'139 260 10'575 102'853 4'545'610 15'226'952
'objective_lb_search': 391 1'300 18'763 10 7'211 11'014 114'658 513'875
'probing': 395 0 872 0 872 872 6'358 19'526
'pseudo_costs': 354 1'107 21'211 11 8'646 11'485 113'330 560'946
'quick_restart': 364 232 34'014 19 14'097 18'205 149'981 751'645
'quick_restart_no_lp': 463 51'891 518'141 4'501 26'315 82'424 3'536'816 11'643'100
'reduced_costs': 362 944 25'861 10 9'382 12'747 107'021 543'105
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 65 0 431 366 792 4'166 10'372
'default_lp': 68 0 392 324 666 205 1'258
'fs_random': 0 0 354 354 74 40 0
'fs_random_no_lp': 0 0 354 354 74 40 0
'fs_random_quick_restart_no_lp': 0 0 354 354 74 40 0
'lb_tree_search': 53 0 354 301 350 40 0
'max_lp': 58 0 354 296 396 193 858
'no_lp': 67 0 354 287 420 631 7'030
'objective_lb_search': 66 0 391 325 534 199 204
'probing': 0 0 395 395 934 40 0
'pseudo_costs': 67 0 354 287 412 192 678
'quick_restart': 66 0 364 298 466 206 105
'quick_restart_no_lp': 75 0 463 388 1'306 2'166 12'219
'reduced_costs': 67 0 362 295 476 184 120
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 130'790 1'405'453 465'745 6'189'932 3'284'441 54'301
'default_lp': 1'823 26'955 37'617 63'349 0 499
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 1'069 18'665 17'896 50'264 0 262
'no_lp': 76'046 937'253 266'910 3'579'537 1'984'297 25'917
'objective_lb_search': 1'199 24'903 11'158 24'856 0 454
'probing': 0 0 0 0 0 0
'pseudo_costs': 957 14'795 20'906 35'641 0 252
'quick_restart': 193 2'087 2'337 6'705 0 48
'quick_restart_no_lp': 38'210 306'741 496'291 1'885'107 913'942 10'616
'reduced_costs': 771 10'904 8'263 32'401 0 147
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 4'314 64'993 0 829 21'017 3'713 125
'default_lp': 691 4'609 0 4 42 40 1
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 1'521 10'741 0 0 0 0 0
'max_lp': 1'420 8'313 0 57 307 105 0
'no_lp': 5'671 38'921 1 406 4'419 5'292 42
'objective_lb_search': 1'625 8'590 2 70 344 157 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 1'927 10'234 0 65 323 160 0
'quick_restart': 3'898 18'411 0 68 339 911 0
'quick_restart_no_lp': 18'771 123'788 0 1'049 10'579 12'541 162
'reduced_costs': 2'065 11'374 1 79 400 336 2
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 1'258 27 6 51'726 2'117 20 2'575 829 50 831 0 0 76'893 365'336 150'965
'default_lp': 88 16 0 478 0 9 21 4 5 226 0 0 0 4'527 2'051
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 6 0 0 255 3 2 7 57 49 57 0 0 0 2'711 1'188
'no_lp': 5'602 732 0 24'953 1'185 255 964 406 56 656 0 0 49'277 208'863 91'622
'objective_lb_search': 562 40 0 430 0 24 24 70 40 3 0 0 0 2'528 1'300
'probing': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'pseudo_costs': 69 10 0 239 2 6 13 65 46 86 0 0 0 2'471 1'107
'quick_restart': 22 4 0 45 0 0 3 68 44 29 0 0 0 389 232
'quick_restart_no_lp': 1'986 12 13 9'896 578 69 720 1'049 654 452 0 0 21'985 107'366 51'891
'reduced_costs': 109 278 1 139 1 41 8 79 48 209 0 0 0 2'369 944
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 112'646 1'640 6'393 0 245
'lb_tree_search': 1 27'140 1'135 314 131 0
'max_lp': 1 87'387 1'336 2'756 848 110
'objective_lb_search': 1 86'219 1'837 4'167 1 147
'probing': 1 19'530 2'091 230 1 0
'pseudo_costs': 1 81'149 1'872 2'494 816 133
'quick_restart': 1 41'398 1'785 1'510 1 20
'reduced_costs': 1 73'588 1'767 1'801 672 131
Lp dimension Final dimension of first component
'default_lp': 608 rows, 669 columns, 4926 entries
'lb_tree_search': 830 rows, 708 columns, 13608 entries
'max_lp': 772 rows, 708 columns, 8982 entries
'objective_lb_search': 606 rows, 669 columns, 6017 entries
'probing': 1745 rows, 669 columns, 50176 entries
'pseudo_costs': 814 rows, 708 columns, 10418 entries
'quick_restart': 829 rows, 669 columns, 11815 entries
'reduced_costs': 723 rows, 708 columns, 8770 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 6'624 0 5'060 0
'lb_tree_search': 0 0 445 0 35'898 0
'max_lp': 0 0 3'712 0 11'351 0
'objective_lb_search': 0 10 4'305 0 12'913 0
'probing': 0 0 227 0 45'544 0
'pseudo_costs': 0 0 3'427 0 17'093 0
'quick_restart': 0 2 1'526 0 29'123 0
'reduced_costs': 0 2 2'588 0 25'131 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 2'812 73 2'555 0 2'102 2 68 1'640/3'564
'lb_tree_search': 2'461 587 4'789 0 3'089 255 25 1'135/2'175
'max_lp': 2'662 180 2'704 0 2'246 27 27 1'336/2'444
'objective_lb_search': 3'009 183 3'153 0 1'833 63 57 1'837/3'605
'probing': 3'263 559 0 0 0 1'091 52 2'091/3'920
'pseudo_costs': 3'198 294 3'853 0 2'615 68 38 1'872/3'304
'quick_restart': 2'957 451 7'077 0 4'138 307 101 1'785/3'450
'reduced_costs': 3'093 424 5'087 0 3'498 134 33 1'767/3'108
Lp Cut max_lp reduced_costs objective_lb_search quick_restart pseudo_costs lb_tree_search probing default_lp
CG_FF: 16 10 19 10 6 5 36 19
CG_K: 14 4 13 6 5 5 17 6
CG_KL: - - 3 1 - - 1 3
CG_R: 24 20 41 10 13 10 52 34
CG_RB: 44 62 72 40 35 27 85 75
CG_RBP: 15 6 38 17 11 11 51 32
Clique: 1 1 - - 1 - - -
IB: 343 463 592 481 636 4 414 726
MIR_1_FF: 52 75 76 108 87 76 138 60
MIR_1_K: 6 11 21 27 7 10 47 15
MIR_1_KL: 4 12 15 28 11 10 30 6
MIR_1_R: - - 3 2 1 - 2 -
MIR_1_RB: 27 23 34 37 20 18 34 27
MIR_1_RBP: 2 3 22 25 8 10 26 12
MIR_2_FF: 57 80 76 83 101 87 104 59
MIR_2_K: 15 13 30 31 14 16 47 22
MIR_2_KL: 6 10 9 15 23 13 20 9
MIR_2_R: 4 3 5 2 8 2 5 3
MIR_2_RB: 51 47 49 47 47 44 44 38
MIR_2_RBP: 18 6 25 36 25 17 40 21
MIR_3_FF: 54 79 33 56 81 56 58 49
MIR_3_K: 20 19 34 31 16 19 19 20
MIR_3_KL: 6 11 8 15 11 8 13 6
MIR_3_R: 9 4 5 3 9 4 4 2
MIR_3_RB: 44 52 28 28 34 37 32 25
MIR_3_RBP: 24 25 30 19 26 30 20 19
MIR_4_FF: 33 45 21 22 50 60 41 24
MIR_4_K: 15 31 29 22 17 23 28 26
MIR_4_KL: 8 21 14 9 13 17 24 12
MIR_4_R: 1 3 3 5 8 1 2 -
MIR_4_RB: 32 30 22 21 39 24 13 22
MIR_4_RBP: 26 28 20 24 20 29 20 19
MIR_5_FF: 28 36 21 26 27 35 29 15
MIR_5_K: 22 21 26 31 27 32 26 21
MIR_5_KL: 13 16 4 16 14 13 9 13
MIR_5_R: 3 3 - - 6 2 1 2
MIR_5_RB: 22 31 11 14 23 15 11 13
MIR_5_RBP: 25 36 18 39 19 39 21 14
MIR_6_FF: 16 31 11 22 17 24 34 20
MIR_6_K: 15 20 21 18 19 22 26 6
MIR_6_KL: 7 12 5 7 16 11 11 4
MIR_6_R: 6 1 - 2 2 1 - 2
MIR_6_RB: 21 10 7 12 8 9 6 12
MIR_6_RBP: 22 25 15 15 25 27 31 12
ZERO_HALF_FF: 11 11 28 14 13 4 19 21
ZERO_HALF_K: 2 1 15 7 1 1 11 6
ZERO_HALF_KL: 1 - 11 3 - 1 2 5
ZERO_HALF_R: 121 243 187 254 213 192 335 72
ZERO_HALF_RB: 21 49 26 30 48 24 22 6
ZERO_HALF_RBP: 9 24 41 14 11 10 30 5
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 3/21 48% 6.42e-01 0.10
'graph_cst_lns': 10/25 56% 8.55e-01 0.10
'graph_dec_lns': 3/27 52% 8.23e-01 0.10
'graph_var_lns': 5/26 54% 8.11e-01 0.10
'lb_relax_lns': 3/5 40% 4.32e-01 0.50
'rins/rens': 5/23 48% 5.69e-01 0.10
'rnd_cst_lns': 9/27 63% 9.37e-01 0.10
'rnd_var_lns': 4/20 45% 6.79e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'fj_restart': 1 1 87 0 0 0 1 1'373
'ls_lin_restart': 1 1 18'934 0 0 0 9'573 546'673
'ls_lin_restart_compound': 3 2 0 78'033 6'608 35'705 219 1'636'460
'ls_lin_restart_compound_perturb': 5 5 0 125'575 10'212 57'676 710 2'627'550
'ls_lin_restart_decay': 3 3 67'824 0 0 0 3'115 1'206'994
'ls_lin_restart_decay_compound': 2 2 0 43'339 6'555 18'389 77 969'984
'ls_lin_restart_decay_compound_perturb': 4 4 0 92'356 16'206 38'067 185 2'114'374
'ls_lin_restart_decay_perturb': 2 2 46'421 0 0 0 2'285 795'282
'ls_lin_restart_perturb': 2 2 19'566 0 0 0 7'914 576'829
'ls_restart': 2 2 35'318 0 0 0 19'121 1'056'328
'ls_restart_compound': 2 2 0 51'524 2'934 24'293 453 1'019'422
'ls_restart_compound_perturb': 1 1 0 25'339 1'980 11'678 180 538'588
'ls_restart_decay': 5 4 102'725 0 0 0 4'847 1'753'421
'ls_restart_decay_compound': 3 3 0 71'744 11'359 30'185 114 1'516'498
'ls_restart_decay_compound_perturb': 2 2 0 47'706 7'458 20'123 93 1'078'161
'ls_restart_decay_perturb': 2 2 46'016 0 0 0 1'869 849'369
'ls_restart_perturb': 6 6 109'825 0 0 0 84'620 3'059'146
Solutions (25) Num Rank
'fj_restart': 2 [0,1]
'no_lp': 8 [3,10]
'quick_restart_no_lp': 24 [4,24]
'reduced_costs': 6 [16,25]
'rins_lp_lns': 2 [12,13]
'rnd_cst_lns': 4 [1,12]
'rnd_var_lns': 4 [2,11]
Objective bounds Num
'am1_presolve': 1
'default_lp': 2
'initial_domain': 1
'lb_tree_search': 90
'max_lp': 7
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 18 47 18
'best_solutions': 86 189 72
'fj solution hints': 0 0 0
'lp solutions': 93 23 70
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 89 0
'max_lp': 14 0
'pseudo_costs': 10 0
'quick_restart': 8 0
'quick_restart_no_lp': 8 0
'reduced_costs': 20 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 305 242 25 26
'default_lp': 1 288 26 26
'fs_random': 0 0 0 26
'fs_random_no_lp': 0 0 0 26
'fs_random_quick_restart_no_lp': 0 0 0 26
'lb_tree_search': 0 0 16 26
'max_lp': 3 287 22 26
'no_lp': 133 222 26 26
'objective_lb_search': 4 288 22 26
'probing': 0 0 0 26
'pseudo_costs': 5 287 26 26
'quick_restart': 7 283 25 26
'quick_restart_no_lp': 323 123 26 26
'reduced_costs': 54 270 24 26
LRAT_status: NA
[Scaling] scaled_objective_bound: 1730.09 corrected_bound: 1730.09 delta: 1.41548e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1730.088940153552
integers: 669
booleans: 354
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 10.013
usertime: 10.013
deterministic_time: 73.4958
gap_integral: 252.735
solution_fingerprint: 0x40238ccd9cfcdeef
[12]:
Second MILP Run (model_options2)¶
[13]:
model_options2 = ModelOptions(
topology='radial',
feeder_limit='minimum',
feeder_route='straight',
)
The solver produces a strictly radial network, restricting the number of feeders to the minimum required given the number or turbines and maximum cable capacity. The feeder_route='straight' tells the solver to avoid blocking any feeder route with cables which tends to produce more straight-line connections, although the feeder routes may still have bends due to the exclusion zones.
Note: with this setting, neither EWRouter nor HGSRouter could secure warmstarting of the model.
[14]:
milp_router2 = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=10,
mip_gap=0.01,
model_options=model_options2
)
terse = wfn.optimize(router=milp_router2)
wfn
[14]:
Summary¶
The MILP router strictly adheres to all provided ModelOptions:
It guarantees enforcement of topology (
branchedvs.radial).It respects feeder constraints (
unlimitedvs.minimum).It conforms to the required routing structure (
segmentedvs.straight).
Warmstarting of MILP routers¶
Warmstarter Compatibility with different ModelOptions setting is summarized in table below.
Model Option |
Value |
Warmstarter |
|---|---|---|
Feeder limit |
Unlimited |
âś… all works |
Minimum |
only HGSRouter |
|
Feeder route |
Straight |
âś… all works |
Segmented |
âś… all works |
|
Topology |
Branched |
âś… all works |
Radial |
only HGSRouter |
In the following section, a few examples are run to further illustrate this table.
Example 1:
[15]:
model_options = ModelOptions(
topology='branched',
feeder_limit='unlimited',
feeder_route='segmented',
)
[16]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
model_options=model_options,
verbose=True
)
Either EWRouter or HGSRouter can be used to warmstart.
[17]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0x76dbad3948cc2e8b)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.69e-04s 0.00e+00d [DetectDominanceRelations]
4.30e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.31e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
5.04e-05s 0.00e+00d [DetectDuplicateColumns]
6.05e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000200597 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.737e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6083e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.21e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.60e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
1.65e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
2.74e-04s 0.00e+00d [DetectDominanceRelations]
2.10e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.07e-03s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
9.51e-05s 0.00e+00d [DetectDuplicateConstraints]
7.46e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.53e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.30e-05s 0.00e+00d [DetectDifferentVariables]
8.72e-04s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
6.77e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.34e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.59e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.08e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
7.95e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.12e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
8.48e-06s 0.00e+00d [MergeClauses]
3.17e-04s 0.00e+00d [DetectDominanceRelations]
2.86e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.89e-04s 0.00e+00d [DetectDominanceRelations]
1.83e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
7.06e-05s 0.00e+00d [DetectDuplicateColumns]
7.72e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00024352 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.647e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.9756e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
6.37e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.48e-03s 1.27e-03d [Probe] #probed=708
1.17e-04s 1.45e-04d [MaxClique]
1.78e-04s 0.00e+00d [DetectDominanceRelations]
1.25e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.37e-04s 0.00e+00d [ProcessAtMostOneAndLinear]
8.97e-05s 0.00e+00d [DetectDuplicateConstraints]
7.08e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.20e-04s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.31e-05s 0.00e+00d [DetectDifferentVariables]
8.52e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
9.26e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.76e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.62e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.21e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
8.39e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.20e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.06e-06s 0.00e+00d [MergeClauses]
1.55e-04s 0.00e+00d [DetectDominanceRelations]
1.29e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.59e-06s 0.00e+00d [MergeNoOverlap]
2.50e-06s 0.00e+00d [MergeNoOverlap2D]
1.08e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xb3500f89df7d1090)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000199893 dtime: 0.00043646
Preloading model.
#Bound 0.03s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.03s best:1812.72623 next:[1364.00132,1812.72623] complete_hint
#Model 0.04s var:708/708 constraints:972/972
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.05s best:1812.72623 next:[1377.09321,1812.72623] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#2 0.05s best:1806.84914 next:[1377.09321,1806.84914] no_lp [hint] (fixed_bools=0/354)
#Bound 0.05s best:1806.84914 next:[1446.52178,1806.84914] pseudo_costs
#3 0.05s best:1805.92157 next:[1446.52178,1805.92157] graph_cst_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base)
#Bound 0.06s best:1805.92157 next:[1657.8143,1805.92157] max_lp
#4 0.07s best:1805.47664 next:[1657.8143,1805.47664] quick_restart_no_lp (fixed_bools=0/358)
#5 0.07s best:1764.91917 next:[1657.8143,1764.91917] graph_arc_lns (d=5.00e-01 s=14 t=0.10 p=0.00 stall=0 h=base)
#Bound 0.11s best:1764.91917 next:[1674.7528,1764.91917] lb_tree_search
#Bound 0.12s best:1764.91917 next:[1677.89266,1764.91917] max_lp
#Model 0.13s var:704/708 constraints:967/972
#Model 0.15s var:698/708 constraints:961/972
#6 0.19s best:1758.41439 next:[1677.89266,1758.41439] quick_restart_no_lp (fixed_bools=5/373)
#Bound 0.25s best:1758.41439 next:[1682.16026,1758.41439] max_lp
#Model 0.30s var:696/708 constraints:958/972
#Bound 0.32s best:1758.41439 next:[1683.27935,1758.41439] lb_tree_search
#Bound 0.32s best:1758.41439 next:[1686.94433,1758.41439] max_lp
#Model 0.40s var:688/708 constraints:950/972
#Bound 0.41s best:1758.41439 next:[1687.01627,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=23 @root=2 restarts=0 lp_iters=[0, 0, 238, 446])
#Bound 0.46s best:1758.41439 next:[1688.22486,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=34 @root=2 restarts=0 lp_iters=[0, 0, 552, 483])
#Bound 0.48s best:1758.41439 next:[1688.27541,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=36 @root=2 restarts=0 lp_iters=[0, 0, 726, 483])
#Bound 0.49s best:1758.41439 next:[1688.28918,1758.41439] lb_tree_search (nodes=8/8 rc=0 decisions=45 @root=2 restarts=0 lp_iters=[0, 0, 825, 485])
#Bound 0.51s best:1758.41439 next:[1688.4031,1758.41439] lb_tree_search (nodes=11/11 rc=2 decisions=61 @root=2 restarts=0 lp_iters=[0, 0, 948, 492])
#Bound 0.52s best:1758.41439 next:[1688.98027,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=72 @root=2 restarts=0 lp_iters=[0, 0, 1'056, 520])
#Bound 0.53s best:1758.41439 next:[1689.29185,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=73 @root=2 restarts=0 lp_iters=[0, 0, 1'109, 520])
#Bound 0.56s best:1758.41439 next:[1689.5203,1758.41439] lb_tree_search (nodes=14/14 rc=3 decisions=78 @root=2 restarts=0 lp_iters=[0, 0, 1'323, 552])
#Bound 0.57s best:1758.41439 next:[1689.52221,1758.41439] lb_tree_search (nodes=15/15 rc=3 decisions=84 @root=2 restarts=0 lp_iters=[0, 0, 1'429, 587])
#Bound 0.60s best:1758.41439 next:[1690.01805,1758.41439] lb_tree_search (nodes=16/16 rc=4 decisions=93 @root=2 restarts=0 lp_iters=[0, 0, 1'596, 614])
#Bound 0.63s best:1758.41439 next:[1690.23198,1758.41439] lb_tree_search (nodes=17/17 rc=4 decisions=98 @root=2 restarts=0 lp_iters=[0, 0, 1'773, 667])
#Bound 0.64s best:1758.41439 next:[1691.98313,1758.41439] lb_tree_search (nodes=17/17 rc=4 decisions=99 @root=2 restarts=0 lp_iters=[0, 0, 1'863, 667])
#Model 0.77s var:678/708 constraints:939/972
#Model 0.96s var:676/708 constraints:937/972
#Bound 0.88s best:1758.41439 next:[1693.98017,1758.41439] lb_tree_search (nodes=29/29 rc=6 decisions=179 @root=2 restarts=0 lp_iters=[0, 0, 3'395, 860]) [skipped_logs=11]
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [985.47ms, 985.47ms] 985.47ms 0.00ns 985.47ms 2 [ 1.31ms, 441.92ms] 221.61ms 220.30ms 443.23ms
'default_lp': 1 [963.45ms, 963.45ms] 963.45ms 0.00ns 963.45ms 2 [ 24.79ms, 252.35ms] 138.57ms 113.78ms 277.15ms
'feasibility_pump': 5 [ 38.92us, 22.74ms] 5.47ms 8.73ms 27.35ms 2 [145.79us, 11.26ms] 5.70ms 5.56ms 11.41ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_quick_restart_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 3 [ 39.00ms, 334.94ms] 194.40ms 121.27ms 583.21ms 3 [ 4.71ms, 100.30ms] 58.83ms 40.03ms 176.48ms
'graph_cst_lns': 4 [ 8.39ms, 375.14ms] 105.38ms 155.81ms 421.51ms 3 [392.66us, 100.07ms] 33.66ms 46.96ms 100.97ms
'graph_dec_lns': 5 [705.81us, 134.04ms] 37.85ms 50.25ms 189.25ms 4 [ 10.00ns, 25.05ms] 7.27ms 10.40ms 29.07ms
'graph_var_lns': 4 [ 3.34ms, 369.78ms] 126.84ms 147.33ms 507.36ms 4 [ 10.00ns, 100.01ms] 30.74ms 40.81ms 122.98ms
'lb_relax_lns': 2 [231.43ms, 568.12ms] 399.78ms 168.35ms 799.56ms 2 [ 58.99ms, 137.88ms] 98.43ms 39.44ms 196.87ms
'lb_tree_search': 1 [962.98ms, 962.98ms] 962.98ms 0.00ns 962.98ms 2 [ 46.70ms, 480.14ms] 263.42ms 216.72ms 526.84ms
'ls': 3 [184.35ms, 197.10ms] 190.69ms 5.21ms 572.06ms 3 [100.00ms, 100.01ms] 100.00ms 1.40us 300.01ms
'ls_lin': 3 [181.38ms, 192.46ms] 188.56ms 5.09ms 565.69ms 3 [100.00ms, 100.01ms] 100.01ms 1.67us 300.02ms
'max_lp': 1 [962.75ms, 962.75ms] 962.75ms 0.00ns 962.75ms 2 [ 54.76ms, 334.50ms] 194.63ms 139.87ms 389.26ms
'no_lp': 1 [963.23ms, 963.23ms] 963.23ms 0.00ns 963.23ms 2 [ 1.47ms, 320.74ms] 161.11ms 159.64ms 322.21ms
'objective_lb_search': 1 [962.01ms, 962.01ms] 962.01ms 0.00ns 962.01ms 2 [ 27.31ms, 265.12ms] 146.21ms 118.91ms 292.43ms
'probing': 1 [960.77ms, 960.77ms] 960.77ms 0.00ns 960.77ms 2 [ 23.68ms, 205.56ms] 114.62ms 90.94ms 229.24ms
'pseudo_costs': 1 [962.63ms, 962.63ms] 962.63ms 0.00ns 962.63ms 2 [ 10.45ms, 245.31ms] 127.88ms 117.43ms 255.75ms
'quick_restart': 1 [962.75ms, 962.75ms] 962.75ms 0.00ns 962.75ms 2 [ 24.27ms, 270.75ms] 147.51ms 123.24ms 295.02ms
'quick_restart_no_lp': 1 [962.71ms, 962.71ms] 962.71ms 0.00ns 962.71ms 2 [ 1.47ms, 409.60ms] 205.53ms 204.07ms 411.06ms
'reduced_costs': 1 [962.84ms, 962.84ms] 962.84ms 0.00ns 962.84ms 2 [ 10.98ms, 262.15ms] 136.57ms 125.59ms 273.13ms
'rins/rens': 5 [ 5.78ms, 179.88ms] 48.33ms 66.78ms 241.66ms 4 [ 1.28us, 33.45ms] 9.40ms 13.98ms 37.60ms
'rnd_cst_lns': 4 [ 5.29ms, 381.02ms] 106.95ms 158.37ms 427.82ms 4 [117.00ns, 100.01ms] 25.30ms 43.14ms 101.19ms
'rnd_var_lns': 5 [ 4.02ms, 264.85ms] 90.23ms 99.11ms 451.14ms 5 [ 10.00ns, 86.27ms] 22.64ms 33.03ms 113.18ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 365 14'937 38'710 54 2'313 17'328 332'518 792'596
'default_lp': 367 122 2'504 1 1'390 1'621 13'769 58'287
'fs_random': 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0
'lb_tree_search': 354 0 2'382 0 1'393 1'527 10'129 44'607
'max_lp': 354 67 2'362 1 1'368 1'541 11'827 53'172
'no_lp': 354 9'353 21'400 44 3'667 13'261 510'520 1'631'836
'objective_lb_search': 366 161 3'700 1 2'015 2'414 18'536 83'446
'probing': 375 10 949 0 793 803 5'903 20'044
'pseudo_costs': 354 217 5'319 2 2'774 3'249 26'938 127'511
'quick_restart': 364 58 5'107 3 2'742 3'127 21'759 100'575
'quick_restart_no_lp': 395 6'308 69'942 562 5'237 12'447 382'211 1'442'932
'reduced_costs': 356 141 4'604 2 2'045 2'387 17'451 85'647
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 16 0 365 349 248 96 6'717
'default_lp': 10 0 367 357 170 42 100
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 16 0 354 338 230 40 0
'max_lp': 15 0 354 339 148 41 59
'no_lp': 16 0 354 338 196 24 5'452
'objective_lb_search': 17 0 366 349 272 42 15
'probing': 9 0 375 366 820 40 7
'pseudo_costs': 11 0 354 343 122 41 176
'quick_restart': 15 0 364 349 212 43 37
'quick_restart_no_lp': 16 0 395 379 674 261 4'253
'reduced_costs': 15 0 356 341 152 40 132
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 12'732 211'160 41'662 843'309 134'541 4'624
'default_lp': 116 954 1'744 6'923 0 20
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 53 770 1'887 4'723 0 7
'no_lp': 7'828 74'794 36'573 420'200 0 3'152
'objective_lb_search': 150 4'198 899 2'814 0 69
'probing': 10 50 185 1'338 0 3
'pseudo_costs': 166 1'825 5'929 11'362 0 39
'quick_restart': 35 426 1'075 3'185 0 15
'quick_restart_no_lp': 4'510 37'248 67'618 272'004 0 1'583
'reduced_costs': 93 550 1'481 8'431 0 9
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 266 1'825 0 5 63 45 1
'default_lp': 81 610 0 0 0 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 81 610 0 0 0 0 0
'max_lp': 84 609 0 0 0 0 0
'no_lp': 476 3'566 0 13 135 171 2
'objective_lb_search': 161 1'208 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 241 1'843 0 0 0 0 0
'quick_restart': 266 1'878 0 1 3 15 0
'quick_restart_no_lp': 1'288 9'125 0 37 490 656 7
'reduced_costs': 161 1'208 0 0 0 0 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 24 0 1 4'284 136 0 340 5 0 27 0 0 3'336 36'765 14'937
'default_lp': 0 0 0 15 0 0 5 0 0 0 0 0 0 249 122
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 0 0 0 7 0 0 0 0 0 0 0 0 0 133 67
'no_lp': 431 112 0 3'058 95 9 94 13 0 53 0 0 0 21'258 9'353
'objective_lb_search': 65 0 0 61 0 6 8 0 0 0 0 0 0 257 161
'probing': 0 0 0 3 0 0 0 0 0 0 0 0 0 20 10
'pseudo_costs': 0 0 0 36 1 0 3 0 0 0 0 0 0 460 217
'quick_restart': 0 0 0 13 0 0 2 1 0 1 0 0 0 94 58
'quick_restart_no_lp': 78 0 2 1'477 68 2 106 37 6 17 0 0 0 12'478 6'308
'reduced_costs': 0 0 0 7 0 0 2 0 0 0 0 0 0 321 141
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 8'056 737 575 1 8
'lb_tree_search': 1 6'094 391 201 28 0
'max_lp': 1 5'065 512 307 17 6
'objective_lb_search': 1 8'294 843 622 1 0
'probing': 1 3'580 1'144 175 1 0
'pseudo_costs': 1 8'851 807 690 83 44
'quick_restart': 1 5'613 1'060 398 0 6
'reduced_costs': 1 7'574 798 423 75 45
Lp dimension Final dimension of first component
'default_lp': 480 rows, 669 columns, 2575 entries
'lb_tree_search': 1466 rows, 708 columns, 9598 entries
'max_lp': 770 rows, 708 columns, 10099 entries
'objective_lb_search': 528 rows, 669 columns, 4162 entries
'probing': 1072 rows, 669 columns, 13805 entries
'pseudo_costs': 531 rows, 708 columns, 3122 entries
'quick_restart': 744 rows, 669 columns, 9032 entries
'reduced_costs': 630 rows, 708 columns, 5650 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 580 0 757 0
'lb_tree_search': 0 0 229 0 3'494 0
'max_lp': 0 0 330 0 3'947 0
'objective_lb_search': 0 0 618 0 1'612 0
'probing': 0 0 169 0 7'061 0
'pseudo_costs': 0 0 813 0 1'226 0
'quick_restart': 0 0 399 0 2'588 0
'reduced_costs': 0 0 532 0 1'373 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 1'909 2 197 0 181 0 11 737/1'308
'lb_tree_search': 1'717 47 279 0 222 7 1 391/654
'max_lp': 1'838 62 576 0 496 4 0 512/898
'objective_lb_search': 2'015 11 387 0 340 1 23 843/1'452
'probing': 2'316 51 302 0 219 18 5 1'144/2'019
'pseudo_costs': 2'133 7 328 0 310 1 1 807/1'408
'quick_restart': 2'232 24 517 0 434 5 10 1'060/1'774
'reduced_costs': 2'124 15 532 0 480 0 0 798/1'302
Lp Cut probing default_lp max_lp quick_restart reduced_costs pseudo_costs lb_tree_search objective_lb_search
CG_FF: 20 12 5 19 11 13 6 16
CG_K: 10 6 5 16 6 14 5 11
CG_KL: 3 3 - 1 1 5 - 2
CG_R: 9 9 14 18 18 24 6 11
CG_RB: 42 19 33 37 34 22 21 31
CG_RBP: 16 10 13 24 10 17 4 14
IB: 331 384 8 381 370 411 - 376
MIR_1_FF: 57 20 11 30 18 17 15 23
MIR_1_K: 14 7 4 11 3 5 - 7
MIR_1_KL: 8 5 2 5 1 2 1 3
MIR_1_R: 1 - - 1 - 2 - 2
MIR_1_RB: 28 15 13 26 17 11 7 16
MIR_1_RBP: 11 3 2 10 3 4 1 7
MIR_2_FF: 48 28 27 31 22 26 36 36
MIR_2_K: 17 11 2 28 7 5 1 7
MIR_2_KL: 5 6 2 8 3 - 4 3
MIR_2_R: 2 2 2 10 10 1 1 1
MIR_2_RB: 22 19 15 35 30 14 23 25
MIR_2_RBP: 10 12 3 16 8 2 1 8
MIR_3_FF: 45 15 30 24 20 23 30 26
MIR_3_K: 19 6 10 24 4 10 7 8
MIR_3_KL: 1 - 4 15 2 5 2 1
MIR_3_R: 2 - 5 4 11 3 2 3
MIR_3_RB: 21 8 28 15 26 12 19 15
MIR_3_RBP: 25 3 12 19 11 4 7 7
MIR_4_FF: 27 18 24 16 12 18 27 14
MIR_4_K: 22 3 17 13 9 8 4 6
MIR_4_KL: 10 3 5 6 6 3 3 3
MIR_4_R: 3 2 2 2 1 1 - 2
MIR_4_RB: 18 9 17 14 11 9 14 11
MIR_4_RBP: 17 5 22 11 6 1 9 7
MIR_5_FF: 20 1 15 11 9 5 15 9
MIR_5_K: 17 2 12 20 6 6 7 9
MIR_5_KL: 7 1 9 4 4 2 5 7
MIR_5_R: 1 - - 2 1 - 1 -
MIR_5_RB: 10 4 7 6 11 4 7 3
MIR_5_RBP: 9 6 12 12 5 4 10 4
MIR_6_FF: 20 2 9 7 4 10 5 8
MIR_6_K: 12 5 8 10 5 1 8 10
MIR_6_KL: 6 4 4 4 7 - 3 5
MIR_6_R: 2 3 2 3 - 1 - -
MIR_6_RB: 7 4 15 6 6 2 8 7
MIR_6_RBP: 15 6 8 12 1 - 9 5
ZERO_HALF_FF: 13 13 5 14 6 15 5 15
ZERO_HALF_K: 7 - - 3 2 7 1 2
ZERO_HALF_KL: 1 - - 2 - - 2 -
ZERO_HALF_R: 109 35 56 59 34 40 42 48
ZERO_HALF_RB: 14 4 11 13 5 9 4 5
ZERO_HALF_RBP: 10 4 2 2 1 9 3 4
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 1/3 67% 7.21e-01 0.10
'graph_cst_lns': 1/3 67% 7.21e-01 0.10
'graph_dec_lns': 0/4 75% 8.21e-01 0.10
'graph_var_lns': 0/4 75% 8.21e-01 0.10
'lb_relax_lns': 1/2 50% 5.38e-01 0.50
'rins/rens': 2/5 80% 8.80e-01 0.10
'rnd_cst_lns': 1/4 75% 8.21e-01 0.10
'rnd_var_lns': 0/5 80% 8.80e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart': 1 1 16'844 0 0 0 8'002 519'590
'ls_lin_restart_decay_perturb': 1 1 22'038 0 0 0 928 423'998
'ls_lin_restart_perturb': 1 1 16'283 0 0 0 6'728 562'005
'ls_restart_decay': 2 2 43'052 0 0 0 1'749 815'719
'ls_restart_perturb': 1 1 17'101 0 0 0 10'256 535'450
Solutions (6) Num Rank
'complete_hint': 2 [0,1]
'graph_arc_lns': 2 [4,5]
'graph_cst_lns': 2 [2,3]
'no_lp': 2 [1,2]
'quick_restart_no_lp': 4 [3,6]
Objective bounds Num
'am1_presolve': 1
'initial_domain': 1
'lb_tree_search': 26
'max_lp': 4
'pseudo_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 16 41 13
'fj solution hints': 0 0 0
'lp solutions': 22 5 14
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 8 0
'max_lp': 18 0
'probing': 4 0
'pseudo_costs': 2 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 1 0 49 49
'default_lp': 0 0 4 49
'lb_tree_search': 0 0 49 49
'max_lp': 0 0 7 49
'no_lp': 0 0 49 49
'objective_lb_search': 0 0 7 49
'probing': 46 0 3 49
'pseudo_costs': 0 0 5 49
'quick_restart': 0 0 7 49
'quick_restart_no_lp': 2 0 49 49
'reduced_costs': 0 0 7 49
LRAT_status: NA
[Scaling] scaled_objective_bound: 1693.98 corrected_bound: 1693.98 delta: 9.06386e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1693.980166477467
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.02467
usertime: 1.02467
deterministic_time: 5.2111
gap_integral: 21.9511
solution_fingerprint: 0x40238ccd9cfcdeef
Example 2:
[18]:
model_options = ModelOptions(
topology='radial',
feeder_limit='unlimited',
feeder_route='segmented',
)
[19]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
model_options=model_options,
verbose=True
)
Now the solution by EWRouter is not a feasible warmstart.
[20]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0xa6da1684853b7ab2)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)
Starting presolve at 0.00s
The solution hint is complete, but it is infeasible! we will try to repair it.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.88e-04s 0.00e+00d [DetectDominanceRelations]
3.72e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.41e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=185
5.60e-05s 0.00e+00d [DetectDuplicateColumns]
6.69e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000217691 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [4.7874e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [7.8483e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
8.00e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.30e-03s 4.40e-03d [Probe] #probed=1'416 #new_binary_clauses=354
2.72e-04s 4.55e-04d [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
2.24e-04s 0.00e+00d [DetectDominanceRelations]
2.01e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
9.19e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
2.90e-04s 0.00e+00d [DetectDuplicateConstraints]
8.77e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.84e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.53e-05s 0.00e+00d [DetectDifferentVariables]
9.15e-04s 8.61e-05d [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
1.11e-04s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
3.31e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.99e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.58e-04s 1.02e-04d [FindBigAtMostOneAndLinearOverlap]
1.05e-04s 1.08e-04d [FindBigVerticalLinearOverlap]
2.17e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.31e-05s 0.00e+00d [MergeClauses]
1.82e-04s 0.00e+00d [DetectDominanceRelations]
3.60e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.62e-04s 0.00e+00d [DetectDominanceRelations]
1.61e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.53e-05s 0.00e+00d [DetectDuplicateColumns]
6.42e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000208641 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.226e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6728e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
8.75e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
4.12e-03s 1.26e-03d [Probe] #probed=708
2.51e-04s 3.09e-04d [MaxClique]
1.62e-04s 0.00e+00d [DetectDominanceRelations]
1.27e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.22e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
6.83e-05s 0.00e+00d [DetectDuplicateConstraints]
5.57e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.57e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
9.73e-06s 0.00e+00d [DetectDifferentVariables]
1.07e-04s 4.19e-06d [ProcessSetPPC] #relevant_constraints=223
7.83e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.42e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.11e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.22e-04s 9.83e-05d [FindBigAtMostOneAndLinearOverlap]
7.52e-05s 1.08e-04d [FindBigVerticalLinearOverlap]
1.17e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.27e-05s 0.00e+00d [MergeClauses]
1.69e-04s 0.00e+00d [DetectDominanceRelations]
1.44e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.26e-05s 0.00e+00d [MergeNoOverlap]
2.77e-06s 0.00e+00d [MergeNoOverlap2D]
1.13e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 145 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1765fec5961d2416)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000189692 dtime: 0.00044822
Preloading model.
#Bound 0.03s best:inf next:[1364.00132,11449.6914] initial_domain
The solution hint is complete, but it is infeasible! we will try to repair it.
#Model 0.04s var:708/708 constraints:1012/1012
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#1 0.05s best:2411.23334 next:[1364.00132,2411.23334] fj_restart(batch:1 lin{mvs:1'433 evals:16'048} #w_updates:577 #perturb:0)
#Bound 0.05s best:2411.23334 next:[1396.24224,2411.23334] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#2 0.05s best:2387.47917 next:[1396.24224,2387.47917] no_lp [hint] (fixed_bools=0/354)
#Bound 0.05s best:2387.47917 next:[1464.81361,2387.47917] quick_restart
#Bound 0.05s best:2387.47917 next:[1471.69595,2387.47917] reduced_costs
#3 0.06s best:2280.74356 next:[1471.69595,2280.74356] fj_restart_decay_compound_perturb_obj(batch:1 lin{mvs:0 evals:21'282} gen{mvs:2'228 evals:0} comp{mvs:266 btracks:981} #w_updates:23 #perturb:0) (fixed_bools=0/354)
#Bound 0.06s best:2280.74356 next:[1473.79813,2280.74356] probing
#4 0.06s best:2031.55582 next:[1473.79813,2031.55582] graph_arc_lns (d=5.00e-01 s=20 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound 0.06s best:2031.55582 next:[1672.91324,2031.55582] max_lp
#5 0.07s best:2029.72472 next:[1672.91324,2029.72472] quick_restart_no_lp (fixed_bools=0/371)
#6 0.07s best:2025.24902 next:[1672.91324,2025.24901] quick_restart_no_lp (fixed_bools=0/372)
#7 0.08s best:2014.78694 next:[1672.91324,2014.78694] graph_var_lns (d=5.00e-01 s=19 t=0.10 p=0.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#8 0.08s best:1961.15493 next:[1672.91324,1961.15493] no_lp (fixed_bools=0/354)
#9 0.08s best:1960.86608 next:[1672.91324,1960.86608] no_lp (fixed_bools=0/354)
#10 0.11s best:1959.03498 next:[1672.91324,1959.03498] quick_restart_no_lp (fixed_bools=0/379)
#Bound 0.11s best:1959.03498 next:[1688.52481,1959.03498] max_lp
#Bound 0.12s best:1959.03498 next:[1690.90649,1959.03498] lb_tree_search
#11 0.12s best:1957.39003 next:[1690.90649,1957.39002] graph_var_lns (d=7.07e-01 s=28 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#12 0.12s best:1955.55893 next:[1690.90649,1955.55893] graph_var_lns (d=7.07e-01 s=28 t=0.10 p=1.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#13 0.13s best:1917.60742 next:[1690.90649,1917.60742] quick_restart_no_lp (fixed_bools=0/379)
#14 0.15s best:1915.99541 next:[1690.90649,1915.99541] quick_restart_no_lp (fixed_bools=0/379)
#15 0.15s best:1913.4393 next:[1690.90649,1913.4393] quick_restart_no_lp (fixed_bools=0/381)
#16 0.17s best:1912.94144 next:[1690.90649,1912.94144] quick_restart_no_lp (fixed_bools=0/382)
#17 0.19s best:1908.47629 next:[1690.90649,1908.47629] quick_restart_no_lp (fixed_bools=0/383)
#18 0.21s best:1808.43814 next:[1690.90649,1808.43814] lb_relax_lns_int (d=5.00e-01 s=23 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#19 0.21s best:1807.99321 next:[1690.90649,1807.99321] quick_restart_no_lp (fixed_bools=0/392)
#Bound 0.23s best:1807.99321 next:[1691.13639,1807.99321] max_lp
#20 0.23s best:1791.51698 next:[1691.13639,1791.51698] graph_arc_lns (d=7.07e-01 s=31 t=0.10 p=1.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#Bound 0.30s best:1791.51698 next:[1697.19206,1791.51698] max_lp
#Bound 0.31s best:1791.51698 next:[1697.62662,1791.51698] max_lp
#Model 0.38s var:700/708 constraints:1002/1012
#Bound 0.43s best:1791.51698 next:[1708.14572,1791.51698] lb_tree_search
#Model 0.44s var:692/708 constraints:994/1012
#Bound 0.44s best:1791.51698 next:[1709.6149,1791.51698] lb_tree_search (nodes=2/2 rc=0 decisions=10 @root=2 restarts=0 lp_iters=[0, 0, 51, 202])
#Bound 0.46s best:1791.51698 next:[1710.21825,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=13 @root=2 restarts=0 lp_iters=[0, 0, 161, 239])
#Bound 0.48s best:1791.51698 next:[1710.53847,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=14 @root=2 restarts=0 lp_iters=[0, 0, 240, 239])
#Bound 0.49s best:1791.51698 next:[1711.22677,1791.51698] lb_tree_search (nodes=3/3 rc=0 decisions=16 @root=2 restarts=0 lp_iters=[0, 0, 346, 239])
#Bound 0.51s best:1791.51698 next:[1711.29706,1791.51698] lb_tree_search (nodes=4/4 rc=0 decisions=19 @root=2 restarts=0 lp_iters=[0, 0, 456, 282])
#Bound 0.53s best:1791.51698 next:[1711.33621,1791.51698] lb_tree_search (nodes=4/4 rc=0 decisions=21 @root=2 restarts=0 lp_iters=[0, 0, 616, 282])
#Bound 0.54s best:1791.51698 next:[1711.81088,1791.51698] lb_tree_search (nodes=5/5 rc=0 decisions=24 @root=2 restarts=0 lp_iters=[0, 0, 671, 308])
#Bound 0.57s best:1791.51698 next:[1712.4967,1791.51698] lb_tree_search (nodes=6/6 rc=0 decisions=27 @root=2 restarts=0 lp_iters=[0, 0, 835, 363])
#Bound 0.58s best:1791.51698 next:[1712.56947,1791.51698] lb_tree_search (nodes=6/6 rc=0 decisions=29 @root=2 restarts=0 lp_iters=[0, 0, 935, 363])
#21 0.77s best:1784.46098 next:[1714.47179,1784.46098] graph_var_lns (d=8.76e-01 s=48 t=0.10 p=1.00 stall=1 h=base) (fixed_bools=0/354)
#22 1.00s best:1770.99763 next:[1716.7151,1770.99763] lb_relax_lns_int (d=8.14e-01 s=55 t=0.50 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#Bound 0.99s best:1784.46098 next:[1716.7151,1784.46098] lb_tree_search (nodes=22/22 rc=1 decisions=132 @root=2 restarts=0 lp_iters=[0, 0, 3'782, 864]) [skipped_logs=23]
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [965.27ms, 965.27ms] 965.27ms 0.00ns 965.27ms 2 [ 1.32ms, 312.64ms] 156.98ms 155.66ms 313.96ms
'default_lp': 1 [965.00ms, 965.00ms] 965.00ms 0.00ns 965.00ms 2 [ 21.79ms, 252.14ms] 136.96ms 115.17ms 273.93ms
'feasibility_pump': 5 [ 36.89us, 21.87ms] 5.56ms 8.24ms 27.82ms 3 [141.93us, 12.34ms] 4.21ms 5.75ms 12.64ms
'fj': 1 [ 10.79ms, 10.79ms] 10.79ms 0.00ns 10.79ms 1 [ 3.94ms, 3.94ms] 3.94ms 0.00ns 3.94ms
'fj': 1 [ 17.73ms, 17.73ms] 17.73ms 0.00ns 17.73ms 1 [ 7.30ms, 7.30ms] 7.30ms 0.00ns 7.30ms
'fs_random': 1 [ 11.68ms, 11.68ms] 11.68ms 0.00ns 11.68ms 1 [ 1.15ms, 1.15ms] 1.15ms 0.00ns 1.15ms
'fs_random_no_lp': 1 [ 11.73ms, 11.73ms] 11.73ms 0.00ns 11.73ms 1 [ 1.15ms, 1.15ms] 1.15ms 0.00ns 1.15ms
'fs_random_quick_restart_no_lp': 1 [ 11.08ms, 11.08ms] 11.08ms 0.00ns 11.08ms 1 [ 1.13ms, 1.13ms] 1.13ms 0.00ns 1.13ms
'graph_arc_lns': 3 [ 12.37ms, 346.58ms] 156.55ms 140.24ms 469.65ms 3 [276.70us, 100.04ms] 40.74ms 42.85ms 122.22ms
'graph_cst_lns': 5 [ 10.52ms, 262.16ms] 112.73ms 96.14ms 563.66ms 5 [ 36.37us, 97.26ms] 30.77ms 36.14ms 153.87ms
'graph_dec_lns': 5 [ 2.67ms, 156.76ms] 47.56ms 57.10ms 237.79ms 5 [ 10.00ns, 28.36ms] 6.93ms 10.98ms 34.63ms
'graph_var_lns': 4 [ 25.36ms, 276.04ms] 115.81ms 99.64ms 463.22ms 4 [ 1.20ms, 100.02ms] 32.24ms 40.34ms 128.97ms
'lb_relax_lns': 3 [151.30ms, 247.46ms] 207.63ms 40.95ms 622.89ms 3 [ 31.62ms, 60.13ms] 44.62ms 11.77ms 133.86ms
'lb_tree_search': 1 [964.13ms, 964.13ms] 964.13ms 0.00ns 964.13ms 2 [ 51.46ms, 507.08ms] 279.27ms 227.81ms 558.53ms
'ls': 3 [192.95ms, 203.45ms] 198.75ms 4.36ms 596.25ms 3 [100.00ms, 100.01ms] 100.00ms 1.14us 300.01ms
'ls_lin': 3 [153.46ms, 218.45ms] 189.52ms 27.01ms 568.55ms 3 [100.00ms, 100.01ms] 100.01ms 2.20us 300.02ms
'max_lp': 1 [964.51ms, 964.51ms] 964.51ms 0.00ns 964.51ms 2 [ 45.37ms, 264.09ms] 154.73ms 109.36ms 309.46ms
'no_lp': 1 [965.08ms, 965.08ms] 965.08ms 0.00ns 965.08ms 2 [ 1.43ms, 324.48ms] 162.96ms 161.53ms 325.91ms
'objective_lb_search': 1 [963.74ms, 963.74ms] 963.74ms 0.00ns 963.74ms 2 [ 25.45ms, 283.21ms] 154.33ms 128.88ms 308.66ms
'probing': 1 [960.20ms, 960.20ms] 960.20ms 0.00ns 960.20ms 2 [ 23.95ms, 239.12ms] 131.53ms 107.59ms 263.07ms
'pseudo_costs': 1 [964.10ms, 964.10ms] 964.10ms 0.00ns 964.10ms 2 [ 9.81ms, 273.88ms] 141.84ms 132.04ms 283.69ms
'quick_restart': 1 [964.25ms, 964.25ms] 964.25ms 0.00ns 964.25ms 2 [ 19.97ms, 239.41ms] 129.69ms 109.72ms 259.39ms
'quick_restart_no_lp': 1 [963.83ms, 963.83ms] 963.83ms 0.00ns 963.83ms 2 [ 1.43ms, 341.19ms] 171.31ms 169.88ms 342.62ms
'reduced_costs': 1 [964.04ms, 964.04ms] 964.04ms 0.00ns 964.04ms 2 [ 18.82ms, 295.85ms] 157.33ms 138.51ms 314.66ms
'rins/rens': 5 [ 4.01ms, 336.31ms] 89.63ms 126.71ms 448.13ms 3 [758.00ns, 100.04ms] 38.18ms 44.14ms 114.53ms
'rnd_cst_lns': 5 [ 5.60ms, 348.80ms] 86.05ms 131.64ms 430.23ms 5 [ 10.00ns, 100.02ms] 20.13ms 39.94ms 100.64ms
'rnd_var_lns': 5 [ 3.51ms, 200.08ms] 55.52ms 73.39ms 277.60ms 5 [ 10.00ns, 59.36ms] 13.01ms 23.26ms 65.05ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 366 12'106 34'735 26 2'467 14'546 500'488 1'133'443
'default_lp': 373 150 3'976 2 2'089 2'457 28'618 93'913
'fs_random': 354 0 564 0 564 564 5'830 14'293
'fs_random_no_lp': 354 0 606 0 606 606 6'265 15'333
'fs_random_quick_restart_no_lp': 354 0 592 0 592 592 6'121 14'992
'lb_tree_search': 354 1 2'272 0 1'397 1'537 15'545 39'898
'max_lp': 354 61 3'619 1 2'104 2'330 24'181 83'243
'no_lp': 354 8'896 20'580 42 2'995 12'065 440'678 1'405'018
'objective_lb_search': 368 100 3'628 2 2'082 2'383 25'633 84'293
'probing': 375 11 904 0 794 805 8'355 21'062
'pseudo_costs': 354 105 6'428 2 3'500 3'933 41'173 147'336
'quick_restart': 369 43 5'169 3 2'775 3'145 32'683 108'815
'quick_restart_no_lp': 406 5'937 64'094 528 5'529 12'244 406'947 1'306'628
'reduced_costs': 357 66 4'147 1 2'094 2'342 25'052 87'116
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 8 0 366 358 192 233 5'018
'default_lp': 9 1 373 363 160 41 123
'fs_random': 0 0 354 354 80 40 0
'fs_random_no_lp': 0 0 354 354 80 40 0
'fs_random_quick_restart_no_lp': 0 0 354 354 80 40 0
'lb_tree_search': 8 0 354 346 112 40 0
'max_lp': 8 0 354 346 116 40 53
'no_lp': 8 0 354 346 116 110 6'403
'objective_lb_search': 10 0 368 358 196 40 16
'probing': 0 0 375 375 166 40 8
'pseudo_costs': 8 0 354 346 116 40 80
'quick_restart': 9 1 369 359 152 40 41
'quick_restart_no_lp': 10 1 406 395 290 284 4'226
'reduced_costs': 8 0 357 349 122 41 58
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 9'552 103'937 24'225 779'800 203'199 3'013
'default_lp': 114 655 5'812 8'221 0 24
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 1 0 0
'max_lp': 49 618 3'241 2'838 0 8
'no_lp': 7'294 94'341 40'846 520'326 0 1'938
'objective_lb_search': 87 1'727 1'008 2'875 0 12
'probing': 5 14 338 920 0 3
'pseudo_costs': 94 926 3'624 6'518 0 14
'quick_restart': 34 493 1'197 2'568 0 0
'quick_restart_no_lp': 4'049 27'633 85'095 253'110 0 1'123
'reduced_costs': 42 275 716 2'559 0 7
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 356 2'165 0 44 276 20 0
'default_lp': 162 1'238 0 1 5 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 81 614 0 0 0 0 0
'max_lp': 161 1'239 0 0 0 0 0
'no_lp': 403 3'501 0 26 326 239 4
'objective_lb_search': 161 1'226 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 321 2'477 0 0 0 0 0
'quick_restart': 242 1'857 0 1 3 0 0
'quick_restart_no_lp': 1'323 8'752 0 83 723 353 13
'reduced_costs': 161 1'234 0 0 0 0 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 26 0 1 2'857 235 0 156 44 0 0 0 0 3'587 27'409 12'106
'default_lp': 0 0 0 23 0 0 1 1 0 0 0 0 0 286 150
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
'max_lp': 0 0 0 8 0 0 0 0 0 0 0 0 0 120 61
'no_lp': 321 47 0 1'859 75 8 79 26 0 4 0 0 0 19'512 8'896
'objective_lb_search': 72 0 0 12 0 0 0 0 0 0 0 0 0 195 100
'probing': 0 0 0 3 0 0 0 0 0 0 0 0 0 20 11
'pseudo_costs': 11 0 0 14 0 0 0 0 0 0 0 0 0 215 105
'quick_restart': 0 0 0 0 0 0 0 1 0 1 0 0 0 74 43
'quick_restart_no_lp': 122 1 6 1'065 56 3 58 83 8 22 0 0 0 11'411 5'937
'reduced_costs': 0 0 0 7 0 0 0 0 0 0 0 0 0 160 66
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 7'535 899 652 0 19
'fs_random': 1 0 0 0 0 0
'lb_tree_search': 1 6'518 450 202 30 0
'max_lp': 1 4'245 461 263 8 3
'objective_lb_search': 1 7'694 854 424 0 3
'probing': 1 4'070 1'138 154 1 0
'pseudo_costs': 1 7'777 914 413 73 4
'quick_restart': 1 5'115 993 402 0 2
'reduced_costs': 1 7'487 750 271 66 16
Lp dimension Final dimension of first component
'default_lp': 561 rows, 669 columns, 4275 entries
'fs_random': 0 rows, 669 columns, 0 entries
'lb_tree_search': 1533 rows, 708 columns, 10005 entries
'max_lp': 812 rows, 708 columns, 8006 entries
'objective_lb_search': 635 rows, 669 columns, 6364 entries
'probing': 1077 rows, 669 columns, 12508 entries
'pseudo_costs': 723 rows, 708 columns, 6865 entries
'quick_restart': 771 rows, 669 columns, 8590 entries
'reduced_costs': 925 rows, 708 columns, 6705 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 667 0 1'436 0
'fs_random': 0 0 0 0 0 0
'lb_tree_search': 0 0 231 0 4'419 0
'max_lp': 0 0 273 0 4'758 0
'objective_lb_search': 0 0 422 0 2'398 0
'probing': 0 0 152 0 6'274 0
'pseudo_costs': 0 0 485 0 2'863 0
'quick_restart': 0 0 397 0 2'941 0
'reduced_costs': 0 0 347 0 3'094 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 2'111 14 197 0 175 1 17 899/1'622
'fs_random': 1'212 0 0 0 0 0 0 0/0
'lb_tree_search': 1'816 43 175 0 152 7 4 450/764
'max_lp': 1'827 39 274 0 239 16 6 461/814
'objective_lb_search': 2'066 18 169 0 143 4 8 854/1'573
'probing': 2'350 52 0 0 0 24 11 1'138/2'133
'pseudo_costs': 2'280 28 227 0 174 4 8 914/1'575
'quick_restart': 2'205 34 226 0 193 3 11 993/1'788
'reduced_costs': 2'116 17 300 0 277 5 8 750/1'238
Lp Cut probing default_lp max_lp quick_restart reduced_costs pseudo_costs lb_tree_search objective_lb_search
CG_FF: 11 15 12 11 13 7 10 12
CG_K: 5 8 6 6 9 3 6 4
CG_KL: 3 3 6 4 2 1 5 4
CG_R: 21 8 17 12 16 7 10 22
CG_RB: 58 26 20 30 20 31 29 38
CG_RBP: 25 16 11 13 6 4 10 22
Clique: - - 2 - 1 3 2 -
IB: 345 431 1 352 448 450 - 335
MIR_1_FF: 53 23 14 33 14 17 18 33
MIR_1_K: 21 13 1 17 3 2 - 10
MIR_1_KL: 8 3 1 5 - - - 3
MIR_1_R: 1 - - 1 - - - -
MIR_1_RB: 24 13 3 14 10 14 4 8
MIR_1_RBP: 11 8 1 5 2 4 1 4
MIR_2_FF: 59 30 31 48 11 30 24 39
MIR_2_K: 20 17 3 22 2 4 1 10
MIR_2_KL: 6 1 - 2 - 1 1 1
MIR_2_R: 2 3 3 3 - 3 - 3
MIR_2_RB: 38 23 26 24 10 35 23 17
MIR_2_RBP: 19 13 3 21 3 5 - 16
MIR_3_FF: 37 20 28 45 19 19 33 31
MIR_3_K: 17 15 4 21 - 3 1 20
MIR_3_KL: 1 4 8 2 - 1 1 3
MIR_3_R: 5 2 2 1 1 3 1 -
MIR_3_RB: 31 17 18 26 14 25 32 18
MIR_3_RBP: 6 9 3 5 1 5 3 9
MIR_4_FF: 24 21 24 19 14 19 19 12
MIR_4_K: 15 7 5 12 5 16 3 6
MIR_4_KL: 7 - 8 4 1 3 7 1
MIR_4_R: - 1 3 1 2 2 1 -
MIR_4_RB: 19 8 22 17 16 22 16 8
MIR_4_RBP: 10 2 5 7 2 8 8 2
MIR_5_FF: 21 9 10 13 9 13 24 13
MIR_5_K: 16 8 11 13 12 10 12 17
MIR_5_KL: 7 2 11 1 4 5 12 6
MIR_5_R: 1 3 2 3 - 2 - -
MIR_5_RB: 4 7 17 11 3 10 12 4
MIR_5_RBP: 8 7 10 8 7 5 8 6
MIR_6_FF: 10 10 10 15 7 11 5 17
MIR_6_K: 8 5 8 16 4 2 9 8
MIR_6_KL: 1 - 4 2 2 1 8 4
MIR_6_R: - 1 2 3 - 1 1 2
MIR_6_RB: - 5 12 4 7 12 11 3
MIR_6_RBP: 7 7 12 9 1 5 5 5
ZERO_HALF_FF: 18 11 6 17 3 20 4 15
ZERO_HALF_K: 1 2 - 2 1 4 - 4
ZERO_HALF_KL: 1 - - - - - - -
ZERO_HALF_R: 110 54 46 68 40 54 59 50
ZERO_HALF_RB: 16 6 5 14 2 11 10 8
ZERO_HALF_RBP: 7 2 4 11 3 1 1 1
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 2/3 67% 7.21e-01 0.10
'graph_cst_lns': 1/5 80% 8.80e-01 0.10
'graph_dec_lns': 0/5 80% 8.80e-01 0.10
'graph_var_lns': 3/4 75% 8.21e-01 0.10
'lb_relax_lns': 3/3 67% 7.21e-01 0.50
'rins/rens': 4/4 75% 8.08e-01 0.10
'rnd_cst_lns': 0/5 80% 8.73e-01 0.10
'rnd_var_lns': 1/5 80% 8.80e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'fj_restart': 1 1 1'433 0 0 0 577 20'116
'fj_restart_decay_compound_perturb_obj': 1 1 0 2'228 266 981 23 45'666
'ls_lin_restart_decay': 1 1 21'713 0 0 0 935 395'622
'ls_lin_restart_decay_compound': 1 1 0 19'261 3'707 7'777 44 448'897
'ls_lin_restart_perturb': 1 1 16'465 0 0 0 8'918 478'383
'ls_restart_decay': 2 2 41'300 0 0 0 1'565 749'225
'ls_restart_perturb': 1 1 17'731 0 0 0 23'268 532'838
Solutions (22) Num Rank
'fj_restart': 2 [0,1]
'fj_restart_decay_compound_perturb_obj': 2 [2,3]
'graph_arc_lns': 4 [3,20]
'graph_var_lns': 8 [6,21]
'lb_relax_lns_int': 4 [17,22]
'no_lp': 6 [1,9]
'quick_restart_no_lp': 18 [4,19]
Objective bounds Num
'am1_presolve': 1
'initial_domain': 1
'lb_tree_search': 35
'max_lp': 5
'probing': 1
'quick_restart': 1
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 42 45 35
'fj solution hints': 0 0 0
'lp solutions': 14 5 9
'pump': 0 0
Improving bounds shared Num Sym
'default_lp': 1 0
'lb_tree_search': 10 0
'max_lp': 6 0
'quick_restart_no_lp': 1 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 1 0 6 6
'default_lp': 0 0 6 6
'fs_random': 0 0 0 6
'fs_random_no_lp': 0 0 0 6
'fs_random_quick_restart_no_lp': 0 0 0 6
'lb_tree_search': 0 0 4 6
'max_lp': 0 0 6 6
'no_lp': 0 0 6 6
'objective_lb_search': 0 0 6 6
'probing': 0 0 0 6
'pseudo_costs': 3 0 6 6
'quick_restart': 0 0 6 6
'quick_restart_no_lp': 2 0 6 6
'reduced_costs': 0 0 6 6
LRAT_status: NA
[Scaling] scaled_objective_bound: 1716.72 corrected_bound: 1716.72 delta: 1.57072e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1770.997626974857
best_bound: 1716.715093944239
integers: 688
booleans: 354
conflicts: 0
branches: 592
propagations: 6121
integer_propagations: 14992
restarts: 0
lp_iterations: 0
walltime: 1.00817
usertime: 1.00817
deterministic_time: 5.04195
gap_integral: 21.8876
solution_fingerprint: 0x4f143ad140900ab2
But the solution by HGSRouter can warmstart the MILPRouter.
[21]:
wfn.optimize(router=HGSRouter(time_limit=1))
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0x9ac6e6b079540f72)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.78e-04s 0.00e+00d [DetectDominanceRelations]
5.17e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.42e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=185
5.55e-05s 0.00e+00d [DetectDuplicateColumns]
6.46e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000213283 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.024e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.5436e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.36e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.91e-03s 4.40e-03d [Probe] #probed=1'416 #new_binary_clauses=354
2.90e-04s 4.55e-04d [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
2.04e-04s 0.00e+00d [DetectDominanceRelations]
2.26e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
6.48e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
8.45e-05s 0.00e+00d [DetectDuplicateConstraints]
6.69e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.42e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.25e-05s 0.00e+00d [DetectDifferentVariables]
8.45e-04s 8.61e-05d [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
1.03e-04s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.56e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.28e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.21e-04s 1.02e-04d [FindBigAtMostOneAndLinearOverlap]
7.30e-05s 1.08e-04d [FindBigVerticalLinearOverlap]
1.15e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.09e-06s 0.00e+00d [MergeClauses]
1.51e-04s 0.00e+00d [DetectDominanceRelations]
2.73e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.49e-04s 0.00e+00d [DetectDominanceRelations]
1.59e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.06e-05s 0.00e+00d [DetectDuplicateColumns]
5.85e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000191454 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.018e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.4188e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
7.06e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.86e-03s 1.26e-03d [Probe] #probed=708
2.25e-04s 3.09e-04d [MaxClique]
1.94e-04s 0.00e+00d [DetectDominanceRelations]
1.45e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
9.62e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
8.40e-05s 0.00e+00d [DetectDuplicateConstraints]
6.98e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.10e-04s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.15e-05s 0.00e+00d [DetectDifferentVariables]
9.87e-05s 4.19e-06d [ProcessSetPPC] #relevant_constraints=223
1.01e-04s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.83e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.45e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.22e-04s 9.83e-05d [FindBigAtMostOneAndLinearOverlap]
7.68e-05s 1.08e-04d [FindBigVerticalLinearOverlap]
1.21e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.25e-06s 0.00e+00d [MergeClauses]
2.73e-04s 0.00e+00d [DetectDominanceRelations]
1.77e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
4.92e-06s 0.00e+00d [MergeNoOverlap]
2.78e-06s 0.00e+00d [MergeNoOverlap2D]
1.17e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 145 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1b7033387a045912)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.00019191 dtime: 0.00044822
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model 0.04s var:708/708 constraints:1012/1012
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.05s best:1765.33376 next:[1396.24224,1765.33376] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#Bound 0.05s best:1765.33376 next:[1464.81361,1765.33376] quick_restart
#Bound 0.05s best:1765.33376 next:[1471.69595,1765.33376] reduced_costs
#Bound 0.06s best:1765.33376 next:[1672.91324,1765.33376] max_lp
#Bound 0.11s best:1765.33376 next:[1688.52481,1765.33376] max_lp
#Bound 0.12s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Model 0.12s var:696/708 constraints:998/1012
#Bound 0.21s best:1765.33376 next:[1691.04831,1765.33376] lb_tree_search
#Bound 0.22s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound 0.28s best:1765.33376 next:[1696.19909,1765.33376] lb_tree_search
#Bound 0.31s best:1765.33376 next:[1696.79789,1765.33376] max_lp
#Model 0.38s var:678/708 constraints:979/1012
#Bound 0.48s best:1765.33376 next:[1705.54961,1765.33376] lb_tree_search
#Bound 0.48s best:1765.33376 next:[1706.18107,1765.33376] lb_tree_search
#Model 0.55s var:672/708 constraints:973/1012
#Bound 0.67s best:1765.33376 next:[1712.47138,1765.33376] lb_tree_search
#Model 0.67s var:648/708 constraints:948/1012
#Bound 0.68s best:1765.33376 next:[1712.58595,1765.33376] lb_tree_search
#Model 0.81s var:646/708 constraints:946/1012
#Bound 0.86s best:1765.33376 next:[1715.35068,1765.33376] lb_tree_search
#Bound 0.87s best:1765.33376 next:[1715.4155,1765.33376] lb_tree_search
#Model 0.89s var:642/708 constraints:941/1012
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [968.64ms, 968.64ms] 968.64ms 0.00ns 968.64ms 2 [ 1.32ms, 730.34ms] 365.83ms 364.51ms 731.66ms
'default_lp': 1 [962.70ms, 962.70ms] 962.70ms 0.00ns 962.70ms 2 [ 22.88ms, 295.30ms] 159.09ms 136.21ms 318.18ms
'feasibility_pump': 7 [ 35.63us, 20.96ms] 3.69ms 7.16ms 25.81ms 2 [141.93us, 12.34ms] 6.24ms 6.10ms 12.48ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_quick_restart_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 4 [ 7.01ms, 378.10ms] 110.99ms 154.52ms 443.96ms 3 [ 1.26ms, 100.06ms] 34.85ms 46.12ms 104.54ms
'graph_cst_lns': 5 [ 6.25ms, 383.50ms] 117.57ms 147.00ms 587.86ms 4 [ 45.28us, 100.02ms] 34.74ms 40.88ms 138.98ms
'graph_dec_lns': 5 [ 2.65ms, 44.15ms] 18.92ms 14.85ms 94.59ms 5 [ 10.00ns, 4.36ms] 1.01ms 1.69ms 5.03ms
'graph_var_lns': 5 [ 7.05ms, 342.11ms] 90.16ms 126.99ms 450.79ms 5 [ 2.16us, 100.02ms] 22.12ms 39.05ms 110.59ms
'lb_relax_lns': 4 [ 6.35ms, 584.83ms] 204.93ms 223.72ms 819.70ms 3 [ 16.33ms, 177.24ms] 71.27ms 74.95ms 213.80ms
'lb_tree_search': 1 [967.56ms, 967.56ms] 967.56ms 0.00ns 967.56ms 2 [ 39.96ms, 96.44ms] 68.20ms 28.24ms 136.39ms
'ls': 3 [ 15.44ms, 218.71ms] 141.61ms 89.95ms 424.84ms 3 [ 8.25ms, 100.01ms] 69.42ms 43.26ms 208.26ms
'ls_lin': 4 [286.09us, 186.12ms] 137.89ms 79.47ms 551.54ms 4 [107.30us, 100.01ms] 75.03ms 43.26ms 300.12ms
'max_lp': 1 [961.48ms, 961.48ms] 961.48ms 0.00ns 961.48ms 2 [ 44.93ms, 305.87ms] 175.40ms 130.47ms 350.80ms
'no_lp': 1 [962.25ms, 962.25ms] 962.25ms 0.00ns 962.25ms 2 [ 1.57ms, 332.11ms] 166.84ms 165.27ms 333.68ms
'objective_lb_search': 1 [961.52ms, 961.52ms] 961.52ms 0.00ns 961.52ms 2 [ 21.20ms, 283.00ms] 152.10ms 130.90ms 304.20ms
'probing': 1 [967.93ms, 967.93ms] 967.93ms 0.00ns 967.93ms 2 [ 18.34ms, 203.38ms] 110.86ms 92.52ms 221.72ms
'pseudo_costs': 1 [961.76ms, 961.76ms] 961.76ms 0.00ns 961.76ms 2 [ 9.35ms, 252.38ms] 130.86ms 121.51ms 261.73ms
'quick_restart': 1 [961.11ms, 961.11ms] 961.11ms 0.00ns 961.11ms 2 [ 20.28ms, 318.51ms] 169.39ms 149.12ms 338.79ms
'quick_restart_no_lp': 1 [961.80ms, 961.80ms] 961.80ms 0.00ns 961.80ms 2 [ 1.57ms, 430.77ms] 216.17ms 214.60ms 432.34ms
'reduced_costs': 1 [962.20ms, 962.20ms] 962.20ms 0.00ns 962.20ms 2 [ 10.41ms, 271.09ms] 140.75ms 130.34ms 281.49ms
'rins/rens': 4 [ 6.33ms, 369.62ms] 155.49ms 153.39ms 621.96ms 3 [517.50us, 100.03ms] 54.60ms 41.09ms 163.81ms
'rnd_cst_lns': 5 [ 4.21ms, 108.56ms] 47.78ms 41.09ms 238.92ms 5 [ 10.00ns, 16.91ms] 6.63ms 7.48ms 33.15ms
'rnd_var_lns': 6 [ 3.90ms, 339.69ms] 86.08ms 121.44ms 516.50ms 5 [ 10.00ns, 96.00ms] 24.65ms 37.05ms 123.27ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 389 15'179 44'176 29 2'512 17'727 494'488 901'575
'default_lp': 375 152 2'413 1 1'359 1'633 19'417 64'702
'fs_random': 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0
'lb_tree_search': 354 0 9'480 0 5'006 5'883 53'640 139'028
'max_lp': 354 59 2'193 1 1'300 1'497 15'177 51'382
'no_lp': 354 9'731 23'640 73 3'701 13'748 529'119 1'688'715
'objective_lb_search': 369 165 2'377 1 1'362 1'642 20'292 68'887
'probing': 375 11 867 0 793 804 8'563 22'093
'pseudo_costs': 354 256 2'504 1 1'373 1'729 25'285 90'722
'quick_restart': 356 53 4'952 4 2'713 3'096 33'078 112'632
'quick_restart_no_lp': 398 6'391 64'614 563 5'569 12'782 428'395 1'403'297
'reduced_costs': 354 190 4'647 2 1'955 2'394 27'029 98'183
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 30 0 389 359 400 1'521 5'929
'default_lp': 15 0 375 360 218 45 113
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 33 0 354 321 228 40 0
'max_lp': 31 0 354 323 224 40 48
'no_lp': 33 0 354 321 174 205 5'316
'objective_lb_search': 16 0 369 353 196 51 83
'probing': 19 0 375 356 450 40 11
'pseudo_costs': 13 0 354 341 138 40 217
'quick_restart': 33 0 356 323 238 55 30
'quick_restart_no_lp': 36 1 398 361 368 258 4'367
'reduced_costs': 30 0 354 324 220 48 151
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 12'170 98'308 105'449 618'416 160'397 3'829
'default_lp': 138 2'602 3'943 6'258 0 33
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 45 681 1'221 4'630 0 11
'no_lp': 8'307 101'995 39'633 397'988 0 2'982
'objective_lb_search': 156 4'714 2'152 4'174 0 39
'probing': 10 242 471 937 0 0
'pseudo_costs': 189 2'311 8'077 12'459 0 39
'quick_restart': 51 1'020 1'184 2'330 0 8
'quick_restart_no_lp': 4'580 33'372 78'056 270'989 0 1'217
'reduced_costs': 111 1'107 2'412 6'946 0 28
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 350 2'513 0 25 218 79 0
'default_lp': 81 600 0 0 0 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 561 4'051 0 0 0 0 0
'max_lp': 81 568 0 0 0 0 0
'no_lp': 625 4'703 0 27 326 319 1
'objective_lb_search': 84 660 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 81 605 0 0 0 0 0
'quick_restart': 276 1'988 0 0 1 25 0
'quick_restart_no_lp': 1'592 11'650 0 150 1'398 866 17
'reduced_costs': 167 1'212 0 3 17 9 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 69 4 0 3'707 234 0 122 25 0 99 0 0 3'464 37'042 15'179
'default_lp': 0 0 0 30 0 0 3 0 0 0 0 0 0 297 152
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 0 0 0 9 0 0 2 0 0 0 0 0 0 116 59
'no_lp': 817 108 0 2'864 82 46 118 27 0 182 0 0 0 21'974 9'731
'objective_lb_search': 30 0 0 36 0 1 3 0 0 0 0 0 0 303 165
'probing': 0 0 0 0 0 0 0 0 0 0 0 0 0 18 11
'pseudo_costs': 0 0 0 38 0 0 1 0 0 0 0 0 0 516 256
'quick_restart': 0 0 0 8 0 0 0 0 0 0 0 0 0 61 53
'quick_restart_no_lp': 256 1 6 1'126 64 10 91 150 16 22 0 0 0 12'892 6'391
'reduced_costs': 0 0 0 25 0 0 3 3 0 0 0 0 0 449 190
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 8'982 697 594 1 12
'lb_tree_search': 1 1'778 590 58 2 0
'max_lp': 1 5'144 459 257 21 5
'objective_lb_search': 1 9'096 681 628 1 5
'probing': 1 3'813 1'389 135 0 0
'pseudo_costs': 1 10'847 627 708 126 25
'quick_restart': 1 6'736 932 273 2 1
'reduced_costs': 1 9'672 640 461 96 49
Lp dimension Final dimension of first component
'default_lp': 523 rows, 669 columns, 3149 entries
'lb_tree_search': 1552 rows, 708 columns, 12617 entries
'max_lp': 795 rows, 708 columns, 7572 entries
'objective_lb_search': 459 rows, 669 columns, 2715 entries
'probing': 1107 rows, 669 columns, 12319 entries
'pseudo_costs': 472 rows, 708 columns, 2252 entries
'quick_restart': 934 rows, 669 columns, 9354 entries
'reduced_costs': 623 rows, 708 columns, 3264 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 600 0 714 0
'lb_tree_search': 0 9 60 0 11'615 0
'max_lp': 0 1 283 0 4'921 0
'objective_lb_search': 0 0 629 0 787 0
'probing': 0 0 131 0 7'606 0
'pseudo_costs': 0 0 849 0 310 0
'quick_restart': 0 0 273 0 3'754 0
'reduced_costs': 0 0 601 0 944 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 1'909 5 318 0 295 2 11 697/1'243
'lb_tree_search': 1'956 149 1'057 0 823 19 14 590/1'057
'max_lp': 1'825 48 823 0 671 10 14 459/790
'objective_lb_search': 1'893 3 321 0 303 0 9 681/1'158
'probing': 2'601 90 1'140 0 783 29 68 1'389/2'468
'pseudo_costs': 1'993 0 149 0 149 0 0 627/1'010
'quick_restart': 2'144 48 579 0 472 4 24 932/1'743
'reduced_costs': 2'006 0 451 0 384 0 13 640/1'146
Lp Cut default_lp max_lp quick_restart reduced_costs pseudo_costs objective_lb_search lb_tree_search probing
CG_FF: 10 8 14 2 6 9 7 22
CG_K: 5 4 5 2 - 5 4 10
CG_KL: 5 6 2 - - 3 5 5
CG_R: 12 15 18 8 7 8 6 43
CG_RB: 18 23 40 13 9 18 26 62
CG_RBP: 11 13 21 3 - 8 7 34
Clique: - 2 - 3 - - 6 -
IB: 397 5 363 441 510 369 - 359
MIR_1_FF: 22 19 36 3 5 12 24 84
MIR_1_K: 11 1 8 2 2 6 2 21
MIR_1_KL: 3 4 12 1 - 5 1 18
MIR_1_R: - - - - - - - 1
MIR_1_RB: 6 2 12 4 4 9 8 26
MIR_1_RBP: 4 2 9 1 3 6 1 22
MIR_2_FF: 18 28 42 9 7 27 35 71
MIR_2_K: 7 1 20 3 - 8 5 29
MIR_2_KL: - 1 2 - - 1 2 6
MIR_2_R: 2 3 5 1 1 2 1 2
MIR_2_RB: 9 21 28 8 9 12 27 45
MIR_2_RBP: 7 1 11 2 1 10 1 24
MIR_3_FF: 8 27 31 6 11 12 43 58
MIR_3_K: 9 5 17 1 2 9 7 17
MIR_3_KL: 1 3 2 - - 2 3 2
MIR_3_R: 1 2 1 2 - - - 2
MIR_3_RB: 13 22 18 13 5 13 25 34
MIR_3_RBP: 3 5 8 3 3 3 4 18
MIR_4_FF: 8 30 19 1 4 6 27 27
MIR_4_K: 14 8 4 3 1 3 12 17
MIR_4_KL: - 9 2 4 2 1 14 8
MIR_4_R: - 3 1 1 1 1 2 1
MIR_4_RB: 8 15 12 9 2 4 15 14
MIR_4_RBP: 2 9 4 2 - 1 9 14
MIR_5_FF: 5 16 7 7 1 11 30 18
MIR_5_K: 5 14 7 3 2 10 18 23
MIR_5_KL: 2 8 5 3 - 2 14 10
MIR_5_R: - - - 2 2 1 - 4
MIR_5_RB: 8 15 7 5 2 7 9 14
MIR_5_RBP: 5 4 7 4 2 4 12 10
MIR_6_FF: 2 13 8 1 3 7 23 20
MIR_6_K: 3 7 10 3 1 4 15 18
MIR_6_KL: 1 3 4 3 1 1 8 9
MIR_6_R: - 1 - - - - 3 1
MIR_6_RB: 2 7 5 9 2 5 12 3
MIR_6_RBP: 2 5 5 4 - 2 13 9
ZERO_HALF_FF: 7 7 15 6 2 11 5 14
ZERO_HALF_K: 2 - 4 1 2 1 - -
ZERO_HALF_KL: - 2 3 - - - - -
ZERO_HALF_R: 32 54 67 31 7 32 85 119
ZERO_HALF_RB: 1 4 6 6 5 3 11 15
ZERO_HALF_RBP: 6 2 5 1 - 7 3 6
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 0/3 67% 7.21e-01 0.10
'graph_cst_lns': 0/4 75% 8.21e-01 0.10
'graph_dec_lns': 0/5 80% 8.80e-01 0.10
'graph_var_lns': 0/5 60% 7.48e-01 0.10
'lb_relax_lns': 0/3 67% 7.21e-01 0.50
'rins/rens': 0/3 67% 7.21e-01 0.10
'rnd_cst_lns': 0/5 80% 8.80e-01 0.10
'rnd_var_lns': 0/5 100% 9.39e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart': 2 2 34'758 0 0 0 32'205 800'474
'ls_lin_restart_compound_perturb': 1 1 0 12 0 6 0 145
'ls_lin_restart_perturb': 1 1 16'719 0 0 0 22'408 475'427
'ls_restart': 1 1 1'559 0 0 0 659 40'595
'ls_restart_decay': 1 1 20'803 0 0 0 761 395'626
'ls_restart_decay_compound_perturb': 1 1 0 21'651 3'724 8'960 48 515'399
Solutions (1) Num Rank
'complete_hint': 2 [0,1]
Objective bounds Num
'am1_presolve': 1
'initial_domain': 1
'lb_tree_search': 9
'max_lp': 4
'quick_restart': 1
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 0 0 0
'best_solutions': 2 49 2
'fj solution hints': 0 0 0
'lp solutions': 19 4 14
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 52 0
'max_lp': 16 0
'probing': 2 0
'quick_restart_no_lp': 2 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 18 86
'default_lp': 0 0 14 86
'lb_tree_search': 0 0 18 86
'max_lp': 0 0 18 86
'no_lp': 4 0 18 86
'objective_lb_search': 0 0 14 86
'probing': 79 0 10 86
'pseudo_costs': 0 0 10 86
'quick_restart': 0 0 18 86
'quick_restart_no_lp': 3 0 18 86
'reduced_costs': 0 0 18 86
LRAT_status: NA
[Scaling] scaled_objective_bound: 1715.42 corrected_bound: 1715.42 delta: 1.5858e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1715.415500957352
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.0109
usertime: 1.0109
deterministic_time: 5.13197
gap_integral: 20.4665
solution_fingerprint: 0x7cfd54e085bf6326
🧮 What is SolverOptions?¶
SolverOptions refers to solver-specific configuration parameters that affect how the solver works internally (once the model is already built).
These settings are typically passed directly to a solver like CPLEX, Gurobi, CBC, etc., and influence:
* Search strategy
* Runtime limits
* Optimality tolerances
* Logging and precision settings
✅ Common SolverOptions for MILPRouter:¶
Parameter |
Description |
|---|---|
|
Maximum allowed solve time (in seconds) |
|
Optimality tolerance (e.g., 0.01 for 1% gap) |
|
Prioritize bound quality, feasibility, or integrality |
|
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
INFObefore running ``.optimize()`` with the MILPRouter to display detailed messages about the solver configuration:import logging logging.basicConfig(level=logging.INFO)
[22]:
milp_router_ortools = MILPRouter(solver_name='ortools.cp_sat', time_limit=15, mip_gap=0.01)
milp_router_ortools.optiwindnet_default_options
[22]:
{}
[23]:
milp_router_cplex = MILPRouter(solver_name='cplex', time_limit=15, mip_gap=0.01)
milp_router_cplex.optiwindnet_default_options
[23]:
{'parallel': -1, 'emphasis_mip': 4}
[24]:
milp_router_cbc = MILPRouter(solver_name='cbc', time_limit=15, mip_gap=0.01)
milp_router_cbc.optiwindnet_default_options
[24]:
{'threads': 8,
'timeMode': 'elapsed',
'nodeStrategy': 'downFewest',
'Dins': 'on',
'VndVariableNeighborhoodSearch': 'on',
'Rens': 'on',
'Rins': 'on',
'pivotAndComplement': 'off',
'proximitySearch': 'off',
'gomoryCuts': 'on',
'mixedIntegerRoundingCuts': 'on',
'flowCoverCuts': 'on',
'cliqueCuts': 'off',
'twoMirCuts': 'off',
'knapsackCuts': 'off',
'probingCuts': 'off',
'zeroHalfCuts': 'off',
'liftAndProjectCuts': 'off',
'residualCapacityCuts': 'off'}
[25]:
milp_router_gurobi = MILPRouter(solver_name='gurobi', time_limit=15, mip_gap=0.01)
milp_router_gurobi.optiwindnet_default_options
[25]:
{'mipfocus': 1}
[26]:
milp_router_highs = MILPRouter(solver_name='highs', time_limit=15, mip_gap=0.01)
milp_router_highs.optiwindnet_default_options
[26]:
{}
[27]:
milp_router_scip = MILPRouter(solver_name='scip', time_limit=15, mip_gap=0.01)
milp_router_scip.optiwindnet_default_options
[27]:
{'parallel/maxnthreads': 8,
'concurrent/scip-feas/prefprio': 0.6,
'concurrent/scip/prefprio': 0.3,
'concurrent/scip-cpsolver/prefprio': 0,
'concurrent/scip-easycip/prefprio': 0,
'concurrent/scip-opti/prefprio': 0}
This attribute only reflects the options explicitly modified by OptiWindNet during initialization. solvers in MILPRouter typically support a much larger set of configurable options, which we can also adjust separately. For a complete list of available options for each MILP solver, please refer to the corresponding solver’s official documentation or user manual. For example, in the case of the CBC solver, we can refer to its full list of options here: http://www.decom.ufop.br/haroldo/files/cbcCommandLine.pdf
Note: Modifying any of the options originally set by OptiWindNet will not change the values stored in
optiwindnet_default_options. However, the updated values will be used when solving the optimization problem.
Solver options (including those set by OptiWindNet as well as additional configurable parameters) can be modified by creating a dictionary and passing it to the router. The same approach applies to model options.
[28]:
solver_options=dict(
num_workers = 5,
)
wfn.optimize(router=MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
solver_options=solver_options,
verbose=True,
))
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01 num_workers: 5
Initial optimization model 'optiwindnet': (model_fingerprint: 0x797dc3582745efd1)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.77e-04s 0.00e+00d [DetectDominanceRelations]
4.30e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.23e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
8.84e-05s 0.00e+00d [DetectDuplicateColumns]
7.59e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000269544 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.9098e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.4976e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.59e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.40e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
4.99e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
1.92e-04s 0.00e+00d [DetectDominanceRelations]
2.12e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.48e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
6.67e-05s 0.00e+00d [DetectDuplicateConstraints]
6.38e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.68e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.62e-05s 0.00e+00d [DetectDifferentVariables]
8.18e-04s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
9.11e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.86e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.53e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.29e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
8.41e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.72e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.75e-06s 0.00e+00d [MergeClauses]
1.75e-04s 0.00e+00d [DetectDominanceRelations]
3.22e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
4.25e-04s 0.00e+00d [DetectDominanceRelations]
1.62e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
4.11e-05s 0.00e+00d [DetectDuplicateColumns]
7.05e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000189514 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.891e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6549e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
7.44e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.72e-03s 1.27e-03d [Probe] #probed=708
4.32e-04s 1.45e-04d [MaxClique]
1.95e-04s 0.00e+00d [DetectDominanceRelations]
1.69e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.48e-04s 0.00e+00d [ProcessAtMostOneAndLinear]
7.13e-05s 0.00e+00d [DetectDuplicateConstraints]
5.98e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.98e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.07e-05s 0.00e+00d [DetectDifferentVariables]
7.46e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
7.31e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.57e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.56e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.18e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
7.90e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.39e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
8.66e-06s 0.00e+00d [MergeClauses]
2.06e-04s 0.00e+00d [DetectDominanceRelations]
2.03e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.65e-06s 0.00e+00d [MergeNoOverlap]
2.99e-06s 0.00e+00d [MergeNoOverlap2D]
1.39e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xf807134f56ab71c3)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000224917 dtime: 0.00043646
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model 0.04s var:708/708 constraints:972/972
Starting search at 0.04s with 5 workers.
3 full problem subsolvers: [core, default_lp, no_lp]
2 first solution subsolvers: [fj, fs_random_no_lp]
9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.04s best:1765.33376 next:[1377.09321,1765.33376] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#Bound 0.05s best:1765.33376 next:[1439.63944,1765.33376] default_lp
#2 0.05s best:1760.06663 next:[1439.63944,1760.06663] graph_cst_lns (d=5.00e-01 s=7 t=0.10 p=0.00 stall=0 h=base)
#3 0.07s best:1758.41439 next:[1439.63944,1758.41439] graph_var_lns (d=7.07e-01 s=13 t=0.10 p=1.00 stall=1 h=base)
#Bound 0.09s best:1758.41439 next:[1485.28171,1758.41439] default_lp
#Bound 0.11s best:1758.41439 next:[1626.81799,1758.41439] default_lp
#Bound 0.11s best:1758.41439 next:[1635.75544,1758.41439] default_lp
#Bound 0.12s best:1758.41439 next:[1641.34643,1758.41439] default_lp
#Bound 0.14s best:1758.41439 next:[1651.76223,1758.41439] default_lp
#Model 0.14s var:706/708 constraints:969/972
#Bound 0.28s best:1758.41439 next:[1657.95701,1758.41439] default_lp
#Bound 0.31s best:1758.41439 next:[1667.18806,1758.41439] default_lp
#Model 0.34s var:702/708 constraints:965/972
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [961.99ms, 961.99ms] 961.99ms 0.00ns 961.99ms 2 [ 1.31ms, 783.70ms] 392.51ms 391.19ms 785.01ms
'default_lp': 1 [962.13ms, 962.13ms] 962.13ms 0.00ns 962.13ms 2 [ 20.78ms, 504.19ms] 262.49ms 241.70ms 524.97ms
'feasibility_pump': 4 [ 19.97us, 12.41ms] 3.72ms 5.06ms 14.90ms 2 [145.79us, 11.26ms] 5.70ms 5.56ms 11.41ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 4 [ 9.12ms, 198.17ms] 110.69ms 75.67ms 442.76ms 4 [236.07us, 100.05ms] 56.14ms 44.70ms 224.57ms
'graph_cst_lns': 4 [ 5.98ms, 210.10ms] 75.76ms 82.49ms 303.03ms 4 [ 49.37us, 100.03ms] 32.49ms 40.71ms 129.97ms
'graph_dec_lns': 4 [ 1.26ms, 177.39ms] 47.82ms 74.87ms 191.27ms 4 [ 10.00ns, 100.06ms] 25.07ms 43.29ms 100.28ms
'graph_var_lns': 4 [ 1.77ms, 66.90ms] 24.71ms 25.55ms 98.83ms 4 [ 10.00ns, 26.49ms] 7.96ms 10.92ms 31.83ms
'ls': 4 [ 82.49ms, 103.68ms] 96.38ms 8.36ms 385.52ms 4 [100.00ms, 100.01ms] 100.01ms 1.46us 400.02ms
'no_lp': 1 [961.58ms, 961.58ms] 961.58ms 0.00ns 961.58ms 2 [ 1.57ms, 722.46ms] 362.01ms 360.45ms 724.02ms
'rins/rens': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'rnd_cst_lns': 5 [ 3.17ms, 174.13ms] 42.70ms 65.93ms 213.50ms 4 [ 23.00ns, 94.47ms] 24.42ms 40.47ms 97.67ms
'rnd_var_lns': 5 [ 2.93ms, 193.17ms] 52.19ms 71.91ms 260.97ms 5 [ 10.00ns, 100.05ms] 23.26ms 38.74ms 116.31ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 365 26'589 58'832 91 1'661 28'001 826'673 1'859'068
'default_lp': 376 367 5'551 2 2'840 3'476 31'963 144'211
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'no_lp': 354 17'193 35'484 92 3'879 21'190 909'632 2'994'487
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 3 0 365 362 112 128 8'938
'default_lp': 3 0 376 373 156 42 307
'fs_random_no_lp': 0 0 0 0 0 0 0
'no_lp': 3 0 354 351 84 84 8'313
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 22'728 365'049 43'486 1'496'075 493'154 9'133
'default_lp': 317 4'378 8'939 18'680 0 56
'fs_random_no_lp': 0 0 0 0 0 0
'no_lp': 14'045 170'345 81'195 815'177 167'815 4'679
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 111 711 0 0 0 10 0
'default_lp': 245 1'903 0 1 25 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'no_lp': 658 4'984 0 43 484 353 3
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 0 0 0 8'068 339 0 1'065 0 0 0 0 0 8'101 61'204 26'589
'default_lp': 0 0 0 52 1 0 4 1 0 0 0 0 0 762 367
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'no_lp': 14 0 0 4'512 191 68 167 43 0 192 0 0 3'591 39'211 17'193
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 15'379 1'038 1'206 0 73
Lp dimension Final dimension of first component
'default_lp': 468 rows, 669 columns, 3326 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 1'273 0 1'765 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 2'210 11 70 0 58 4 48 1'038/2'008
Lp Cut default_lp
CG_FF: 24
CG_K: 6
CG_KL: 3
CG_R: 15
CG_RB: 34
CG_RBP: 22
IB: 421
MIR_1_FF: 30
MIR_1_K: 15
MIR_1_KL: 4
MIR_1_R: 1
MIR_1_RB: 15
MIR_1_RBP: 6
MIR_2_FF: 47
MIR_2_K: 17
MIR_2_KL: 6
MIR_2_R: 4
MIR_2_RB: 30
MIR_2_RBP: 22
MIR_3_FF: 20
MIR_3_K: 10
MIR_3_KL: 6
MIR_3_R: 3
MIR_3_RB: 17
MIR_3_RBP: 6
MIR_4_FF: 20
MIR_4_K: 12
MIR_4_KL: 5
MIR_4_R: 3
MIR_4_RB: 15
MIR_4_RBP: 12
MIR_5_FF: 9
MIR_5_K: 12
MIR_5_KL: 8
MIR_5_R: 1
MIR_5_RB: 6
MIR_5_RBP: 6
MIR_6_FF: 7
MIR_6_K: 4
MIR_6_KL: 1
MIR_6_R: 4
MIR_6_RB: 9
MIR_6_RBP: 4
ZERO_HALF_FF: 17
ZERO_HALF_K: 12
ZERO_HALF_KL: 3
ZERO_HALF_R: 68
ZERO_HALF_RB: 11
ZERO_HALF_RBP: 5
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 1/4 50% 5.97e-01 0.10
'graph_cst_lns': 1/4 75% 8.21e-01 0.10
'graph_dec_lns': 0/4 75% 8.21e-01 0.10
'graph_var_lns': 1/4 100% 9.14e-01 0.10
'rins/rens': 0/0 0% 5.00e-01 0.10
'rnd_cst_lns': 0/4 100% 9.14e-01 0.10
'rnd_var_lns': 0/5 60% 7.48e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_restart_compound_perturb': 1 1 0 22'852 2'245 10'300 110 520'367
'ls_restart_decay': 1 1 21'061 0 0 0 813 406'510
'ls_restart_decay_compound_perturb': 1 1 0 21'284 3'490 8'896 38 502'525
'ls_restart_perturb': 1 1 16'755 0 0 0 13'651 518'173
Solutions (3) Num Rank
'complete_hint': 2 [0,1]
'graph_cst_lns': 2 [1,2]
'graph_var_lns': 2 [2,3]
Objective bounds Num
'am1_presolve': 1
'default_lp': 8
'initial_domain': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 6 30 5
'fj solution hints': 0 0 0
'lp solutions': 0 0 0
'pump': 0 0
Improving bounds shared Num Sym
'default_lp': 6 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 0 0
'default_lp': 0 0 0 0
'no_lp': 0 0 0 0
LRAT_status: NA
[Scaling] scaled_objective_bound: 1667.19 corrected_bound: 1667.19 delta: 9.35979e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1667.18805409741
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00281
usertime: 1.00281
deterministic_time: 3.15208
gap_integral: 14.3334
solution_fingerprint: 0x40238ccd9cfcdeef
[28]:
array([11, 10, 1, 1, 7, 6, -1, 5, 13, 8, 12, 14, -1, 16, 22, 23, -1,
19, 30, 20, 39, -1, 24, -1, -1, 26, 28, -1, 27, -1, 29, -1, 18, 31,
32, 37, 7, 33, 35, 21])
Summary¶
Key Differences between ModelOptions and SolverOptions are listed below.
Feature |
|
|
|---|---|---|
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 |
|
|
Impact |
Determines what is solved |
Determines how it’s solved |
Defined by |
The modeling framework |
The specific solver (e.g., CPLEX, Gurobi) |
Use
ModelOptionsto specify what kind of solution you want (structure, constraints, flexibility).Use
SolverOptionsto control how long and how hard the solver should try to find that solution.