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 arrange the turbines in a |
|
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 (needs a |
|
Required by |
These options change the formulation of the problem before it is handed to the solver.
Capability of different routers¶
Router |
Topology |
Feeder Route |
Feeder Limit |
|---|---|---|---|
EWRouter |
Controllable via |
Controllable via |
Not user controllable |
HGSRouter |
Radial by default; |
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", "ringed"} default: branched
Architecture of the subtrees in a solution.
feeder_route in {"straight", "segmented"} default: segmented
If feeder routes must be ``'straight'`` or can be detoured (``'segmented'``).
feeder_limit in {"unlimited", "exactly", "specified", "minimum", "min_plus1", "min_plus2", "min_plus3"} default: unlimited
Whether to limit the number of feeders. Both ``'specified'`` (an upper
bound) and ``'exactly'`` (an exact count) require the additional kwarg
``'max_feeders'``. Option ``'balanced'`` is only enforceable if the feeder
count is pinned to a single value, i.e. ``'minimum'`` or ``'exactly'``.
balanced [bool] default: False
Whether to enforce balanced subtrees (subtree loads differ at most by one unit).
max_feeders [int] default: 0
Number of feeders: the maximum if <feeder_limit = "specified">, the exact count if <feeder_limit = "exactly">
Optimize an exemplary location
[4]:
wfn = WindFarmNetwork.from_pbf(filepath='data/DTU_letters.osm.pbf', cables=[(2, 500.0), (5, 800.0), (7, 1000.0)])
[5]:
wfn
[5]:
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]:
[9]:
hgs_router = HGSRouter(time_limit=2, ringed=True)
terse = wfn.optimize(router=hgs_router)
wfn
[9]:
Set the feeder_limit lower than the possible minimum.
[10]:
hgs_router2 = HGSRouter(time_limit=2, feeder_limit=0)
terse = wfn.optimize(router=hgs_router2)
wfn
Vehicles (feeders) number (0) too low for feasibilty with given capacity (7). Setting to 6.
[10]:
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)¶
[11]:
model_options1 = ModelOptions(
topology='branched',
feeder_limit='unlimited',
feeder_route='segmented',
)
The solver constructs a branched network structure without applying any limit on the number of feeders. The feeder routes follow a segmented (piecewise-straight) pattern, as specified. All aspects of the network are consistent with the given ModelOptions.
This solution can also serve as a valid warm start for subsequent optimizations.
[12]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=10,
mip_gap=0.01,
model_options=model_options1,
verbose=True,
)
[13]:
# lower cable capacities to cleary observe the difference between runs
wfn = WindFarmNetwork.from_pbf(
filepath='data/DTU_letters.osm.pbf',
cables=[(2, 1500.0), (5, 1800.0)],
)
terse = wfn.optimize(router=milp_router)
wfn
Running basic LP presolve, initial problem dimensions: 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FixedVariablePreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::SingletonPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::ForcingAndImpliedFreeConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::FreeConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
glop::UnconstrainedVariablePreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 10 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0xd59f925c7e3b068e)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
4.97e-04s 0.00e+00d [DetectDominanceRelations]
4.61e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.60e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
1.08e-04s 0.00e+00d [DetectDuplicateColumns]
7.16e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000335796 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [8.307e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [0.000118014s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
6.94e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.25e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
1.57e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
1.81e-04s 0.00e+00d [DetectDominanceRelations]
1.40e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.59e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
7.11e-05s 0.00e+00d [DetectDuplicateConstraints]
5.67e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.16e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.03e-05s 0.00e+00d [DetectDifferentVariables]
7.02e-04s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
6.68e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
3.24e-04s 0.00e+00d [DetectEncodedComplexDomains]
5.98e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
5.77e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
1.31e-04s 1.07e-04d [FindBigVerticalLinearOverlap]
1.51e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.13e-05s 0.00e+00d [MergeClauses]
3.54e-04s 0.00e+00d [DetectDominanceRelations]
3.11e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.57e-04s 0.00e+00d [DetectDominanceRelations]
1.77e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.45e-05s 0.00e+00d [DetectDuplicateColumns]
6.44e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000197903 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.614e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6843e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
7.43e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.57e-03s 1.27e-03d [Probe] #probed=708
1.38e-04s 1.45e-04d [MaxClique]
1.55e-04s 0.00e+00d [DetectDominanceRelations]
1.23e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.07e-04s 0.00e+00d [ProcessAtMostOneAndLinear]
6.90e-05s 0.00e+00d [DetectDuplicateConstraints]
5.75e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.71e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.21e-05s 0.00e+00d [DetectDifferentVariables]
6.36e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
7.64e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.56e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.67e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.29e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
8.61e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.28e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.43e-05s 0.00e+00d [MergeClauses]
1.53e-04s 0.00e+00d [DetectDominanceRelations]
1.31e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.71e-06s 0.00e+00d [MergeNoOverlap]
2.59e-06s 0.00e+00d [MergeNoOverlap2D]
1.14e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xd87267f4fcc3ea39)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000239112 dtime: 0.00043646
Preloading model.
#Bound 0.03s best:inf next:[1364.00132,11449.6914] initial_domain
#Model 0.03s var:708/708 constraints:972/972
Starting search at 0.03s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#1 0.04s best:4527.87552 next:[1364.00132,4527.87552] fj_restart(batch:1 lin{mvs:87 evals:1'073} #w_updates:1 #perturb:0)
#Bound 0.05s best:4527.87552 next:[1377.09321,4527.87552] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#Bound 0.05s best:4527.87552 next:[1439.63944,4527.87552] quick_restart
#2 0.05s best:3418.25727 next:[1439.63944,3418.25727] fj_restart_decay_compound_perturb_obj(batch:1 lin{mvs:0 evals:12'221} gen{mvs:1'355 evals:0} comp{mvs:487 btracks:434} #w_updates:13 #perturb:0) (fixed_bools=0/354)
#Bound 0.05s best:3418.25727 next:[1446.52178,3418.25727] reduced_costs
#3 0.06s best:3286.44322 next:[1446.52178,3286.44322] ls_restart_decay(batch:1 lin{mvs:17 evals:159} #w_updates:5 #perturb:0) (fixed_bools=0/354)
#4 0.06s best:2748.44362 next:[1446.52178,2748.44362] quick_restart_no_lp (fixed_bools=0/354)
#Bound 0.06s best:2748.44362 next:[1451.43989,2748.44362] pseudo_costs
#5 0.06s best:2124.90285 next:[1451.43989,2124.90284] no_lp (fixed_bools=0/354)
#Bound 0.06s best:2124.90285 next:[1657.8143,2124.90284] lb_tree_search
#6 0.07s best:2122.86795 next:[1657.8143,2122.86795] quick_restart_no_lp (fixed_bools=0/361)
#7 0.07s best:2119.06769 next:[1657.8143,2119.06769] quick_restart_no_lp (fixed_bools=0/361)
#8 0.08s best:2097.80481 next:[1657.8143,2097.80481] rnd_var_lns (d=7.07e-01 s=26 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#9 0.08s best:2086.27975 next:[1657.8143,2086.27974] no_lp (fixed_bools=0/354)
#10 0.08s best:2084.91276 next:[1657.8143,2084.91276] no_lp (fixed_bools=0/354)
#11 0.09s best:1985.95991 next:[1657.8143,1985.95991] rins_lp_lns (d=5.00e-01 s=28 t=0.10 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#12 0.10s best:1952.91214 next:[1657.8143,1952.91214] quick_restart_no_lp (fixed_bools=0/362)
#13 0.10s best:1949.11187 next:[1657.8143,1949.11187] quick_restart_no_lp (fixed_bools=0/362)
#14 0.10s best:1931.83949 next:[1657.8143,1931.83949] graph_cst_lns (d=7.07e-01 s=31 t=0.10 p=1.00 stall=0 h=base) [combined with: quick_restart_no_lp...] (fixed_bools=0/354)
#15 0.11s best:1925.89379 next:[1657.8143,1925.89379] ls_lin_restart_decay_compound(batch:1 lin{mvs:0 evals:3'244} gen{mvs:334 evals:0} comp{mvs:16 btracks:159} #w_updates:4 #perturb:0) (fixed_bools=0/354)
#Bound 0.11s best:1925.89379 next:[1674.7528,1925.89379] lb_tree_search
#Bound 0.12s best:1925.89379 next:[1677.89266,1925.89379] max_lp
#Bound 0.13s best:1925.89379 next:[1681.70525,1925.89379] max_lp
#16 0.13s best:1856.88766 next:[1681.70525,1856.88766] reduced_costs (fixed_bools=0/354)
#Bound 0.14s best:1856.88766 next:[1682.16269,1856.88766] max_lp
#17 0.15s best:1854.67248 next:[1682.16269,1854.67248] quick_restart_no_lp (fixed_bools=0/370)
#18 0.16s best:1846.17065 next:[1682.16269,1846.17065] quick_restart_no_lp (fixed_bools=0/370)
#19 0.16s best:1829.69442 next:[1682.16269,1829.69442] quick_restart_no_lp (fixed_bools=0/372)
#20 0.17s best:1818.47193 next:[1682.16269,1818.47193] graph_var_lns (d=8.14e-01 s=40 t=0.10 p=1.00 stall=0 h=base) (fixed_bools=0/354)
#21 0.19s best:1817.64927 next:[1682.16269,1817.64927] ls_restart_perturb(batch:1 lin{mvs:783 evals:16'456} #w_updates:357 #perturb:0) (fixed_bools=0/354)
#22 0.20s best:1815.43294 next:[1682.16269,1815.43294] quick_restart_no_lp (fixed_bools=0/379)
#23 0.20s best:1805.55513 next:[1682.16269,1805.55513] ls_lin_restart_perturb(batch:1 lin{mvs:999 evals:19'251} #w_updates:541 #perturb:0) (fixed_bools=0/354)
#24 0.21s best:1803.3388 next:[1682.16269,1803.33879] quick_restart_no_lp (fixed_bools=0/381)
#25 0.25s best:1799.78283 next:[1682.16269,1799.78282] reduced_costs (fixed_bools=0/358)
#26 0.25s best:1799.67074 next:[1682.16269,1799.67074] quick_restart_no_lp (fixed_bools=0/382)
#27 0.26s best:1799.01451 next:[1682.16269,1799.0145] quick_restart_no_lp (fixed_bools=0/383)
#Bound 0.29s best:1799.01451 next:[1686.64815,1799.0145] lb_tree_search
#28 0.37s best:1782.13706 next:[1686.64815,1782.13706] lb_relax_lns_bool_h (d=5.00e-01 s=46 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#Bound 0.39s best:1782.13706 next:[1688.02074,1782.13706] max_lp
#Bound 0.43s best:1782.13706 next:[1688.06841,1782.13706] max_lp
#Model 0.44s var:698/708 constraints:961/972
#Bound 0.44s best:1782.13706 next:[1688.07122,1782.13706] max_lp
#Bound 0.54s best:1782.13706 next:[1691.51773,1782.13706] lb_tree_search
#29 0.59s best:1758.85932 next:[1691.51773,1758.85932] lb_relax_lns_int (d=5.00e-01 s=23 t=0.50 p=0.00 stall=0 h=base) (fixed_bools=0/354)
#30 0.60s best:1758.41439 next:[1691.51773,1758.41439] quick_restart_no_lp (fixed_bools=5/393)
#Model 0.70s var:696/708 constraints:958/972
#Bound 0.78s best:1758.41439 next:[1696.30992,1758.41439] lb_tree_search
#Model 0.79s var:694/708 constraints:956/972
#Model 0.83s var:692/708 constraints:954/972
#Model 0.86s var:690/708 constraints:952/972
#Model 0.87s var:684/708 constraints:946/972
#Bound 0.98s best:1758.41439 next:[1696.56568,1758.41439] max_lp
#Model 1.02s var:680/708 constraints:941/972
#Bound 1.07s best:1758.41439 next:[1700.56121,1758.41439] lb_tree_search
#Bound 1.10s best:1758.41439 next:[1700.61188,1758.41439] lb_tree_search (nodes=4/4 rc=0 decisions=33 @root=8 restarts=0 lp_iters=[0, 0, 271, 51])
#Model 1.12s var:672/708 constraints:933/972
#Bound 1.19s best:1758.41439 next:[1700.69725,1758.41439] max_lp
#Model 1.23s var:664/708 constraints:925/972
#Bound 1.26s best:1758.41439 next:[1701.86666,1758.41439] max_lp
#Bound 1.31s best:1758.41439 next:[1707.09759,1758.41439] lb_tree_search
#Model 1.33s var:650/708 constraints:911/972
#Model 1.54s var:648/708 constraints:909/972
#Model 1.66s var:638/708 constraints:897/972
#Bound 1.85s best:1758.41439 next:[1716.25618,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=55 @root=12 restarts=0 lp_iters=[0, 0, 1'313, 168]) [skipped_logs=10]
#Model 2.18s var:620/708 constraints:877/972
#Model 2.56s var:618/708 constraints:875/972
#Model 2.75s var:616/708 constraints:872/972
#Bound 2.60s best:1758.41439 next:[1718.43631,1758.41439] lb_tree_search (nodes=7/7 rc=1 decisions=69 @root=15 restarts=0 lp_iters=[0, 0, 1'828, 168]) [skipped_logs=3]
#Model 3.61s var:612/708 constraints:868/972
#Bound 3.96s best:1758.41439 next:[1724.63806,1758.41439] lb_tree_search (nodes=9/9 rc=1 decisions=99 @root=18 restarts=0 lp_iters=[0, 0, 4'375, 412]) [skipped_logs=10]
#Bound 4.64s best:1758.41439 next:[1725.6461,1758.41439] lb_tree_search (nodes=13/13 rc=1 decisions=126 @root=18 restarts=0 lp_iters=[0, 0, 7'236, 945]) [skipped_logs=6]
#Model 5.20s var:608/708 constraints:863/972
#Model 5.22s var:606/708 constraints:861/972
#Model 5.59s var:604/708 constraints:859/972
#Bound 5.96s best:1758.41439 next:[1727.78593,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=174 @root=19 restarts=0 lp_iters=[0, 0, 10'818, 1'159]) [skipped_logs=15]
#Model 6.62s var:600/708 constraints:855/972
#Bound 6.62s best:1758.41439 next:[1727.98383,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=183 @root=20 restarts=0 lp_iters=[0, 0, 11'911, 1'159]) [skipped_logs=2]
#Model 7.20s var:594/708 constraints:849/972
#Model 7.77s var:590/708 constraints:845/972
#Model 7.77s var:588/708 constraints:841/972
#Model 7.85s var:580/708 constraints:832/972
#Model 7.90s var:578/708 constraints:830/972
#Bound 8.06s best:1758.41439 next:[1728.90581,1758.41439] lb_tree_search (nodes=15/16 rc=1 decisions=199 @root=23 restarts=0 lp_iters=[0, 0, 13'210, 1'159]) [skipped_logs=2]
#Model 8.86s var:576/708 constraints:828/972
#Bound 8.69s best:1758.41439 next:[1730.32682,1758.41439] lb_tree_search (nodes=19/20 rc=2 decisions=236 @root=23 restarts=0 lp_iters=[0, 0, 15'620, 1'258]) [skipped_logs=8]
#Model 9.14s var:572/708 constraints:824/972
#Bound 9.99s best:1758.41439 next:[1731.23905,1758.41439] lb_tree_search (nodes=20/21 rc=2 decisions=253 @root=25 restarts=0 lp_iters=[0, 0, 17'032, 1'386]) [skipped_logs=4]
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 1.31ms, 8.51s] 4.25s 4.25s 8.51s
'default_lp': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 1.91ms, 4.35s] 2.18s 2.18s 4.36s
'feasibility_pump': 45 [ 1.05ms, 22.58ms] 1.89ms 3.15ms 84.99ms 44 [145.79us, 11.26ms] 418.23us 1.65ms 18.40ms
'fj': 1 [ 6.78ms, 6.78ms] 6.78ms 0.00ns 6.78ms 1 [257.12us, 257.12us] 257.12us 0.00ns 257.12us
'fj': 1 [ 12.08ms, 12.08ms] 12.08ms 0.00ns 12.08ms 1 [ 4.08ms, 4.08ms] 4.08ms 0.00ns 4.08ms
'fs_random': 1 [ 11.16ms, 11.16ms] 11.16ms 0.00ns 11.16ms 1 [944.37us, 944.37us] 944.37us 0.00ns 944.37us
'fs_random_no_lp': 1 [ 10.83ms, 10.83ms] 10.83ms 0.00ns 10.83ms 1 [956.02us, 956.02us] 956.02us 0.00ns 956.02us
'fs_random_quick_restart_no_lp': 1 [ 11.66ms, 11.66ms] 11.66ms 0.00ns 11.66ms 1 [930.93us, 930.93us] 930.93us 0.00ns 930.93us
'graph_arc_lns': 22 [645.28us, 411.74ms] 240.38ms 139.68ms 5.29s 20 [833.58us, 100.17ms] 72.11ms 37.37ms 1.44s
'graph_cst_lns': 20 [ 16.91ms, 411.43ms] 235.62ms 157.18ms 4.71s 20 [ 85.10us, 100.32ms] 60.85ms 46.00ms 1.22s
'graph_dec_lns': 21 [464.06us, 401.75ms] 221.20ms 155.24ms 4.65s 20 [ 10.00ns, 100.20ms] 61.43ms 43.86ms 1.23s
'graph_var_lns': 22 [ 6.21ms, 430.73ms] 211.61ms 160.20ms 4.66s 22 [ 11.85us, 100.24ms] 55.34ms 46.21ms 1.22s
'lb_relax_lns': 6 [120.56ms, 1.49s] 864.32ms 604.50ms 5.19s 6 [ 18.44ms, 513.33ms] 298.67ms 221.88ms 1.79s
'lb_tree_search': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 18.39ms, 5.51s] 2.76s 2.74s 5.52s
'ls': 25 [ 3.47ms, 245.82ms] 183.68ms 68.47ms 4.59s 25 [128.24us, 100.01ms] 87.15ms 31.93ms 2.18s
'ls_lin': 24 [ 3.31ms, 253.59ms] 185.80ms 70.16ms 4.46s 24 [649.13us, 100.01ms] 87.84ms 32.19ms 2.11s
'max_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 19.84ms, 4.85s] 2.44s 2.42s 4.87s
'no_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.31ms, 4.62s] 2.31s 2.31s 4.62s
'objective_lb_search': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 2.02ms, 4.21s] 2.11s 2.10s 4.21s
'probing': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 1.90ms, 4.90s] 2.45s 2.45s 4.91s
'pseudo_costs': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.84ms, 4.56s] 2.28s 2.28s 4.56s
'quick_restart': 1 [ 9.97s, 9.97s] 9.97s 0.00ns 9.97s 2 [ 1.92ms, 3.88s] 1.94s 1.94s 3.89s
'quick_restart_no_lp': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.31ms, 7.08s] 3.54s 3.54s 7.08s
'reduced_costs': 1 [ 9.96s, 9.96s] 9.96s 0.00ns 9.96s 2 [ 1.86ms, 4.91s] 2.45s 2.45s 4.91s
'rins/rens': 29 [873.68us, 430.71ms] 180.46ms 156.83ms 5.23s 24 [676.14us, 100.18ms] 52.71ms 40.59ms 1.27s
'rnd_cst_lns': 30 [ 11.95ms, 389.68ms] 203.03ms 157.88ms 6.09s 30 [ 10.00ns, 100.13ms] 53.46ms 46.94ms 1.60s
'rnd_var_lns': 25 [ 6.44ms, 456.83ms] 190.79ms 164.86ms 4.77s 25 [ 4.04us, 100.11ms] 47.35ms 46.30ms 1.18s
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 516 145'244 312'822 375 4'957 148'672 3'938'089 7'566'787
'default_lp': 400 1'510 24'775 8 8'326 12'148 162'386 696'811
'fs_random': 354 0 456 0 456 456 3'080 10'195
'fs_random_no_lp': 354 0 492 0 492 492 3'309 10'970
'fs_random_quick_restart_no_lp': 354 0 478 0 478 478 3'228 10'685
'lb_tree_search': 354 104 22'699 0 9'537 11'487 97'818 417'704
'max_lp': 354 1'206 23'823 4 10'176 12'986 115'944 586'914
'no_lp': 354 91'222 163'979 257 7'238 98'799 4'266'826 14'782'772
'objective_lb_search': 398 1'318 28'881 13 9'541 13'633 162'227 749'811
'probing': 395 0 872 0 872 872 6'358 19'734
'pseudo_costs': 354 1'459 26'221 8 9'358 12'437 148'370 732'547
'quick_restart': 368 413 49'787 22 17'868 22'641 226'916 1'117'259
'quick_restart_no_lp': 443 49'200 495'765 4'290 24'516 77'484 3'181'472 10'803'074
'reduced_costs': 362 1'370 34'080 11 9'963 13'560 153'767 772'421
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 70 1 516 445 1'180 7'679 11'519
'default_lp': 66 0 400 334 646 215 1'037
'fs_random': 0 0 354 354 74 40 0
'fs_random_no_lp': 0 0 354 354 74 40 0
'fs_random_quick_restart_no_lp': 0 0 354 354 74 40 0
'lb_tree_search': 67 0 354 287 404 200 2
'max_lp': 52 0 354 302 314 142 829
'no_lp': 68 0 354 286 472 971 7'282
'objective_lb_search': 79 0 398 319 608 199 102
'probing': 0 0 395 395 934 40 0
'pseudo_costs': 66 0 354 288 410 196 906
'quick_restart': 68 0 368 300 542 209 162
'quick_restart_no_lp': 79 0 443 364 1'124 1'612 10'171
'reduced_costs': 66 0 362 296 478 212 799
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 116'675 999'797 628'102 6'152'900 3'528'070 41'521
'default_lp': 1'185 17'464 21'929 39'975 0 358
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 22 31 986 717 0 86
'max_lp': 1'039 20'494 23'294 51'228 0 364
'no_lp': 78'108 1'136'499 259'079 3'610'643 2'242'718 24'132
'objective_lb_search': 1'125 22'940 15'998 35'577 0 422
'probing': 0 0 0 0 0 0
'pseudo_costs': 1'231 21'637 33'763 53'540 0 474
'quick_restart': 234 3'141 3'754 9'643 0 161
'quick_restart_no_lp': 37'185 299'961 492'025 1'931'245 1'029'722 9'686
'reduced_costs': 1'057 11'793 14'969 53'874 0 309
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 3'395 58'621 0 856 23'139 3'169 184
'default_lp': 2'307 13'500 0 99 747 557 4
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 2'199 13'301 1 81 625 455 4
'max_lp': 1'752 11'488 0 37 286 227 2
'no_lp': 4'360 28'518 0 370 4'276 5'042 24
'objective_lb_search': 3'019 17'228 0 107 800 677 8
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 2'515 14'884 0 129 966 654 2
'quick_restart': 5'506 31'229 1 132 941 1'304 5
'quick_restart_no_lp': 16'771 112'547 0 1'266 13'110 11'345 176
'reduced_costs': 3'141 18'432 1 122 859 843 13
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 1'423 0 14 39'634 3'132 12 1'887 856 6 513 0 0 78'583 343'456 145'244
'default_lp': 27 1 2 337 0 7 21 99 20 23 0 0 0 3'672 1'510
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 35 0 3 86 0 1 0 81 17 2 0 0 0 14 104
'max_lp': 1 0 0 353 0 4 11 37 5 0 0 0 0 2'610 1'206
'no_lp': 465 48 6 22'972 984 379 1'160 370 12 1'344 0 0 55'504 217'310 91'222
'objective_lb_search': 654 111 6 403 0 9 19 107 14 12 0 0 0 2'295 1'318
'probing': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'pseudo_costs': 57 1 4 447 1 0 27 129 15 8 0 0 0 3'033 1'459
'quick_restart': 13 0 2 156 1 0 5 132 22 24 0 0 0 739 413
'quick_restart_no_lp': 2'228 23 20 9'016 527 65 670 1'266 469 622 0 0 22'480 104'761 49'200
'reduced_costs': 33 0 5 289 2 23 20 122 73 99 0 0 0 4'005 1'370
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 94'165 1'924 4'733 1 252
'fs_random': 1 0 0 0 0 0
'lb_tree_search': 1 23'740 1'273 227 118 0
'max_lp': 1 81'447 1'363 2'651 812 106
'objective_lb_search': 1 77'580 2'013 3'901 1 119
'probing': 1 19'816 2'095 232 0 0
'pseudo_costs': 1 87'203 1'828 3'498 896 138
'quick_restart': 1 37'829 1'883 1'482 1 57
'reduced_costs': 1 84'477 1'799 2'354 806 191
Lp dimension Final dimension of first component
'default_lp': 531 rows, 669 columns, 4118 entries
'fs_random': 0 rows, 669 columns, 0 entries
'lb_tree_search': 1916 rows, 708 columns, 36204 entries
'max_lp': 586 rows, 708 columns, 7008 entries
'objective_lb_search': 697 rows, 669 columns, 10348 entries
'probing': 1750 rows, 669 columns, 50514 entries
'pseudo_costs': 639 rows, 708 columns, 7341 entries
'quick_restart': 755 rows, 669 columns, 11390 entries
'reduced_costs': 652 rows, 708 columns, 7109 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 4'967 0 7'409 0
'fs_random': 0 0 0 0 0 0
'lb_tree_search': 0 7 345 0 41'101 0
'max_lp': 0 0 3'564 0 12'251 0
'objective_lb_search': 0 2 4'002 0 15'050 0
'probing': 0 0 228 0 46'380 0
'pseudo_costs': 0 0 4'513 0 12'626 0
'quick_restart': 0 0 1'537 0 29'023 0
'reduced_costs': 0 0 3'332 0 19'073 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 3'096 102 2'865 0 2'044 27 81 1'924/3'942
'fs_random': 1'172 0 0 0 0 0 0 0/0
'lb_tree_search': 2'599 638 7'148 0 4'389 334 14 1'273/2'306
'max_lp': 2'689 194 2'916 0 2'234 50 23 1'363/2'395
'objective_lb_search': 3'185 172 4'755 0 2'905 91 61 2'013/4'093
'probing': 3'267 564 0 0 0 1'091 52 2'095/3'926
'pseudo_costs': 3'154 196 3'882 0 2'789 48 54 1'828/3'387
'quick_restart': 3'055 430 7'299 0 4'604 308 98 1'883/3'643
'reduced_costs': 3'125 392 4'494 0 3'249 87 40 1'799/3'235
Lp Cut max_lp reduced_costs pseudo_costs lb_tree_search default_lp quick_restart probing objective_lb_search
CG_FF: 9 12 25 5 22 28 36 17
CG_K: 6 8 14 5 16 25 17 10
CG_KL: - - 6 - 2 1 1 1
CG_R: 26 33 48 15 25 23 52 13
CG_RB: 55 72 77 34 56 51 85 73
CG_RBP: 20 13 36 13 45 25 51 31
Clique: 1 1 2 - - - - -
IB: 351 519 713 2 777 477 414 634
MIR_1_FF: 52 84 58 81 67 95 138 95
MIR_1_K: 7 6 12 6 23 19 47 29
MIR_1_KL: 5 12 13 8 10 14 30 13
MIR_1_R: 2 1 - - 2 3 2 3
MIR_1_RB: 28 19 18 17 28 22 34 43
MIR_1_RBP: 8 11 7 16 17 28 26 23
MIR_2_FF: 57 68 85 96 77 107 106 94
MIR_2_K: 14 7 9 15 19 28 47 34
MIR_2_KL: 7 10 14 25 13 9 21 15
MIR_2_R: 7 4 7 1 8 14 5 8
MIR_2_RB: 33 57 44 44 37 34 45 55
MIR_2_RBP: 16 9 12 21 32 33 40 35
MIR_3_FF: 55 82 66 75 51 53 58 53
MIR_3_K: 20 13 19 19 23 40 19 32
MIR_3_KL: 9 13 9 8 11 12 13 11
MIR_3_R: 8 7 4 5 5 5 4 5
MIR_3_RB: 39 60 44 33 35 21 32 34
MIR_3_RBP: 18 19 16 27 29 37 20 36
MIR_4_FF: 34 49 33 63 30 23 41 35
MIR_4_K: 21 18 16 23 17 21 28 29
MIR_4_KL: 11 14 5 14 8 8 24 15
MIR_4_R: 2 6 2 6 8 1 2 4
MIR_4_RB: 28 47 25 17 29 16 13 23
MIR_4_RBP: 37 27 13 24 20 23 20 19
MIR_5_FF: 21 41 20 44 28 17 29 13
MIR_5_K: 21 26 20 27 25 22 26 24
MIR_5_KL: 16 15 9 19 15 8 9 10
MIR_5_R: 1 4 - 2 3 1 1 2
MIR_5_RB: 15 30 13 18 16 6 11 15
MIR_5_RBP: 30 26 19 51 20 25 21 32
MIR_6_FF: 12 22 24 20 16 19 34 17
MIR_6_K: 13 20 26 19 9 16 26 16
MIR_6_KL: 5 14 7 8 8 9 11 8
MIR_6_R: 2 3 4 1 1 - - -
MIR_6_RB: 13 20 15 13 14 9 6 6
MIR_6_RBP: 14 26 16 31 12 24 31 29
ZERO_HALF_FF: 20 19 8 13 25 10 19 29
ZERO_HALF_K: 10 2 - 1 8 3 11 6
ZERO_HALF_KL: 5 3 1 6 - 1 2 3
ZERO_HALF_R: 138 175 166 235 147 346 335 230
ZERO_HALF_RB: 28 33 26 36 26 50 22 20
ZERO_HALF_RBP: 13 19 2 11 9 21 30 31
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 5/20 45% 5.21e-01 0.10
'graph_cst_lns': 6/20 45% 6.10e-01 0.10
'graph_dec_lns': 2/20 45% 6.89e-01 0.10
'graph_var_lns': 5/22 50% 7.14e-01 0.10
'lb_relax_lns': 4/6 50% 6.06e-01 0.50
'rins/rens': 8/26 50% 6.65e-01 0.10
'rnd_cst_lns': 7/30 50% 7.86e-01 0.10
'rnd_var_lns': 6/25 60% 9.11e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'fj_restart': 1 1 87 0 0 0 1 1'373
'fj_restart_decay_compound_perturb_obj': 1 1 0 1'355 487 434 13 27'144
'ls_lin_restart': 1 1 18'588 0 0 0 6'050 591'597
'ls_lin_restart_compound': 3 3 0 77'730 6'475 35'621 299 1'531'778
'ls_lin_restart_compound_perturb': 5 4 0 126'229 8'775 58'715 907 2'526'016
'ls_lin_restart_decay': 3 3 69'967 0 0 0 3'442 1'202'624
'ls_lin_restart_decay_compound': 2 2 0 24'587 3'734 10'423 41 511'369
'ls_lin_restart_decay_compound_perturb': 3 3 0 73'619 11'047 31'284 141 1'579'556
'ls_lin_restart_decay_perturb': 2 2 44'183 0 0 0 1'901 838'980
'ls_lin_restart_perturb': 5 5 58'879 0 0 0 34'282 1'647'512
'ls_restart': 4 4 76'877 0 0 0 37'560 2'197'612
'ls_restart_compound_perturb': 3 3 0 77'884 5'634 36'117 477 1'538'148
'ls_restart_decay': 4 4 69'692 0 0 0 3'301 1'226'552
'ls_restart_decay_compound': 5 4 0 114'230 17'616 48'302 191 2'416'467
'ls_restart_decay_compound_perturb': 5 5 0 91'393 14'701 38'336 202 2'076'439
'ls_restart_decay_perturb': 3 2 70'390 0 0 0 3'301 1'239'488
'ls_restart_perturb': 1 1 783 0 0 0 357 19'971
Solutions (30) Num Rank
'fj_restart': 2 [0,1]
'fj_restart_decay_compound_perturb_obj': 2 [1,2]
'graph_cst_lns': 2 [13,14]
'graph_var_lns': 2 [19,20]
'lb_relax_lns_bool_h': 2 [27,28]
'lb_relax_lns_int': 2 [28,29]
'ls_lin_restart_decay_compound': 2 [14,15]
'ls_lin_restart_perturb': 2 [22,23]
'ls_restart_decay': 2 [2,3]
'ls_restart_perturb': 2 [20,21]
'no_lp': 6 [4,10]
'quick_restart_no_lp': 26 [3,30]
'reduced_costs': 4 [15,25]
'rins_lp_lns': 2 [10,11]
'rnd_var_lns': 2 [7,8]
Objective bounds Num
'am1_presolve': 1
'initial_domain': 1
'lb_tree_search': 77
'max_lp': 9
'pseudo_costs': 1
'quick_restart': 1
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 17 58 16
'best_solutions': 113 184 85
'fj solution hints': 0 0 0
'lp solutions': 112 29 81
'pump': 0 0
Improving bounds shared Num Sym
'default_lp': 2 0
'lb_tree_search': 88 0
'max_lp': 24 0
'pseudo_costs': 10 0
'quick_restart': 8 0
'quick_restart_no_lp': 8 0
'reduced_costs': 10 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 247 198 46 47
'default_lp': 21 296 42 47
'fs_random': 0 0 0 47
'fs_random_no_lp': 0 0 0 47
'fs_random_quick_restart_no_lp': 0 0 0 47
'lb_tree_search': 1 300 39 47
'max_lp': 8 138 22 47
'no_lp': 177 258 47 47
'objective_lb_search': 18 297 47 47
'probing': 0 0 0 47
'pseudo_costs': 29 305 43 47
'quick_restart': 21 295 47 47
'quick_restart_no_lp': 500 154 47 47
'reduced_costs': 72 288 42 47
LRAT_status: NA
[Scaling] scaled_objective_bound: 1731.24 corrected_bound: 1731.24 delta: 1.40213e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1731.239044689607
integers: 688
booleans: 354
conflicts: 0
branches: 492
propagations: 3309
integer_propagations: 10970
restarts: 0
lp_iterations: 0
walltime: 10.0138
usertime: 10.0138
deterministic_time: 72.7035
gap_integral: 247.027
solution_fingerprint: 0x40238ccd9cfcdeef
[13]:
Second MILP Run (model_options2)¶
[14]:
model_options2 = ModelOptions(
topology='radial',
feeder_limit='minimum',
feeder_route='straight',
)
The solver produces a strictly radial network, restricting the number of feeders to the minimum required given the number or turbines and maximum cable capacity. The feeder_route='straight' tells the solver to avoid blocking any feeder route with cables which tends to produce more straight-line connections, although the feeder routes may still have bends due to the exclusion zones.
Note: with this setting, neither EWRouter nor HGSRouter could secure warmstarting of the model.
[15]:
milp_router2 = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=10,
mip_gap=0.01,
model_options=model_options2
)
terse = wfn.optimize(router=milp_router2)
wfn
[15]:
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:
[16]:
model_options = ModelOptions(
topology='branched',
feeder_limit='unlimited',
feeder_route='segmented',
)
[17]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
model_options=model_options,
verbose=True
)
Either EWRouter or HGSRouter can be used to warmstart.
[18]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0x76dbad3948cc2e8b)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
2.00e-04s 0.00e+00d [DetectDominanceRelations]
4.29e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
3.01e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
5.78e-05s 0.00e+00d [DetectDuplicateColumns]
9.84e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000256381 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.805e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6902e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.43e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
8.32e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
1.98e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
2.08e-04s 0.00e+00d [DetectDominanceRelations]
2.90e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
6.33e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
8.38e-05s 0.00e+00d [DetectDuplicateConstraints]
6.81e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.37e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.23e-05s 0.00e+00d [DetectDifferentVariables]
1.02e-03s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
7.53e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.63e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.59e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.04e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
8.48e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.08e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
7.96e-06s 0.00e+00d [MergeClauses]
1.47e-04s 0.00e+00d [DetectDominanceRelations]
2.10e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.55e-04s 0.00e+00d [DetectDominanceRelations]
1.24e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
5.36e-05s 0.00e+00d [DetectDuplicateColumns]
8.66e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000531971 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [3.2157e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [8.5475e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
8.00e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.70e-03s 1.27e-03d [Probe] #probed=708
1.39e-04s 1.45e-04d [MaxClique]
1.80e-04s 0.00e+00d [DetectDominanceRelations]
1.63e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.19e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
6.98e-05s 0.00e+00d [DetectDuplicateConstraints]
5.50e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.01e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
9.91e-06s 0.00e+00d [DetectDifferentVariables]
6.29e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
6.87e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.17e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.35e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.04e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
7.15e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.04e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
7.76e-06s 0.00e+00d [MergeClauses]
1.86e-04s 0.00e+00d [DetectDominanceRelations]
2.40e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.20e-06s 0.00e+00d [MergeNoOverlap]
3.02e-06s 0.00e+00d [MergeNoOverlap2D]
1.33e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xb3500f89df7d1090)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000220028 dtime: 0.00043646
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1812.72623 next:[1364.00132,1812.72623] complete_hint
#Model 0.04s var:708/708 constraints:972/972
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#2 0.05s best:1806.84914 next:[1364.00132,1806.84914] quick_restart_no_lp [hint] (fixed_bools=0/354)
#Bound 0.05s best:1806.84914 next:[1439.63944,1806.84914] quick_restart
#Bound 0.05s best:1806.84914 next:[1446.52178,1806.84914] reduced_costs
#Bound 0.06s best:1806.84914 next:[1657.8143,1806.84914] max_lp
#3 0.07s best:1805.92157 next:[1657.8143,1805.92157] graph_cst_lns (d=5.00e-01 s=15 t=0.10 p=0.00 stall=0 h=base)
#4 0.08s best:1805.47664 next:[1657.8143,1805.47664] quick_restart_no_lp (fixed_bools=0/372)
#5 0.10s best:1764.91917 next:[1657.8143,1764.91917] graph_arc_lns (d=5.00e-01 s=14 t=0.10 p=0.00 stall=0 h=base)
#Bound 0.12s best:1764.91917 next:[1674.7528,1764.91917] lb_tree_search
#Bound 0.12s best:1764.91917 next:[1677.89266,1764.91917] max_lp
#Model 0.15s var:698/708 constraints:961/972
#6 0.22s best:1758.41439 next:[1677.89266,1758.41439] quick_restart_no_lp (fixed_bools=5/377)
#Bound 0.25s best:1758.41439 next:[1682.16026,1758.41439] max_lp
#Model 0.31s var:696/708 constraints:958/972
#Bound 0.32s best:1758.41439 next:[1683.27935,1758.41439] lb_tree_search
#Bound 0.33s best:1758.41439 next:[1686.94433,1758.41439] max_lp
#Model 0.33s var:694/708 constraints:956/972
#Bound 0.43s best:1758.41439 next:[1687.01627,1758.41439] lb_tree_search (nodes=5/5 rc=0 decisions=25 @root=2 restarts=0 lp_iters=[0, 0, 244, 446])
#Model 0.43s var:690/708 constraints:952/972
#Bound 0.46s best:1758.41439 next:[1688.27541,1758.41439] lb_tree_search (nodes=7/7 rc=0 decisions=37 @root=2 restarts=0 lp_iters=[0, 0, 513, 474])
#Bound 0.48s best:1758.41439 next:[1688.28918,1758.41439] lb_tree_search (nodes=8/8 rc=0 decisions=48 @root=2 restarts=0 lp_iters=[0, 0, 625, 477])
#Bound 0.50s best:1758.41439 next:[1688.38401,1758.41439] lb_tree_search (nodes=11/11 rc=2 decisions=65 @root=2 restarts=0 lp_iters=[0, 0, 744, 484])
#Bound 0.51s best:1758.41439 next:[1688.4031,1758.41439] lb_tree_search (nodes=12/12 rc=2 decisions=68 @root=2 restarts=0 lp_iters=[0, 0, 844, 548])
#Bound 0.54s best:1758.41439 next:[1688.98027,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=83 @root=2 restarts=0 lp_iters=[0, 0, 998, 576])
#Bound 0.55s best:1758.41439 next:[1689.5203,1758.41439] lb_tree_search (nodes=13/13 rc=3 decisions=84 @root=2 restarts=0 lp_iters=[0, 0, 1'051, 576])
#Bound 0.58s best:1758.41439 next:[1689.52221,1758.41439] lb_tree_search (nodes=15/15 rc=4 decisions=92 @root=2 restarts=0 lp_iters=[0, 0, 1'309, 598])
#Bound 0.61s best:1758.41439 next:[1690.01805,1758.41439] lb_tree_search (nodes=16/16 rc=5 decisions=100 @root=2 restarts=0 lp_iters=[0, 0, 1'479, 627])
#Bound 0.64s best:1758.41439 next:[1690.68811,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=106 @root=2 restarts=0 lp_iters=[0, 0, 1'673, 680])
#Bound 0.65s best:1758.41439 next:[1691.48972,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=107 @root=2 restarts=0 lp_iters=[0, 0, 1'726, 680])
#Bound 0.65s best:1758.41439 next:[1691.98313,1758.41439] lb_tree_search (nodes=17/17 rc=6 decisions=108 @root=2 restarts=0 lp_iters=[0, 0, 1'749, 680])
#Model 0.84s var:676/708 constraints:937/972
#Bound 0.74s best:1758.41439 next:[1693.64939,1758.41439] lb_tree_search (nodes=21/21 rc=6 decisions=124 @root=2 restarts=0 lp_iters=[0, 0, 2'117, 781]) [skipped_logs=6]
#Bound 1.00s best:1758.41439 next:[1693.65527,1758.41439] lb_tree_search (nodes=21/21 rc=6 decisions=131 @root=2 restarts=0 lp_iters=[0, 0, 2'405, 781]) [skipped_logs=0]
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [962.81ms, 962.81ms] 962.81ms 0.00ns 962.81ms 2 [ 1.31ms, 522.23ms] 261.77ms 260.46ms 523.54ms
'default_lp': 1 [961.25ms, 961.25ms] 961.25ms 0.00ns 961.25ms 2 [ 25.07ms, 271.65ms] 148.36ms 123.29ms 296.72ms
'feasibility_pump': 5 [ 35.49us, 20.59ms] 5.01ms 7.88ms 25.05ms 2 [145.79us, 11.26ms] 5.70ms 5.56ms 11.41ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_quick_restart_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 3 [ 11.24ms, 374.28ms] 149.50ms 160.34ms 448.50ms 2 [ 4.71ms, 100.04ms] 52.38ms 47.66ms 104.75ms
'graph_cst_lns': 4 [ 26.40ms, 471.25ms] 146.04ms 188.03ms 584.14ms 4 [392.66us, 100.00ms] 27.20ms 42.14ms 108.79ms
'graph_dec_lns': 5 [642.12us, 727.22us] 694.82us 30.23us 3.47ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_var_lns': 4 [ 3.25ms, 394.72ms] 121.47ms 159.34ms 485.90ms 4 [ 10.00ns, 100.00ms] 27.69ms 41.93ms 110.75ms
'lb_relax_lns': 2 [224.46ms, 692.44ms] 458.45ms 233.99ms 916.90ms 2 [ 58.99ms, 180.30ms] 119.65ms 60.66ms 239.29ms
'lb_tree_search': 1 [962.03ms, 962.03ms] 962.03ms 0.00ns 962.03ms 2 [ 46.70ms, 357.73ms] 202.22ms 155.51ms 404.43ms
'ls': 3 [185.99ms, 198.56ms] 193.07ms 5.25ms 579.22ms 3 [100.00ms, 100.01ms] 100.01ms 1.09us 300.02ms
'ls_lin': 3 [184.53ms, 197.21ms] 191.41ms 5.23ms 574.23ms 3 [100.01ms, 100.01ms] 100.01ms 954.15ns 300.02ms
'max_lp': 1 [960.23ms, 960.23ms] 960.23ms 0.00ns 960.23ms 2 [ 54.76ms, 309.97ms] 182.36ms 127.60ms 364.73ms
'no_lp': 1 [962.72ms, 962.72ms] 962.72ms 0.00ns 962.72ms 2 [ 1.47ms, 307.56ms] 154.51ms 153.05ms 309.02ms
'objective_lb_search': 1 [961.78ms, 961.78ms] 961.78ms 0.00ns 961.78ms 2 [ 27.32ms, 277.85ms] 152.58ms 125.26ms 305.16ms
'probing': 1 [961.93ms, 961.93ms] 961.93ms 0.00ns 961.93ms 2 [ 23.78ms, 209.41ms] 116.59ms 92.82ms 233.18ms
'pseudo_costs': 1 [962.24ms, 962.24ms] 962.24ms 0.00ns 962.24ms 2 [ 10.45ms, 230.27ms] 120.36ms 109.91ms 240.71ms
'quick_restart': 1 [962.46ms, 962.46ms] 962.46ms 0.00ns 962.46ms 2 [ 26.31ms, 242.81ms] 134.56ms 108.25ms 269.12ms
'quick_restart_no_lp': 1 [962.29ms, 962.29ms] 962.29ms 0.00ns 962.29ms 2 [ 1.47ms, 387.33ms] 194.40ms 192.93ms 388.80ms
'reduced_costs': 1 [962.28ms, 962.28ms] 962.28ms 0.00ns 962.28ms 2 [ 10.98ms, 284.67ms] 147.83ms 136.85ms 295.65ms
'rins/rens': 5 [ 5.83ms, 164.45ms] 39.09ms 62.74ms 195.47ms 3 [532.00ns, 27.21ms] 9.08ms 12.82ms 27.24ms
'rnd_cst_lns': 5 [ 5.24ms, 364.03ms] 88.53ms 138.16ms 442.65ms 5 [117.00ns, 100.02ms] 20.89ms 39.57ms 104.47ms
'rnd_var_lns': 5 [ 3.80ms, 350.83ms] 105.89ms 131.69ms 529.46ms 5 [ 10.00ns, 100.12ms] 26.01ms 38.47ms 130.07ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 365 13'322 26'162 38 1'518 14'735 433'786 888'795
'default_lp': 360 223 2'683 1 1'396 1'709 18'329 75'411
'fs_random': 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0
'lb_tree_search': 354 0 2'318 0 1'397 1'518 9'928 43'548
'max_lp': 354 51 2'336 1 1'367 1'523 10'970 49'774
'no_lp': 354 9'411 19'232 31 2'929 12'523 510'946 1'595'878
'objective_lb_search': 363 152 3'652 1 2'028 2'400 18'109 82'150
'probing': 375 10 949 0 793 803 5'753 19'583
'pseudo_costs': 354 208 5'301 2 2'785 3'245 26'943 127'193
'quick_restart': 373 44 5'172 3 2'708 3'151 21'269 98'318
'quick_restart_no_lp': 400 5'851 67'570 506 5'259 12'012 363'467 1'389'119
'reduced_costs': 356 138 4'513 2 2'090 2'400 17'023 83'402
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 16 0 365 349 134 81 5'421
'default_lp': 9 0 360 351 116 40 170
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 17 0 354 337 150 40 0
'max_lp': 16 0 354 338 148 41 45
'no_lp': 9 0 354 345 102 33 5'678
'objective_lb_search': 18 0 363 345 198 43 13
'probing': 9 0 375 366 588 40 6
'pseudo_costs': 9 0 354 345 104 40 170
'quick_restart': 16 0 373 357 346 40 26
'quick_restart_no_lp': 16 0 400 384 526 256 4'136
'reduced_costs': 9 0 356 347 108 40 125
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 10'940 117'464 24'147 707'532 168'076 4'150
'default_lp': 162 931 6'256 7'982 0 52
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 43 822 1'639 3'726 0 5
'no_lp': 7'423 62'319 27'329 373'753 0 3'547
'objective_lb_search': 143 3'816 728 2'695 0 62
'probing': 9 33 91 1'218 0 4
'pseudo_costs': 160 1'807 5'863 10'853 0 38
'quick_restart': 38 562 605 2'671 0 11
'quick_restart_no_lp': 4'061 33'894 63'450 247'401 0 1'276
'reduced_costs': 88 909 1'293 6'632 0 13
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 109 710 0 0 2 0 0
'default_lp': 81 613 0 0 0 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 81 613 0 0 0 0 0
'max_lp': 84 607 0 0 0 0 0
'no_lp': 382 2'922 0 19 228 214 1
'objective_lb_search': 161 1'209 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 241 1'847 0 0 0 0 0
'quick_restart': 268 1'911 0 0 0 10 0
'quick_restart_no_lp': 1'387 9'533 0 43 418 813 8
'reduced_costs': 161 1'229 0 0 0 0 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 142 21 0 3'911 197 0 239 0 0 11 0 0 3'349 34'588 13'322
'default_lp': 0 0 0 50 1 0 2 0 0 0 0 0 0 507 223
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 0 0 0 5 0 0 0 0 0 0 0 0 0 110 51
'no_lp': 5 0 0 3'478 76 9 69 19 0 42 0 0 0 21'475 9'411
'objective_lb_search': 63 0 0 56 0 5 6 0 0 0 0 0 0 239 152
'probing': 0 0 0 4 0 0 0 0 0 0 0 0 0 19 10
'pseudo_costs': 0 0 0 35 0 0 3 0 0 0 0 0 0 443 208
'quick_restart': 7 0 0 11 0 0 0 0 0 0 0 0 0 70 44
'quick_restart_no_lp': 35 0 2 1'186 57 7 90 43 8 19 0 0 0 11'184 5'851
'reduced_costs': 0 0 0 10 0 0 3 0 0 0 0 0 0 312 138
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 10'356 704 769 0 38
'lb_tree_search': 1 4'798 421 157 22 0
'max_lp': 1 4'648 469 282 9 5
'objective_lb_search': 1 8'501 838 592 1 3
'probing': 1 3'439 1'257 162 0 0
'pseudo_costs': 1 8'300 808 656 77 47
'quick_restart': 1 5'586 944 373 1 2
'reduced_costs': 1 7'877 847 396 69 29
Lp dimension Final dimension of first component
'default_lp': 379 rows, 669 columns, 2165 entries
'lb_tree_search': 1456 rows, 708 columns, 9319 entries
'max_lp': 767 rows, 708 columns, 9636 entries
'objective_lb_search': 573 rows, 669 columns, 4854 entries
'probing': 1066 rows, 669 columns, 16548 entries
'pseudo_costs': 538 rows, 708 columns, 3133 entries
'quick_restart': 737 rows, 669 columns, 9064 entries
'reduced_costs': 717 rows, 708 columns, 5964 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 804 0 744 0
'lb_tree_search': 0 0 179 0 4'677 0
'max_lp': 0 0 296 0 4'064 0
'objective_lb_search': 0 0 591 0 1'566 0
'probing': 0 0 154 0 7'307 0
'pseudo_costs': 0 0 776 0 1'226 0
'quick_restart': 0 0 370 0 3'575 0
'reduced_costs': 0 0 484 0 1'717 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 1'876 2 163 0 147 0 6 704/1'240
'lb_tree_search': 1'747 66 319 0 270 9 1 421/701
'max_lp': 1'795 80 606 0 538 5 2 469/836
'objective_lb_search': 2'010 8 445 0 397 0 28 838/1'446
'probing': 2'429 68 255 0 231 14 7 1'257/2'234
'pseudo_costs': 2'134 7 278 0 260 1 1 808/1'413
'quick_restart': 2'116 41 591 0 517 0 21 944/1'770
'reduced_costs': 2'173 28 294 0 272 2 1 847/1'440
Lp Cut default_lp max_lp quick_restart reduced_costs pseudo_costs lb_tree_search probing objective_lb_search
CG_FF: 15 5 11 11 13 6 15 15
CG_K: 17 4 4 7 14 5 8 11
CG_KL: 5 - - 3 5 - 4 2
CG_R: 11 13 13 18 24 6 15 11
CG_RB: 19 27 36 31 22 21 41 31
CG_RBP: 10 14 15 10 17 4 17 16
IB: 397 6 341 376 412 - 329 367
MIR_1_FF: 10 12 34 15 17 17 66 22
MIR_1_K: 7 4 14 2 5 1 10 9
MIR_1_KL: 3 2 6 - 2 1 7 3
MIR_1_R: - - - - 2 - 1 2
MIR_1_RB: 11 13 24 24 11 8 26 20
MIR_1_RBP: 2 2 8 3 4 1 14 8
MIR_2_FF: 19 27 32 17 26 35 55 39
MIR_2_K: 8 2 14 6 5 2 20 9
MIR_2_KL: 4 - 2 2 - 2 4 3
MIR_2_R: 2 2 2 - 1 1 3 1
MIR_2_RB: 14 15 34 33 14 21 35 26
MIR_2_RBP: 7 2 14 1 2 1 27 9
MIR_3_FF: 21 31 29 33 23 40 47 24
MIR_3_K: 8 10 22 10 10 9 29 10
MIR_3_KL: 3 4 5 2 5 3 7 1
MIR_3_R: 1 5 1 10 3 2 3 2
MIR_3_RB: 3 27 16 27 12 20 29 17
MIR_3_RBP: 5 9 16 7 4 4 20 6
MIR_4_FF: 12 21 21 15 18 29 31 11
MIR_4_K: 7 15 14 8 8 4 21 5
MIR_4_KL: - 5 9 5 3 4 12 2
MIR_4_R: - 2 - 3 1 - 2 2
MIR_4_RB: 8 16 9 15 9 18 24 9
MIR_4_RBP: 1 17 11 4 1 13 23 8
MIR_5_FF: 6 12 12 12 5 16 20 10
MIR_5_K: - 10 15 11 6 9 21 9
MIR_5_KL: 2 7 6 6 2 5 14 5
MIR_5_R: 1 - - 5 - 1 - -
MIR_5_RB: 7 7 3 11 4 8 6 3
MIR_5_RBP: 3 7 9 6 4 11 24 7
MIR_6_FF: 1 10 12 5 10 6 19 6
MIR_6_K: - 6 5 6 1 9 23 7
MIR_6_KL: 1 2 4 6 - 3 11 4
MIR_6_R: 1 2 2 1 1 - 4 1
MIR_6_RB: 4 14 6 12 2 8 12 6
MIR_6_RBP: 1 7 6 5 - 10 24 6
ZERO_HALF_FF: 11 5 19 12 15 5 12 14
ZERO_HALF_K: 1 - 4 3 7 1 5 2
ZERO_HALF_KL: - - 1 - - 2 - -
ZERO_HALF_R: 26 55 71 40 40 42 103 48
ZERO_HALF_RB: 8 11 11 5 9 4 8 5
ZERO_HALF_RBP: 1 2 1 3 9 3 6 4
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 2/2 50% 5.38e-01 0.10
'graph_cst_lns': 1/4 75% 8.21e-01 0.10
'graph_dec_lns': 0/0 0% 5.00e-01 0.10
'graph_var_lns': 0/4 75% 8.21e-01 0.10
'lb_relax_lns': 1/2 50% 5.38e-01 0.50
'rins/rens': 4/5 80% 8.80e-01 0.10
'rnd_cst_lns': 0/5 60% 7.48e-01 0.10
'rnd_var_lns': 0/5 60% 7.48e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart': 1 1 17'169 0 0 0 15'692 458'526
'ls_lin_restart_decay_perturb': 1 1 22'038 0 0 0 928 423'998
'ls_lin_restart_perturb': 1 1 16'283 0 0 0 6'728 562'005
'ls_restart_decay': 2 2 43'052 0 0 0 1'749 815'719
'ls_restart_perturb': 1 1 17'448 0 0 0 23'370 508'597
Solutions (6) Num Rank
'complete_hint': 2 [0,1]
'graph_arc_lns': 2 [4,5]
'graph_cst_lns': 2 [2,3]
'quick_restart_no_lp': 6 [1,6]
Objective bounds Num
'initial_domain': 1
'lb_tree_search': 22
'max_lp': 4
'quick_restart': 1
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 14 42 12
'fj solution hints': 0 0 0
'lp solutions': 20 5 13
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 4 0
'max_lp': 25 0
'probing': 4 0
'pseudo_costs': 2 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 4 6
'default_lp': 0 0 2 6
'lb_tree_search': 0 0 6 6
'max_lp': 0 0 3 6
'no_lp': 0 0 2 6
'objective_lb_search': 0 0 4 6
'probing': 5 0 6 6
'pseudo_costs': 0 0 3 6
'quick_restart': 0 0 4 6
'quick_restart_no_lp': 1 0 4 6
'reduced_costs': 0 0 3 6
LRAT_status: NA
[Scaling] scaled_objective_bound: 1693.66 corrected_bound: 1693.66 delta: 9.06745e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1693.655268710995
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00813
usertime: 1.00813
deterministic_time: 5.07389
gap_integral: 21.4106
solution_fingerprint: 0x40238ccd9cfcdeef
Example 2:
[19]:
model_options = ModelOptions(
topology='radial',
feeder_limit='unlimited',
feeder_route='segmented',
)
[20]:
milp_router = MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
model_options=model_options,
verbose=True
)
Now the solution by EWRouter is not a feasible warmstart.
[21]:
wfn.optimize(router=EWRouter())
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0x9ac6e6b079540f72)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.78e-04s 0.00e+00d [DetectDominanceRelations]
4.45e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.39e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=185
4.97e-05s 0.00e+00d [DetectDuplicateColumns]
7.10e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000221628 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.511e-06s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.5622e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.12e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.14e-03s 4.40e-03d [Probe] #probed=1'416 #new_binary_clauses=354
2.70e-04s 4.55e-04d [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
2.67e-04s 0.00e+00d [DetectDominanceRelations]
2.87e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.69e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
1.33e-04s 0.00e+00d [DetectDuplicateConstraints]
7.51e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.40e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.13e-05s 0.00e+00d [DetectDifferentVariables]
7.69e-04s 8.61e-05d [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
8.03e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.68e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.66e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.33e-04s 1.02e-04d [FindBigAtMostOneAndLinearOverlap]
8.47e-05s 1.08e-04d [FindBigVerticalLinearOverlap]
1.29e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.69e-06s 0.00e+00d [MergeClauses]
1.61e-04s 0.00e+00d [DetectDominanceRelations]
3.39e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.96e-04s 0.00e+00d [DetectDominanceRelations]
1.42e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
4.80e-05s 0.00e+00d [DetectDuplicateColumns]
7.58e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.00018887 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.481e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6203e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
1.07e-04s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
4.07e-03s 1.26e-03d [Probe] #probed=708
4.98e-04s 3.09e-04d [MaxClique]
5.08e-04s 0.00e+00d [DetectDominanceRelations]
1.75e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.05e-04s 0.00e+00d [ProcessAtMostOneAndLinear]
8.82e-05s 0.00e+00d [DetectDuplicateConstraints]
7.85e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.06e-04s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
1.17e-05s 0.00e+00d [DetectDifferentVariables]
9.45e-05s 4.19e-06d [ProcessSetPPC] #relevant_constraints=223
9.40e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.57e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.20e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.38e-04s 9.83e-05d [FindBigAtMostOneAndLinearOverlap]
1.48e-04s 1.08e-04d [FindBigVerticalLinearOverlap]
6.48e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
5.03e-05s 0.00e+00d [MergeClauses]
1.85e-04s 0.00e+00d [DetectDominanceRelations]
1.61e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.94e-06s 0.00e+00d [MergeNoOverlap]
3.01e-06s 0.00e+00d [MergeNoOverlap2D]
1.31e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 145 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1b7033387a045912)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000245565 dtime: 0.00044822
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model 0.04s var:708/708 constraints:1012/1012
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.05s best:1765.33376 next:[1396.24224,1765.33376] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#Bound 0.05s best:1765.33376 next:[1464.81361,1765.33376] default_lp
#Bound 0.06s best:1765.33376 next:[1471.69595,1765.33376] reduced_costs
#Bound 0.07s best:1765.33376 next:[1672.91324,1765.33376] max_lp
#Bound 0.12s best:1765.33376 next:[1688.52481,1765.33376] max_lp
#Bound 0.13s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Model 0.14s var:696/708 constraints:998/1012
#Bound 0.23s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound 0.30s best:1765.33376 next:[1697.93,1765.33376] lb_tree_search
#Model 0.35s var:676/708 constraints:977/1012
#Bound 0.50s best:1765.33376 next:[1704.77644,1765.33376] lb_tree_search
#Bound 0.51s best:1765.33376 next:[1704.77682,1765.33376] lb_tree_search
#Model 0.55s var:674/708 constraints:975/1012
#Bound 0.64s best:1765.33376 next:[1713.42595,1765.33376] lb_tree_search
#Model 0.70s var:646/708 constraints:946/1012
#Model 0.78s var:644/708 constraints:944/1012
#Model 0.84s var:642/708 constraints:942/1012
#Bound 0.88s best:1765.33376 next:[1716.83974,1765.33376] lb_tree_search
#Model 0.89s var:636/708 constraints:934/1012
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [959.50ms, 959.50ms] 959.50ms 0.00ns 959.50ms 2 [ 1.32ms, 364.67ms] 183.00ms 181.67ms 366.00ms
'default_lp': 1 [959.24ms, 959.24ms] 959.24ms 0.00ns 959.24ms 2 [ 22.88ms, 328.98ms] 175.93ms 153.05ms 351.86ms
'feasibility_pump': 5 [ 39.40us, 23.30ms] 5.83ms 8.82ms 29.16ms 3 [141.93us, 12.34ms] 4.21ms 5.75ms 12.64ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_quick_restart_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 3 [ 25.94ms, 369.48ms] 145.81ms 158.29ms 437.44ms 3 [ 1.26ms, 100.06ms] 34.85ms 46.12ms 104.54ms
'graph_cst_lns': 5 [ 10.93ms, 157.08ms] 52.84ms 53.38ms 264.18ms 5 [ 45.28us, 29.02ms] 7.23ms 11.01ms 36.17ms
'graph_dec_lns': 5 [ 2.99ms, 112.32ms] 34.97ms 40.12ms 174.85ms 5 [ 10.00ns, 14.56ms] 3.47ms 5.61ms 17.33ms
'graph_var_lns': 5 [ 6.76ms, 335.42ms] 93.85ms 122.37ms 469.24ms 5 [ 2.16us, 100.01ms] 23.11ms 38.61ms 115.55ms
'lb_relax_lns': 2 [114.37ms, 826.76ms] 470.57ms 356.20ms 941.13ms 2 [ 20.23ms, 233.41ms] 126.82ms 106.59ms 253.64ms
'lb_tree_search': 1 [962.89ms, 962.89ms] 962.89ms 0.00ns 962.89ms 2 [ 39.55ms, 118.73ms] 79.14ms 39.59ms 158.27ms
'ls': 2 [194.58ms, 218.23ms] 206.40ms 11.82ms 412.81ms 2 [100.00ms, 100.01ms] 100.00ms 757.50ns 200.01ms
'ls_lin': 3 [177.67ms, 192.04ms] 184.51ms 5.89ms 553.53ms 3 [100.01ms, 100.01ms] 100.01ms 576.21ns 300.02ms
'max_lp': 1 [958.90ms, 958.90ms] 958.90ms 0.00ns 958.90ms 2 [ 45.51ms, 335.18ms] 190.35ms 144.83ms 380.69ms
'no_lp': 1 [959.11ms, 959.11ms] 959.11ms 0.00ns 959.11ms 2 [ 1.57ms, 328.57ms] 165.07ms 163.50ms 330.14ms
'objective_lb_search': 1 [958.75ms, 958.75ms] 958.75ms 0.00ns 958.75ms 2 [ 21.20ms, 288.01ms] 154.60ms 133.41ms 309.21ms
'probing': 1 [962.86ms, 962.86ms] 962.86ms 0.00ns 962.86ms 2 [ 18.34ms, 203.38ms] 110.86ms 92.52ms 221.72ms
'pseudo_costs': 1 [958.17ms, 958.17ms] 958.17ms 0.00ns 958.17ms 2 [ 9.35ms, 235.77ms] 122.56ms 113.21ms 245.12ms
'quick_restart': 1 [963.36ms, 963.36ms] 963.36ms 0.00ns 963.36ms 2 [ 20.28ms, 274.74ms] 147.51ms 127.23ms 295.02ms
'quick_restart_no_lp': 1 [958.99ms, 958.99ms] 958.99ms 0.00ns 958.99ms 2 [ 1.57ms, 407.97ms] 204.77ms 203.20ms 409.54ms
'reduced_costs': 1 [958.83ms, 958.83ms] 958.83ms 0.00ns 958.83ms 2 [ 10.41ms, 289.51ms] 149.96ms 139.55ms 299.92ms
'rins/rens': 4 [ 2.90ms, 377.45ms] 179.24ms 169.91ms 716.96ms 3 [ 1.18ms, 100.07ms] 67.08ms 46.60ms 201.25ms
'rnd_cst_lns': 4 [ 4.59ms, 362.73ms] 102.74ms 150.43ms 410.96ms 4 [ 10.00ns, 100.03ms] 25.44ms 43.07ms 101.77ms
'rnd_var_lns': 5 [ 4.03ms, 220.25ms] 69.11ms 80.12ms 345.54ms 5 [ 10.00ns, 45.18ms] 12.36ms 17.38ms 61.81ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 366 10'964 34'030 25 1'631 12'378 507'130 1'124'062
'default_lp': 372 171 2'412 1 1'354 1'649 20'913 69'284
'fs_random': 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0
'lb_tree_search': 354 0 7'048 0 3'815 4'426 40'791 108'492
'max_lp': 354 75 2'163 1 1'296 1'511 15'377 52'049
'no_lp': 354 9'324 23'430 77 3'702 13'340 477'046 1'562'447
'objective_lb_search': 365 165 2'362 1 1'357 1'638 20'448 68'854
'probing': 375 11 867 0 793 804 8'563 22'092
'pseudo_costs': 354 243 2'475 1 1'402 1'730 24'773 87'999
'quick_restart': 360 59 7'883 4 3'956 4'650 47'794 167'986
'quick_restart_no_lp': 396 6'016 62'691 536 5'231 12'047 386'809 1'290'062
'reduced_costs': 355 210 4'745 2 1'946 2'410 27'174 100'142
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 36 0 366 330 294 98 3'729
'default_lp': 16 0 372 356 216 46 130
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 36 0 354 318 236 40 0
'max_lp': 32 0 354 322 234 40 60
'no_lp': 36 0 354 318 178 133 5'689
'objective_lb_search': 17 0 365 348 192 47 74
'probing': 19 0 375 356 448 40 11
'pseudo_costs': 6 0 354 348 104 40 202
'quick_restart': 36 1 360 323 258 59 31
'quick_restart_no_lp': 39 1 396 356 384 240 4'246
'reduced_costs': 31 0 355 324 230 46 171
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 7'737 93'719 20'213 677'377 210'564 2'975
'default_lp': 159 3'654 4'696 6'703 0 33
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 72 954 2'483 3'934 0 15
'no_lp': 7'575 93'304 43'970 449'844 0 2'180
'objective_lb_search': 155 4'015 2'071 4'153 0 51
'probing': 10 242 471 937 0 0
'pseudo_costs': 185 2'653 7'873 13'198 0 41
'quick_restart': 48 893 1'333 2'317 0 7
'quick_restart_no_lp': 4'277 31'336 70'983 261'729 0 1'141
'reduced_costs': 131 1'297 3'094 7'437 0 30
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 117 723 0 0 3 9 0
'default_lp': 81 598 0 0 0 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 401 2'912 0 0 0 0 0
'max_lp': 81 566 0 0 0 0 0
'no_lp': 633 4'578 0 24 296 329 1
'objective_lb_search': 84 658 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 81 619 0 0 0 0 0
'quick_restart': 514 3'565 0 1 17 63 0
'quick_restart_no_lp': 1'262 8'788 0 90 816 506 8
'reduced_costs': 165 1'174 0 2 8 12 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 21 0 2 2'789 312 0 186 0 0 231 0 0 3'418 25'365 10'964
'default_lp': 0 0 0 32 1 0 1 0 0 0 0 0 0 332 171
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 0 0 0 13 0 0 2 0 0 0 0 0 0 145 75
'no_lp': 786 221 0 2'091 101 37 89 24 0 189 0 0 0 21'412 9'324
'objective_lb_search': 30 0 0 49 0 3 2 0 0 0 0 0 0 319 165
'probing': 0 0 0 0 0 0 0 0 0 0 0 0 0 18 11
'pseudo_costs': 0 0 0 40 0 0 1 0 0 0 0 0 0 501 243
'quick_restart': 0 0 0 6 0 0 1 1 0 0 0 0 0 68 59
'quick_restart_no_lp': 191 1 4 1'067 79 3 74 90 4 10 0 0 0 12'393 6'016
'reduced_costs': 1 0 0 29 0 0 1 2 0 0 0 0 0 492 210
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 10'149 694 614 0 15
'lb_tree_search': 1 1'943 738 60 3 0
'max_lp': 1 5'429 436 262 11 8
'objective_lb_search': 1 9'297 695 642 1 5
'probing': 1 3'813 1'389 135 0 0
'pseudo_costs': 1 10'070 601 661 117 22
'quick_restart': 1 5'879 966 311 0 1
'reduced_costs': 1 10'613 636 509 104 54
Lp dimension Final dimension of first component
'default_lp': 537 rows, 669 columns, 3268 entries
'lb_tree_search': 1532 rows, 708 columns, 12484 entries
'max_lp': 1478 rows, 708 columns, 10243 entries
'objective_lb_search': 489 rows, 669 columns, 2925 entries
'probing': 1107 rows, 669 columns, 12319 entries
'pseudo_costs': 418 rows, 708 columns, 2233 entries
'quick_restart': 879 rows, 669 columns, 8459 entries
'reduced_costs': 617 rows, 708 columns, 3015 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 621 0 714 0
'lb_tree_search': 0 0 63 0 10'883 0
'max_lp': 0 0 281 0 4'905 0
'objective_lb_search': 0 0 644 0 787 0
'probing': 0 0 131 0 7'625 0
'pseudo_costs': 0 0 792 0 310 0
'quick_restart': 0 0 309 0 4'226 0
'reduced_costs': 0 0 662 0 946 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 1'906 5 333 0 310 2 11 694/1'252
'lb_tree_search': 2'104 177 1'407 0 1'199 16 12 738/1'317
'max_lp': 1'802 24 781 0 642 8 10 436/729
'objective_lb_search': 1'907 3 333 0 315 0 9 695/1'179
'probing': 2'601 90 1'140 0 783 29 68 1'389/2'468
'pseudo_costs': 1'967 0 50 0 50 0 0 601/965
'quick_restart': 2'178 43 1'226 0 986 7 35 966/1'745
'reduced_costs': 2'002 0 451 0 383 0 9 636/1'127
Lp Cut default_lp max_lp reduced_costs pseudo_costs objective_lb_search quick_restart lb_tree_search probing
CG_FF: 10 6 1 6 9 14 9 22
CG_K: 5 4 2 - 5 4 6 10
CG_KL: 5 6 - - 3 2 5 5
CG_R: 12 10 7 7 8 18 12 43
CG_RB: 18 23 13 9 18 34 35 62
CG_RBP: 11 9 3 - 8 23 8 34
Clique: - 2 3 - - - 8 -
IB: 394 2 445 484 383 379 4 359
MIR_1_FF: 22 16 5 5 12 33 29 84
MIR_1_K: 11 3 1 2 6 7 1 21
MIR_1_KL: 3 2 1 - 5 11 1 18
MIR_1_R: - - - - - - 1 1
MIR_1_RB: 6 4 3 4 9 9 9 26
MIR_1_RBP: 4 2 1 3 6 9 2 22
MIR_2_FF: 18 29 8 7 27 51 63 71
MIR_2_K: 7 4 3 - 8 24 1 29
MIR_2_KL: - 1 - - 1 2 5 6
MIR_2_R: 2 3 - 1 2 5 2 2
MIR_2_RB: 9 22 14 9 12 26 31 45
MIR_2_RBP: 7 2 3 1 10 12 11 24
MIR_3_FF: 8 27 6 11 12 28 45 58
MIR_3_K: 9 5 - 2 9 16 5 17
MIR_3_KL: 1 3 1 - 2 - 1 2
MIR_3_R: 1 1 2 - - - - 2
MIR_3_RB: 13 18 8 5 13 17 28 34
MIR_3_RBP: 3 5 4 3 3 11 12 18
MIR_4_FF: 8 30 6 4 6 24 47 27
MIR_4_K: 14 3 3 1 3 8 11 17
MIR_4_KL: - 8 2 2 1 2 18 8
MIR_4_R: - 3 1 1 1 1 1 1
MIR_4_RB: 8 17 8 2 4 9 18 14
MIR_4_RBP: 2 7 3 - 1 11 16 14
MIR_5_FF: 5 15 5 1 11 9 28 18
MIR_5_K: 5 16 4 2 10 13 22 23
MIR_5_KL: 2 8 3 - 2 7 11 10
MIR_5_R: - - 2 2 1 - 1 4
MIR_5_RB: 8 17 6 2 7 6 19 14
MIR_5_RBP: 5 9 2 2 4 10 9 10
MIR_6_FF: 2 9 3 3 7 13 23 20
MIR_6_K: 3 9 2 1 4 8 18 18
MIR_6_KL: 1 3 - 1 1 2 14 9
MIR_6_R: - 1 1 - - 1 2 1
MIR_6_RB: 2 7 7 2 5 7 11 3
MIR_6_RBP: 2 7 1 - 2 8 13 9
ZERO_HALF_FF: 7 6 8 2 11 12 13 14
ZERO_HALF_K: 2 - 1 2 1 5 1 -
ZERO_HALF_KL: - - - - - 1 2 -
ZERO_HALF_R: 32 46 31 7 32 60 88 119
ZERO_HALF_RB: 1 5 3 5 3 9 12 15
ZERO_HALF_RBP: 6 1 - - 7 5 6 6
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 0/3 67% 7.21e-01 0.10
'graph_cst_lns': 0/5 80% 8.80e-01 0.10
'graph_dec_lns': 0/5 80% 8.80e-01 0.10
'graph_var_lns': 0/5 80% 8.73e-01 0.10
'lb_relax_lns': 0/2 50% 5.38e-01 0.50
'rins/rens': 1/4 50% 5.97e-01 0.10
'rnd_cst_lns': 0/4 75% 8.21e-01 0.10
'rnd_var_lns': 0/5 80% 8.80e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart': 2 2 33'683 0 0 0 26'176 807'725
'ls_lin_restart_perturb': 1 1 16'719 0 0 0 22'408 475'427
'ls_restart_decay': 1 1 20'803 0 0 0 761 395'626
'ls_restart_decay_compound_perturb': 1 1 0 21'651 3'724 8'960 48 515'399
Solutions (1) Num Rank
'complete_hint': 2 [0,1]
Objective bounds Num
'am1_presolve': 1
'default_lp': 1
'initial_domain': 1
'lb_tree_search': 6
'max_lp': 3
'reduced_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 0 0 0
'best_solutions': 2 41 2
'fj solution hints': 0 0 0
'lp solutions': 18 4 10
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 52 0
'max_lp': 18 0
'probing': 2 0
'quick_restart': 4 0
'quick_restart_no_lp': 3 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 18 86
'default_lp': 0 0 14 86
'lb_tree_search': 0 0 18 86
'max_lp': 0 0 17 86
'no_lp': 1 0 18 86
'objective_lb_search': 0 0 15 86
'probing': 79 0 9 86
'pseudo_costs': 0 0 9 86
'quick_restart': 3 0 18 86
'quick_restart_no_lp': 3 0 18 86
'reduced_costs': 0 0 17 86
LRAT_status: NA
[Scaling] scaled_objective_bound: 1716.84 corrected_bound: 1716.84 delta: 1.56927e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1716.839733456794
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00769
usertime: 1.00769
deterministic_time: 4.77917
gap_integral: 18.9574
solution_fingerprint: 0x7cfd54e085bf6326
But the solution by HGSRouter can warmstart the MILPRouter.
[22]:
wfn.optimize(router=HGSRouter(time_limit=1))
terse = wfn.optimize(router=milp_router)
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1133 rows, 708 columns, 4276 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0x9ac6e6b079540f72)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 2
#kLinearN: 266 (#terms: 2'540)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.81e-04s 0.00e+00d [DetectDominanceRelations]
3.75e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.39e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=185
5.92e-05s 0.00e+00d [DetectDuplicateColumns]
6.71e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'706 nodes and 5'298 arcs.
[Symmetry] Symmetry computation done. time: 0.000306224 dtime: 0.00049148
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.037e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.7796e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
8.27e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.47e-03s 4.40e-03d [Probe] #probed=1'416 #new_binary_clauses=354
2.72e-04s 4.55e-04d [MaxClique] Merged 302 constraints with 1'090 literals into 182 constraints with 850 literals
1.85e-04s 0.00e+00d [DetectDominanceRelations]
1.66e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
7.40e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
8.91e-05s 0.00e+00d [DetectDuplicateConstraints]
7.24e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.39e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.28e-05s 0.00e+00d [DetectDifferentVariables]
1.32e-03s 8.61e-05d [ProcessSetPPC] #relevant_constraints=224 #num_inclusions=222
1.02e-04s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
3.08e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.75e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
1.49e-04s 1.02e-04d [FindBigAtMostOneAndLinearOverlap]
9.04e-05s 1.08e-04d [FindBigVerticalLinearOverlap]
1.46e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.11e-05s 0.00e+00d [MergeClauses]
5.06e-04s 0.00e+00d [DetectDominanceRelations]
2.91e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.63e-04s 0.00e+00d [DetectDominanceRelations]
1.98e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.36e-04s 0.00e+00d [DetectDuplicateColumns]
3.54e-04s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000199714 dtime: 0.00044764
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.032e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.4984e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
2.15e-04s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.77e-03s 1.26e-03d [Probe] #probed=708
2.39e-04s 3.09e-04d [MaxClique]
4.28e-04s 0.00e+00d [DetectDominanceRelations]
1.52e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.85e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
8.14e-05s 0.00e+00d [DetectDuplicateConstraints]
6.80e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
8.94e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
9.49e-06s 0.00e+00d [DetectDifferentVariables]
8.35e-05s 4.19e-06d [ProcessSetPPC] #relevant_constraints=223
6.98e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=182
2.34e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.33e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
3.78e-04s 9.83e-05d [FindBigAtMostOneAndLinearOverlap]
2.35e-04s 1.08e-04d [FindBigVerticalLinearOverlap]
1.55e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.64e-05s 0.00e+00d [MergeClauses]
4.76e-04s 0.00e+00d [DetectDominanceRelations]
1.83e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.01e-06s 0.00e+00d [MergeNoOverlap]
3.29e-06s 0.00e+00d [MergeNoOverlap2D]
1.58e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 145 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0x1b7033387a045912)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 145 (#literals: 776)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'452 nodes and 4'451 arcs.
[Symmetry] Symmetry computation done. time: 0.000522599 dtime: 0.00044822
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model 0.04s var:708/708 constraints:1012/1012
Starting search at 0.04s with 16 workers.
11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
5 first solution subsolvers: [fj(2), fs_random, fs_random_no_lp, fs_random_quick_restart_no_lp]
11 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, lb_relax_lns, ls, ls_lin, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.05s best:1765.33376 next:[1396.24224,1765.33376] am1_presolve (num_literals=314 num_am1=12 increase=16903530 work_done=1733)
#Bound 0.05s best:1765.33376 next:[1464.81361,1765.33376] default_lp
#Bound 0.06s best:1765.33376 next:[1471.69595,1765.33376] pseudo_costs
#Bound 0.06s best:1765.33376 next:[1672.91324,1765.33376] max_lp
#Bound 0.11s best:1765.33376 next:[1688.52481,1765.33376] max_lp
#Model 0.12s var:696/708 constraints:998/1012
#Bound 0.12s best:1765.33376 next:[1690.90649,1765.33376] lb_tree_search
#Bound 0.21s best:1765.33376 next:[1691.19789,1765.33376] max_lp
#Bound 0.29s best:1765.33376 next:[1697.93,1765.33376] lb_tree_search
#Model 0.38s var:676/708 constraints:977/1012
#Bound 0.49s best:1765.33376 next:[1704.77644,1765.33376] lb_tree_search
#Bound 0.50s best:1765.33376 next:[1704.77682,1765.33376] lb_tree_search
#Model 0.55s var:674/708 constraints:975/1012
#Bound 0.63s best:1765.33376 next:[1709.61625,1765.33376] lb_tree_search
#Model 0.68s var:660/708 constraints:960/1012
#Model 0.78s var:656/708 constraints:956/1012
#Model 0.88s var:652/708 constraints:952/1012
#Bound 0.89s best:1765.33376 next:[1717.44876,1765.33376] lb_tree_search
#Model 0.94s var:640/708 constraints:939/1012
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [962.22ms, 962.22ms] 962.22ms 0.00ns 962.22ms 2 [ 1.32ms, 392.77ms] 197.05ms 195.72ms 394.09ms
'default_lp': 1 [962.18ms, 962.18ms] 962.18ms 0.00ns 962.18ms 2 [ 22.88ms, 322.75ms] 172.82ms 149.94ms 345.63ms
'feasibility_pump': 5 [ 39.11us, 28.39ms] 6.94ms 10.78ms 34.72ms 3 [141.93us, 12.34ms] 4.21ms 5.75ms 12.64ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_quick_restart_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 3 [ 27.84ms, 396.63ms] 153.08ms 172.24ms 459.25ms 3 [ 1.26ms, 100.08ms] 34.85ms 46.13ms 104.56ms
'graph_cst_lns': 5 [ 10.98ms, 188.04ms] 86.64ms 78.72ms 433.19ms 5 [ 45.28us, 45.86ms] 17.72ms 20.29ms 88.60ms
'graph_dec_lns': 5 [ 2.60ms, 123.27ms] 40.27ms 43.29ms 201.37ms 5 [ 10.00ns, 22.31ms] 5.19ms 8.60ms 25.97ms
'graph_var_lns': 5 [ 6.69ms, 325.41ms] 93.64ms 117.28ms 468.19ms 5 [ 2.16us, 100.01ms] 22.88ms 38.69ms 114.42ms
'lb_relax_lns': 2 [118.73ms, 823.87ms] 471.30ms 352.57ms 942.60ms 2 [ 20.23ms, 234.71ms] 127.47ms 107.24ms 254.94ms
'lb_tree_search': 1 [961.88ms, 961.88ms] 961.88ms 0.00ns 961.88ms 2 [ 39.55ms, 116.14ms] 77.84ms 38.30ms 155.69ms
'ls': 2 [225.43ms, 226.48ms] 225.96ms 523.88us 451.92ms 2 [100.00ms, 100.01ms] 100.00ms 1.01us 200.01ms
'ls_lin': 3 [174.70ms, 192.93ms] 185.95ms 8.03ms 557.84ms 3 [100.00ms, 100.01ms] 100.01ms 1.12us 300.02ms
'max_lp': 1 [960.02ms, 960.02ms] 960.02ms 0.00ns 960.02ms 2 [ 45.51ms, 345.53ms] 195.52ms 150.01ms 391.04ms
'no_lp': 1 [962.34ms, 962.34ms] 962.34ms 0.00ns 962.34ms 2 [ 1.57ms, 325.56ms] 163.56ms 161.99ms 327.13ms
'objective_lb_search': 1 [961.54ms, 961.54ms] 961.54ms 0.00ns 961.54ms 2 [ 21.20ms, 307.95ms] 164.57ms 143.37ms 329.15ms
'probing': 1 [961.77ms, 961.77ms] 961.77ms 0.00ns 961.77ms 2 [ 18.34ms, 203.38ms] 110.86ms 92.52ms 221.72ms
'pseudo_costs': 1 [961.36ms, 961.36ms] 961.36ms 0.00ns 961.36ms 2 [ 9.35ms, 259.12ms] 134.24ms 124.88ms 268.47ms
'quick_restart': 1 [961.77ms, 961.77ms] 961.77ms 0.00ns 961.77ms 2 [ 20.28ms, 273.07ms] 146.67ms 126.40ms 293.34ms
'quick_restart_no_lp': 1 [961.60ms, 961.60ms] 961.60ms 0.00ns 961.60ms 2 [ 1.57ms, 413.31ms] 207.44ms 205.87ms 414.88ms
'reduced_costs': 1 [961.70ms, 961.70ms] 961.70ms 0.00ns 961.70ms 2 [ 10.41ms, 282.35ms] 146.38ms 135.97ms 292.75ms
'rins/rens': 4 [ 4.58ms, 365.83ms] 109.28ms 149.09ms 437.12ms 3 [997.20us, 100.01ms] 35.49ms 45.66ms 106.46ms
'rnd_cst_lns': 5 [ 4.25ms, 320.38ms] 80.13ms 120.61ms 400.66ms 5 [ 10.00ns, 85.31ms] 17.91ms 33.71ms 89.55ms
'rnd_var_lns': 5 [ 4.01ms, 259.71ms] 78.62ms 95.76ms 393.10ms 5 [ 10.00ns, 71.22ms] 17.51ms 27.47ms 87.57ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 366 13'367 34'400 50 1'593 14'810 465'499 978'438
'default_lp': 370 156 2'385 1 1'355 1'635 20'006 67'044
'fs_random': 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0
'lb_tree_search': 354 0 8'328 0 4'461 5'186 48'022 135'224
'max_lp': 354 74 2'186 1 1'318 1'522 15'813 53'351
'no_lp': 354 9'699 23'439 67 3'700 13'692 494'718 1'587'729
'objective_lb_search': 367 181 2'368 1 1'358 1'655 20'767 69'816
'probing': 375 11 867 0 793 804 8'563 22'092
'pseudo_costs': 354 244 2'479 1 1'398 1'727 24'867 88'805
'quick_restart': 360 59 7'611 4 3'971 4'646 47'278 165'567
'quick_restart_no_lp': 405 5'954 61'336 523 5'612 12'446 422'892 1'383'285
'reduced_costs': 354 182 5'880 3 2'575 3'123 31'854 118'327
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 34 0 366 332 302 322 5'880
'default_lp': 16 0 370 354 208 45 113
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 34 0 354 320 244 40 0
'max_lp': 26 0 354 328 206 40 58
'no_lp': 28 0 354 326 176 123 5'442
'objective_lb_search': 17 0 367 350 198 47 93
'probing': 19 0 375 356 448 40 11
'pseudo_costs': 8 0 354 346 114 41 205
'quick_restart': 34 1 360 325 262 52 36
'quick_restart_no_lp': 35 1 405 369 368 275 4'197
'reduced_costs': 34 0 354 320 244 47 145
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 10'690 152'022 41'503 836'154 243'132 3'279
'default_lp': 143 3'208 4'684 6'751 0 37
'fs_random': 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0
'max_lp': 69 919 2'540 3'696 0 16
'no_lp': 8'017 97'624 32'577 464'922 0 2'771
'objective_lb_search': 169 4'553 2'473 4'430 0 49
'probing': 10 242 471 937 0 0
'pseudo_costs': 180 2'290 6'799 11'608 0 37
'quick_restart': 48 962 1'228 2'247 0 10
'quick_restart_no_lp': 4'194 31'333 75'454 247'758 0 1'085
'reduced_costs': 135 1'667 2'318 8'902 0 26
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 117 723 0 0 3 9 0
'default_lp': 81 598 0 0 0 0 0
'fs_random': 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0
'lb_tree_search': 481 3'512 0 0 0 0 0
'max_lp': 81 578 0 0 0 0 0
'no_lp': 664 4'795 0 26 315 384 1
'objective_lb_search': 84 658 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 81 614 0 0 0 0 0
'quick_restart': 492 3'268 0 0 2 51 0
'quick_restart_no_lp': 1'720 11'811 0 133 1'239 799 15
'reduced_costs': 249 1'804 0 1 3 16 0
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 63 0 2 3'105 246 0 174 0 0 2 0 0 3'624 31'998 13'367
'default_lp': 0 0 0 37 0 0 0 0 0 0 0 0 0 314 156
'fs_random': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'fs_random_quick_restart_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'lb_tree_search': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'max_lp': 0 0 0 14 0 0 2 0 0 0 0 0 0 143 74
'no_lp': 786 221 0 2'668 118 53 103 26 0 192 0 0 0 22'569 9'699
'objective_lb_search': 30 0 0 48 0 2 1 0 0 0 0 0 0 353 181
'probing': 0 0 0 0 0 0 0 0 0 0 0 0 0 18 11
'pseudo_costs': 1 0 0 32 0 0 5 0 0 0 0 0 0 498 244
'quick_restart': 0 0 0 10 0 0 0 0 0 0 0 0 0 80 59
'quick_restart_no_lp': 133 3 4 1'021 65 5 64 133 11 24 0 0 0 11'704 5'954
'reduced_costs': 2 0 0 19 1 0 7 1 0 0 0 0 0 456 182
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 10'019 681 564 0 17
'lb_tree_search': 1 1'881 741 59 3 0
'max_lp': 1 5'482 436 261 13 7
'objective_lb_search': 1 9'898 700 663 1 4
'probing': 1 3'813 1'389 135 0 0
'pseudo_costs': 1 10'869 625 678 137 19
'quick_restart': 1 5'836 990 305 0 1
'reduced_costs': 1 9'294 770 416 87 39
Lp dimension Final dimension of first component
'default_lp': 516 rows, 669 columns, 3230 entries
'lb_tree_search': 1539 rows, 708 columns, 12781 entries
'max_lp': 1498 rows, 708 columns, 10513 entries
'objective_lb_search': 487 rows, 669 columns, 2869 entries
'probing': 1107 rows, 669 columns, 12319 entries
'pseudo_costs': 480 rows, 708 columns, 2364 entries
'quick_restart': 870 rows, 669 columns, 8822 entries
'reduced_costs': 647 rows, 708 columns, 5090 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 574 0 714 0
'lb_tree_search': 0 0 62 0 11'263 0
'max_lp': 0 0 281 0 4'905 0
'objective_lb_search': 0 0 664 0 787 0
'probing': 0 0 131 0 7'591 0
'pseudo_costs': 0 0 825 0 310 0
'quick_restart': 0 0 303 0 4'211 0
'reduced_costs': 0 0 538 0 1'662 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 1'893 5 340 0 310 2 19 681/1'218
'lb_tree_search': 2'107 171 1'311 0 1'120 21 11 741/1'330
'max_lp': 1'802 24 696 0 559 8 8 436/729
'objective_lb_search': 1'912 3 338 0 315 0 14 700/1'186
'probing': 2'601 90 1'140 0 783 29 68 1'389/2'468
'pseudo_costs': 1'991 0 64 0 64 0 0 625/1'001
'quick_restart': 2'202 44 1'114 0 903 7 27 990/1'760
'reduced_costs': 2'136 8 768 0 585 0 11 770/1'314
Lp Cut max_lp default_lp quick_restart reduced_costs pseudo_costs lb_tree_search probing objective_lb_search
CG_FF: 6 10 15 4 6 9 22 9
CG_K: 4 5 10 4 - 6 10 5
CG_KL: 6 5 2 2 - 5 5 3
CG_R: 10 12 18 11 7 11 43 8
CG_RB: 23 18 35 26 9 38 62 18
CG_RBP: 9 11 30 7 - 5 34 8
Clique: 2 - - 3 - 8 - -
IB: 2 381 372 430 508 4 359 388
MIR_1_FF: 16 22 32 12 5 30 84 12
MIR_1_K: 3 11 7 3 2 1 21 6
MIR_1_KL: 2 3 11 3 - 1 18 5
MIR_1_R: - - - - - 1 1 -
MIR_1_RB: 4 6 12 9 4 11 26 9
MIR_1_RBP: 2 4 10 1 3 4 22 6
MIR_2_FF: 29 18 59 27 7 44 71 27
MIR_2_K: 4 7 23 3 - 2 29 8
MIR_2_KL: 1 - 2 2 - 5 6 1
MIR_2_R: 3 2 4 4 1 2 2 2
MIR_2_RB: 22 9 24 16 9 32 45 12
MIR_2_RBP: 2 7 19 4 1 3 24 10
MIR_3_FF: 27 8 37 22 11 54 58 12
MIR_3_K: 5 9 16 2 2 6 17 9
MIR_3_KL: 3 1 2 1 - 3 2 2
MIR_3_R: 1 1 - 3 - 1 2 -
MIR_3_RB: 18 13 21 10 5 38 34 13
MIR_3_RBP: 5 3 13 1 3 11 18 3
MIR_4_FF: 30 8 21 10 4 39 27 6
MIR_4_K: 3 14 4 9 1 12 17 3
MIR_4_KL: 8 - 2 3 2 16 8 1
MIR_4_R: 3 - 1 2 1 2 1 1
MIR_4_RB: 17 8 10 11 2 19 14 4
MIR_4_RBP: 7 2 9 3 - 11 14 1
MIR_5_FF: 15 5 10 3 1 28 18 11
MIR_5_K: 16 5 12 11 2 21 23 10
MIR_5_KL: 8 2 6 6 - 17 10 2
MIR_5_R: - - 1 - 2 5 4 1
MIR_5_RB: 17 8 6 6 2 20 14 7
MIR_5_RBP: 9 5 11 4 2 10 10 4
MIR_6_FF: 9 2 13 3 3 21 20 7
MIR_6_K: 9 3 7 7 1 21 18 4
MIR_6_KL: 3 1 1 7 1 14 9 1
MIR_6_R: 1 - - 1 - 2 1 -
MIR_6_RB: 7 2 5 3 2 16 3 5
MIR_6_RBP: 7 2 8 2 - 12 9 2
ZERO_HALF_FF: 6 7 11 12 2 8 14 11
ZERO_HALF_K: - 2 5 3 2 1 - 1
ZERO_HALF_KL: - - 1 - - 2 - -
ZERO_HALF_R: 46 32 56 45 7 85 119 32
ZERO_HALF_RB: 5 1 9 7 5 18 15 3
ZERO_HALF_RBP: 1 6 7 2 - 6 6 7
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 0/3 67% 7.21e-01 0.10
'graph_cst_lns': 0/5 80% 8.80e-01 0.10
'graph_dec_lns': 0/5 80% 8.80e-01 0.10
'graph_var_lns': 0/5 60% 7.48e-01 0.10
'lb_relax_lns': 0/2 50% 5.38e-01 0.50
'rins/rens': 1/4 75% 8.08e-01 0.10
'rnd_cst_lns': 0/5 80% 8.80e-01 0.10
'rnd_var_lns': 0/5 100% 9.39e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart': 2 2 33'684 0 0 0 26'176 807'638
'ls_lin_restart_perturb': 1 1 16'719 0 0 0 22'408 475'427
'ls_restart_decay': 1 1 20'803 0 0 0 761 395'626
'ls_restart_decay_compound_perturb': 1 1 0 21'779 3'834 8'971 41 516'917
Solutions (1) Num Rank
'complete_hint': 2 [0,1]
Objective bounds Num
'am1_presolve': 1
'default_lp': 1
'initial_domain': 1
'lb_tree_search': 6
'max_lp': 3
'pseudo_costs': 1
Solution repositories Added Queried Synchro
'alternative_path': 0 0 0
'best_solutions': 2 42 2
'fj solution hints': 0 0 0
'lp solutions': 17 4 11
'pump': 0 0
Improving bounds shared Num Sym
'lb_tree_search': 41 0
'max_lp': 21 0
'probing': 4 0
'quick_restart': 4 0
'quick_restart_no_lp': 2 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 17 85
'default_lp': 0 0 14 85
'lb_tree_search': 0 0 17 85
'max_lp': 0 0 17 85
'no_lp': 2 0 17 85
'objective_lb_search': 0 0 14 85
'probing': 79 0 9 85
'pseudo_costs': 0 0 9 85
'quick_restart': 3 0 17 85
'quick_restart_no_lp': 1 0 17 85
'reduced_costs': 0 0 17 85
LRAT_status: NA
[Scaling] scaled_objective_bound: 1717.45 corrected_bound: 1717.45 delta: 1.5622e-06
CpSolverResponse summary:
status: FEASIBLE
objective: 1765.333758348772
best_bound: 1717.448755604366
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00795
usertime: 1.00795
deterministic_time: 4.82558
gap_integral: 19.1036
solution_fingerprint: 0x7cfd54e085bf6326
🧮 What is SolverOptions?¶
SolverOptions refers to solver-specific configuration parameters that affect how the solver works internally (once the model is already built).
These settings are typically passed directly to a solver like CPLEX, Gurobi, CBC, etc., and influence:
* Search strategy
* Runtime limits
* Optimality tolerances
* Logging and precision settings
✅ Common SolverOptions for MILPRouter:¶
Parameter |
Description |
|---|---|
|
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)
[23]:
milp_router_ortools = MILPRouter(solver_name='ortools.cp_sat', time_limit=15, mip_gap=0.01)
milp_router_ortools.optiwindnet_default_options
[23]:
{}
[24]:
milp_router_cplex = MILPRouter(solver_name='cplex', time_limit=15, mip_gap=0.01)
milp_router_cplex.optiwindnet_default_options
[24]:
{'parallel': -1, 'emphasis_mip': 4}
[25]:
milp_router_cbc = MILPRouter(solver_name='cbc', time_limit=15, mip_gap=0.01)
milp_router_cbc.optiwindnet_default_options
[25]:
{'threads': 8,
'timeMode': 'elapsed',
'nodeStrategy': 'downFewest',
'Dins': 'on',
'VndVariableNeighborhoodSearch': 'on',
'Rens': 'on',
'Rins': 'on',
'pivotAndComplement': 'off',
'proximitySearch': 'off',
'gomoryCuts': 'on',
'mixedIntegerRoundingCuts': 'on',
'flowCoverCuts': 'on',
'cliqueCuts': 'off',
'twoMirCuts': 'off',
'knapsackCuts': 'off',
'probingCuts': 'off',
'zeroHalfCuts': 'off',
'liftAndProjectCuts': 'off',
'residualCapacityCuts': 'off'}
[26]:
milp_router_gurobi = MILPRouter(solver_name='gurobi', time_limit=15, mip_gap=0.01)
milp_router_gurobi.optiwindnet_default_options
[26]:
{'mipfocus': 1}
[27]:
milp_router_highs = MILPRouter(solver_name='highs', time_limit=15, mip_gap=0.01)
milp_router_highs.optiwindnet_default_options
[27]:
{'parallel': 'on'}
[28]:
milp_router_scip = MILPRouter(solver_name='scip', time_limit=15, mip_gap=0.01)
milp_router_scip.optiwindnet_default_options
[28]:
{'parallel/maxnthreads': 8,
'concurrent/scip-feas/prefprio': 0.6,
'concurrent/scip/prefprio': 0.3,
'concurrent/scip-cpsolver/prefprio': 0,
'concurrent/scip-easycip/prefprio': 0,
'concurrent/scip-opti/prefprio': 0}
This attribute only reflects the options explicitly modified by OptiWindNet during initialization. solvers in MILPRouter typically support a much larger set of configurable options, which we can also adjust separately. For a complete list of available options for each MILP solver, please refer to the corresponding solver’s official documentation or user manual. For example, in the case of the CBC solver, we can refer to its full list of options here: http://www.decom.ufop.br/haroldo/files/cbcCommandLine.pdf
Note: Modifying any of the options originally set by OptiWindNet will not change the values stored in
optiwindnet_default_options. However, the updated values will be used when solving the optimization problem.
Solver options (including those set by OptiWindNet as well as additional configurable parameters) can be modified by creating a dictionary and passing it to the router. The same approach applies to model options.
[29]:
solver_options=dict(
num_workers = 5,
)
wfn.optimize(router=MILPRouter(
solver_name='ortools.cp_sat',
time_limit=1,
mip_gap=0.01,
solver_options=solver_options,
verbose=True,
))
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
BoundPropagationPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ImpliedIntegerPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
IntegerBoundsPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 1093 rows, 708 columns, 3962 entries with magnitude in [1.000000e+00, 5.000000e+00]
Scaling to pure integer problem.
Num integers: 708/708 (implied: 0 in_inequalities: 0 max_scaling: 0) [IP]
Maximum constraint coefficient relative error: 0
Maximum constraint worst-case activity error: 0
Constraint scaling factor range: [1, 1]
Starting CP-SAT solver v9.15.6755
Parameters: max_time_in_seconds: 1 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.01 num_workers: 5
Initial optimization model 'optiwindnet': (model_fingerprint: 0x797dc3582745efd1)
#Variables: 708 (#bools: 314 in floating point objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kLinear2: 865
#kLinear3: 1
#kLinearN: 227 (#terms: 2'229)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 314 terms with magnitude in [0.140862, 190.901] average = 35.1267
[Scaling] Objective coefficient relative error: 4.44741e-06
[Scaling] Objective worst-case absolute error: 8.26922e-05
[Scaling] Objective scaling factor: 524288
1.98e-04s 0.00e+00d [DetectDominanceRelations]
6.91e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
2.74e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=145
9.35e-05s 0.00e+00d [DetectDuplicateColumns]
8.53e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'666 nodes and 4'984 arcs.
[Symmetry] Symmetry computation done. time: 0.000309602 dtime: 0.00047967
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.6485e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
[SAT presolve] [2.3042e-05s] clauses:157 literals:314 vars:314 one_side_vars:314 simple_definition:0 singleton_clauses:0
7.65e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
7.20e-03s 3.89e-03d [Probe] #probed=1'416 #new_binary_clauses=354
5.29e-04s 2.15e-04d [MaxClique] Merged 262 constraints with 776 literals into 142 constraints with 536 literals
1.91e-04s 0.00e+00d [DetectDominanceRelations]
2.23e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
6.47e-04s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=354
8.26e-05s 0.00e+00d [DetectDuplicateConstraints]
6.94e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.37e-04s 6.08e-06d [DetectDominatedLinearConstraints] #relevant_constraints=83 #num_inclusions=41
1.34e-05s 0.00e+00d [DetectDifferentVariables]
7.40e-04s 7.01e-05d [ProcessSetPPC] #relevant_constraints=184 #num_inclusions=182
7.87e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.79e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.35e-05s 1.65e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=3
2.28e-04s 9.42e-05d [FindBigAtMostOneAndLinearOverlap]
1.73e-04s 1.07e-04d [FindBigVerticalLinearOverlap]
1.30e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
9.81e-06s 0.00e+00d [MergeClauses]
1.48e-04s 0.00e+00d [DetectDominanceRelations]
2.80e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.51e-04s 0.00e+00d [DetectDominanceRelations]
1.15e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.66e-05s 0.00e+00d [DetectDuplicateColumns]
7.02e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.00020166 dtime: 0.00043586
[SAT presolve] num removable Booleans: 0 / 354
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [5.875e-06s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
[SAT presolve] [1.7264e-05s] clauses:37 literals:74 vars:74 one_side_vars:74 simple_definition:0 singleton_clauses:0
8.26e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
3.37e-03s 1.27e-03d [Probe] #probed=708
1.62e-04s 1.45e-04d [MaxClique]
2.78e-04s 0.00e+00d [DetectDominanceRelations]
2.09e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.16e-04s 0.00e+00d [ProcessAtMostOneAndLinear]
6.71e-05s 0.00e+00d [DetectDuplicateConstraints]
5.62e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
9.29e-05s 4.59e-06d [DetectDominatedLinearConstraints] #relevant_constraints=82 #num_inclusions=40
9.81e-06s 0.00e+00d [DetectDifferentVariables]
8.30e-05s 3.03e-06d [ProcessSetPPC] #relevant_constraints=183
8.64e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=142
2.63e-04s 0.00e+00d [DetectEncodedComplexDomains]
1.43e-05s 1.10e-07d [FindAlmostIdenticalLinearConstraints] #num_tested_pairs=2
1.21e-04s 9.14e-05d [FindBigAtMostOneAndLinearOverlap]
8.53e-05s 1.07e-04d [FindBigVerticalLinearOverlap]
1.28e-05s 5.27e-06d [FindBigHorizontalLinearOverlap] #linears=80
1.68e-05s 0.00e+00d [MergeClauses]
1.82e-04s 0.00e+00d [DetectDominanceRelations]
1.72e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.33e-06s 0.00e+00d [MergeNoOverlap]
3.02e-06s 0.00e+00d [MergeNoOverlap2D]
1.33e-04s 0.00e+00d [ExpandObjective] #entries=2'948 #tight_variables=354 #tight_constraints=40
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 81 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 2'124 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 157 times.
- rule 'deductions: 708 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 354 times.
- rule 'linear2: contains a boolean' was applied 354 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 157 times.
- rule 'linear: positive at most one' was applied 105 times.
- rule 'linear: positive equal one' was applied 40 times.
- rule 'objective: shifted cost with exactly ones' was applied 40 times.
- rule 'presolve: 0 unused variables removed.' was applied 1 time.
- rule 'presolve: iteration' was applied 2 times.
- rule 'setppc: exactly_one included in linear' was applied 40 times.
- rule 'setppc: reduced linear coefficients' was applied 39 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 354 times.
- rule 'variables: detect half reified value encoding' was applied 708 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0xf807134f56ab71c3)
#Variables: 708 (#bools: 314 in objective) (628 primary variables)
- 354 Booleans in [0,1]
- 314 in [0,4]
- 40 in [0,5]
#kAtMostOne: 105 (#literals: 462)
#kBoolAnd: 37 (#enforced: 37) (#literals: 74)
#kExactlyOne: 40 (#literals: 354)
#kLinear1: 708 (#enforced: 708)
#kLinear3: 1
#kLinearN: 81 (#terms: 1'059)
[Symmetry] Graph for symmetry has 2'412 nodes and 4'137 arcs.
[Symmetry] Symmetry computation done. time: 0.000214068 dtime: 0.00043646
Preloading model.
#Bound 0.04s best:inf next:[1364.00132,11449.6914] initial_domain
#1 0.04s best:1765.33376 next:[1364.00132,1765.33376] complete_hint
#Model 0.04s var:708/708 constraints:972/972
Starting search at 0.04s with 5 workers.
3 full problem subsolvers: [core, default_lp, no_lp]
2 first solution subsolvers: [fj, fs_random_no_lp]
9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.05s best:1765.33376 next:[1377.09321,1765.33376] am1_presolve (num_literals=314 num_am1=11 increase=6863921 work_done=1181)
#2 0.05s best:1760.06663 next:[1377.09321,1760.06663] graph_cst_lns (d=5.00e-01 s=7 t=0.10 p=0.00 stall=0 h=base)
#Bound 0.05s best:1760.06663 next:[1439.63944,1760.06663] default_lp
#3 0.08s best:1758.41439 next:[1439.63944,1758.41439] graph_var_lns (d=7.07e-01 s=13 t=0.10 p=1.00 stall=1 h=base)
#Bound 0.12s best:1758.41439 next:[1485.28171,1758.41439] default_lp
#Bound 0.13s best:1758.41439 next:[1627.06701,1758.41439] default_lp
#Bound 0.25s best:1758.41439 next:[1639.88368,1758.41439] default_lp
#Bound 0.27s best:1758.41439 next:[1653.37248,1758.41439] default_lp
#Model 0.28s var:706/708 constraints:969/972
#Bound 0.29s best:1758.41439 next:[1658.77163,1758.41439] default_lp
#Bound 0.36s best:1758.41439 next:[1663.47561,1758.41439] default_lp
#Bound 0.37s best:1758.41439 next:[1666.17074,1758.41439] default_lp
#Model 0.39s var:702/708 constraints:965/972
#Bound 0.44s best:1758.41439 next:[1670.91239,1758.41439] default_lp
#Model 0.50s var:696/708 constraints:958/972
#Bound 0.82s best:1758.41439 next:[1671.03065,1758.41439] default_lp
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [958.45ms, 958.45ms] 958.45ms 0.00ns 958.45ms 2 [ 1.31ms, 857.47ms] 429.39ms 428.08ms 858.78ms
'default_lp': 1 [958.77ms, 958.77ms] 958.77ms 0.00ns 958.77ms 2 [ 21.25ms, 432.30ms] 226.78ms 205.53ms 453.56ms
'feasibility_pump': 4 [ 24.46us, 12.48ms] 3.78ms 5.06ms 15.11ms 2 [145.79us, 11.26ms] 5.70ms 5.56ms 11.41ms
'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'fs_random_no_lp': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_arc_lns': 4 [ 8.50ms, 203.88ms] 77.75ms 76.08ms 311.02ms 4 [236.07us, 100.01ms] 32.87ms 39.74ms 131.47ms
'graph_cst_lns': 4 [ 6.07ms, 205.14ms] 107.19ms 74.55ms 428.75ms 4 [ 49.37us, 100.04ms] 48.48ms 37.56ms 193.91ms
'graph_dec_lns': 4 [ 1.39ms, 167.45ms] 45.31ms 70.58ms 181.24ms 4 [ 10.00ns, 100.05ms] 25.07ms 43.29ms 100.28ms
'graph_var_lns': 4 [ 1.91ms, 53.68ms] 21.55ms 20.25ms 86.22ms 4 [ 10.00ns, 17.93ms] 5.82ms 7.32ms 23.27ms
'ls': 4 [ 95.88ms, 108.13ms] 102.63ms 5.18ms 410.52ms 4 [100.00ms, 100.01ms] 100.00ms 868.15ns 400.02ms
'no_lp': 1 [958.29ms, 958.29ms] 958.29ms 0.00ns 958.29ms 2 [ 1.57ms, 695.76ms] 348.66ms 347.10ms 697.32ms
'rins/rens': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'rnd_cst_lns': 5 [ 3.46ms, 88.97ms] 31.65ms 31.08ms 158.26ms 5 [ 23.00ns, 36.92ms] 10.27ms 13.94ms 51.34ms
'rnd_var_lns': 5 [ 2.68ms, 174.45ms] 64.07ms 70.09ms 320.34ms 5 [ 10.00ns, 78.65ms] 26.79ms 32.87ms 133.97ms
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 365 23'272 47'026 70 1'579 24'617 787'552 1'697'263
'default_lp': 373 177 6'609 2 3'503 4'100 29'660 137'689
'fs_random_no_lp': 0 0 0 0 0 0 0 0
'no_lp': 354 17'845 37'060 90 4'640 22'721 985'048 3'098'858
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 6 0 365 359 106 81 7'690
'default_lp': 6 0 373 367 162 40 166
'fs_random_no_lp': 0 0 0 0 0 0 0
'no_lp': 6 0 354 348 78 104 8'110
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 19'728 289'800 32'202 1'355'986 554'322 6'339
'default_lp': 117 1'080 5'580 10'539 0 10
'fs_random_no_lp': 0 0 0 0 0 0
'no_lp': 14'692 159'814 53'644 752'596 135'164 6'197
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 111 711 0 0 0 10 0
'default_lp': 321 2'483 0 0 0 0 0
'fs_random_no_lp': 0 0 0 0 0 0 0
'no_lp': 835 6'364 0 29 287 512 1
Clause deletion at_true l_and_not(l) to_binary sub_conflict sub_extra sub_decisions sub_eager sub_vivify sub_probing sub_inpro blocked eliminated forgotten promoted conflicts
'core': 30 0 0 5'824 325 0 515 0 0 22 0 0 8'835 58'571 23'272
'default_lp': 0 0 0 8 1 0 2 0 0 0 0 0 0 366 177
'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'no_lp': 53 0 0 6'004 167 64 193 29 0 68 0 0 3'081 39'904 17'845
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 10'264 1'073 791 1 17
Lp dimension Final dimension of first component
'default_lp': 591 rows, 669 columns, 5145 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 805 0 4'118 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 2'245 42 177 0 121 0 26 1'073/2'046
Lp Cut default_lp
CG_FF: 15
CG_K: 8
CG_KL: 5
CG_R: 14
CG_RB: 21
CG_RBP: 14
IB: 405
MIR_1_FF: 41
MIR_1_K: 11
MIR_1_KL: 10
MIR_1_RB: 27
MIR_1_RBP: 11
MIR_2_FF: 29
MIR_2_K: 16
MIR_2_KL: 6
MIR_2_R: 5
MIR_2_RB: 23
MIR_2_RBP: 18
MIR_3_FF: 31
MIR_3_K: 17
MIR_3_KL: 4
MIR_3_R: 2
MIR_3_RB: 11
MIR_3_RBP: 16
MIR_4_FF: 21
MIR_4_K: 13
MIR_4_KL: 6
MIR_4_R: 1
MIR_4_RB: 11
MIR_4_RBP: 12
MIR_5_FF: 22
MIR_5_K: 14
MIR_5_KL: 9
MIR_5_R: 4
MIR_5_RB: 11
MIR_5_RBP: 12
MIR_6_FF: 9
MIR_6_K: 10
MIR_6_KL: 8
MIR_6_R: 1
MIR_6_RB: 4
MIR_6_RBP: 11
ZERO_HALF_FF: 13
ZERO_HALF_K: 3
ZERO_HALF_KL: 2
ZERO_HALF_R: 94
ZERO_HALF_RB: 10
ZERO_HALF_RBP: 12
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 1/4 75% 8.08e-01 0.10
'graph_cst_lns': 1/4 75% 8.21e-01 0.10
'graph_dec_lns': 0/4 75% 8.21e-01 0.10
'graph_var_lns': 1/4 100% 9.14e-01 0.10
'rins/rens': 0/0 0% 5.00e-01 0.10
'rnd_cst_lns': 0/5 80% 8.80e-01 0.10
'rnd_var_lns': 0/5 80% 8.80e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_restart_compound_perturb': 1 1 0 23'363 1'792 10'781 143 529'013
'ls_restart_decay': 1 1 21'061 0 0 0 813 406'510
'ls_restart_decay_compound_perturb': 1 1 0 20'766 3'146 8'809 50 491'821
'ls_restart_decay_perturb': 1 1 21'674 0 0 0 862 416'274
Solutions (3) Num Rank
'complete_hint': 2 [0,1]
'graph_cst_lns': 2 [1,2]
'graph_var_lns': 2 [2,3]
Objective bounds Num
'am1_presolve': 1
'default_lp': 10
'initial_domain': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 6 30 5
'fj solution hints': 0 0 0
'lp solutions': 0 0 0
'pump': 0 0
Improving bounds shared Num Sym
'default_lp': 12 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 0 0 0 0
'default_lp': 0 0 0 0
'no_lp': 0 0 0 0
LRAT_status: NA
[Scaling] scaled_objective_bound: 1671.03 corrected_bound: 1671.03 delta: 9.31735e-07
CpSolverResponse summary:
status: FEASIBLE
objective: 1758.414392514799
best_bound: 1671.030650155732
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 1.00407
usertime: 1.00407
deterministic_time: 3.06135
gap_integral: 13.8546
solution_fingerprint: 0x40238ccd9cfcdeef
[29]:
TerseLinks(scope='topology', topology='branched', T=40, R=1, links=40)
Summary¶
Key Differences between ModelOptions and SolverOptions are listed below.
Feature |
|
|
|---|---|---|
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.