Debugging¶
This notebook demonstrates how to configure and control logging in the OptiWindNet to debug wind farm network optimization workflows. We explore logging at different scopes (individual modules, multiple modules, and globally). Additionally, we cover enabling verbose output for MILP solvers to inspect solver behavior in detail, observing optimization performance and progress.
[1]:
import sys
import logging
import numpy as np
from optiwindnet.api import WindFarmNetwork
[2]:
# Display figures as SVG in Jupyter notebooks
%config InlineBackend.figure_formats = ['svg']
Logging¶
Log one module¶
As an example, set logging level for a specific file to DEBUG level.
[3]:
logger_file1 = logging.getLogger('optiwindnet.mesh') # Or any other function
stdoutHandler = logging.StreamHandler(stream=sys.stdout)
logger_file1.addHandler(stdoutHandler)
#logger_file1.setLevel(logging.INFO)
logger_file1.setLevel(logging.DEBUG)
Initialize a WindFarmNetwork() instance and see the output log.
[4]:
wfn1 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=7)
Run optimization
[5]:
res1 = wfn1.optimize()
PART A
PART B
PART C
is_hole: False, ring: 0, num_vertices: 4
((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))
is_hole: False, ring: 1, num_vertices: 4
((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))
is_hole: True, ring: 0, num_vertices: 4
((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))
PART D
PART E
PART F
convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
PART G
hull_concave: [5, -1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4]
PART H
holes
s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)
s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)
s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)
s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)
{(24, 25), (22, 25), (23, 24), (22, 23)}
PART I
hull_concave
concavities
PART J
PART K
==== pivot 26 ====
del_sup 26 28
del_int 19 12
del_sup 26 12
del_sup 26 27
==== pivot 27 ====
del_sup 27 26
==== pivot 28 ====
del_int 14 17
del_sup 28 17
del_sup 28 26
PART L
PART M
A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
s: 3; b: 25; t: -1; b_conc_id: 0
a: 24; c: 22; s: 3, t: -1; False
Took the 2nd continue.
A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
s: 5; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 5, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
s: 10; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 10, t: 15; False
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
s: 4; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 4, t: 20; False
(0) 4 21 20 shortcut
s: 4; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 4, t: 6; False
Took the 2nd continue.
A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
s: 1; b: 23; t: 22; b_conc_id: 0
a: 22; c: 24; s: 1, t: 22; False
(0) 1 23 22 shortcut
s: 1; b: 22; t: 4; b_conc_id: 0
a: 25; c: 23; s: 1, t: 4; False
Took the 2nd continue.
A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
s: 11; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 11, t: 15; False
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]
A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
A_edge: 5–6 length: 969.949; path: [5, 15, 6]
s: 5; b: 15; t: 6; b_conc_id: 2
a: 16; c: 14; s: 5, t: 6; False
Took the 2nd continue.
A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]
A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 15; b_conc_id: 1
a: 21; c: 19; s: 21, t: 15; False
(1) 21 20 15 shortcut
s: 21; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 21, t: 16; False
(1) 21 15 16 shortcut
s: 21; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 21, t: 11; False
Took the 2nd continue.
A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
PART N
updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])
s: -1; b: 21; t: 0; b_conc_id: 1
a: 12; c: 20; s: -1, t: 0; False
updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
d2roots[11, -1] updated
updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 10; b_conc_id: 2
a: 17; c: 15; s: 15, t: 10; False
Took the 2nd continue.
d2roots[10, -1] updated
updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
s: -1; b: 25; t: 3; b_conc_id: 0
a: 24; c: 22; s: -1, t: 3; False
Took the 2nd continue.
d2roots[3, -1] updated
updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 9; b_conc_id: 2
a: 17; c: 15; s: 15, t: 9; False
d2roots[9, -1] updated
PART O
PART P
Log several modules¶
It is possible to log several files by repeating the steps.
[6]:
# set logger for second file
logger_file2 = logging.getLogger('optiwindnet.pathfinding') # Or any other function
stdoutHandler = logging.StreamHandler(stream=sys.stdout)
logger_file2.addHandler(stdoutHandler)
#logger_file2.setLevel(logging.INFO)
logger_file2.setLevel(logging.DEBUG)
[7]:
wfn2 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=7)
[8]:
res2 = wfn2.optimize()
PART A
PART B
PART C
is_hole: False, ring: 0, num_vertices: 4
((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))
is_hole: False, ring: 1, num_vertices: 4
((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))
is_hole: True, ring: 0, num_vertices: 4
((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))
PART D
PART E
PART F
convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
PART G
hull_concave: [5, -1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4]
PART H
holes
s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)
s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)
s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)
s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)
{(24, 25), (22, 25), (23, 24), (22, 23)}
PART I
hull_concave
concavities
PART J
PART K
==== pivot 26 ====
del_sup 26 28
del_int 19 12
del_sup 26 12
del_sup 26 27
==== pivot 27 ====
del_sup 27 26
==== pivot 28 ====
del_int 14 17
del_sup 28 17
del_sup 28 26
PART L
PART M
A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
s: 3; b: 25; t: -1; b_conc_id: 0
a: 24; c: 22; s: 3, t: -1; False
Took the 2nd continue.
A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
s: 5; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 5, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
s: 10; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 10, t: 15; False
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
s: 4; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 4, t: 20; False
(0) 4 21 20 shortcut
s: 4; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 4, t: 6; False
Took the 2nd continue.
A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
s: 1; b: 23; t: 22; b_conc_id: 0
a: 22; c: 24; s: 1, t: 22; False
(0) 1 23 22 shortcut
s: 1; b: 22; t: 4; b_conc_id: 0
a: 25; c: 23; s: 1, t: 4; False
Took the 2nd continue.
A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
s: 11; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 11, t: 15; False
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]
A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
A_edge: 5–6 length: 969.949; path: [5, 15, 6]
s: 5; b: 15; t: 6; b_conc_id: 2
a: 16; c: 14; s: 5, t: 6; False
Took the 2nd continue.
A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]
A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
s: 21; b: 20; t: 15; b_conc_id: 1
a: 21; c: 19; s: 21, t: 15; False
(1) 21 20 15 shortcut
s: 21; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 21, t: 16; False
(1) 21 15 16 shortcut
s: 21; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 21, t: 11; False
Took the 2nd continue.
A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
PART N
updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])
s: -1; b: 21; t: 0; b_conc_id: 1
a: 12; c: 20; s: -1, t: 0; False
updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
d2roots[11, -1] updated
updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 10; b_conc_id: 2
a: 17; c: 15; s: 15, t: 10; False
Took the 2nd continue.
d2roots[10, -1] updated
updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
s: -1; b: 25; t: 3; b_conc_id: 0
a: 24; c: 22; s: -1, t: 3; False
Took the 2nd continue.
d2roots[3, -1] updated
updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
s: 15; b: 16; t: 9; b_conc_id: 2
a: 17; c: 15; s: 15, t: 9; False
d2roots[9, -1] updated
PART O
PART P
>PathFinder: "example_location" (T = 12)
<PathFinder: no crossings, detagged all tentative edges.
Log all modules¶
If no file or functions is specified, log setting will be applied to all files.
[9]:
logger_all = logging.getLogger()
stdoutHandler = logging.StreamHandler(stream=sys.stdout)
logger_all.addHandler(stdoutHandler)
# logger.setLevel(logging.INFO)
logger_all.setLevel(logging.DEBUG)
[10]:
wfn3 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=7)
[11]:
res3 = wfn3.optimize()
PART A
PART A
PART B
PART B
PART C
PART C
is_hole: False, ring: 0, num_vertices: 4
is_hole: False, ring: 0, num_vertices: 4
((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))
((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))
is_hole: False, ring: 1, num_vertices: 4
is_hole: False, ring: 1, num_vertices: 4
((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))
((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))
is_hole: True, ring: 0, num_vertices: 4
is_hole: True, ring: 0, num_vertices: 4
((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))
((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))
PART D
PART D
PART E
PART E
PART F
PART F
convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]
convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]
hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
PART G
PART G
hull_concave: [5, -1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4]
hull_concave: [5, -1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4]
PART H
PART H
holes
holes
s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)
s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)
s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)
s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)
s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)
s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)
s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)
s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)
{(24, 25), (22, 25), (23, 24), (22, 23)}
{(24, 25), (22, 25), (23, 24), (22, 23)}
PART I
PART I
hull_concave
hull_concave
concavities
concavities
PART J
PART J
PART K
PART K
==== pivot 26 ====
==== pivot 26 ====
del_sup 26 28
del_sup 26 28
del_int 19 12
del_int 19 12
del_sup 26 12
del_sup 26 12
del_sup 26 27
del_sup 26 27
==== pivot 27 ====
==== pivot 27 ====
del_sup 27 26
del_sup 27 26
==== pivot 28 ====
==== pivot 28 ====
del_int 14 17
del_int 14 17
del_sup 28 17
del_sup 28 17
del_sup 28 26
del_sup 28 26
PART L
PART L
PART M
PART M
A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
s: 0; b: 21; t: 20; b_conc_id: 1
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
s: 3; b: 25; t: -1; b_conc_id: 0
s: 3; b: 25; t: -1; b_conc_id: 0
a: 24; c: 22; s: 3, t: -1; False
a: 24; c: 22; s: 3, t: -1; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
s: 5; b: 15; t: 16; b_conc_id: 2
s: 5; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 5, t: 16; False
a: 16; c: 14; s: 5, t: 16; False
Took the 2nd continue.
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
s: 2; b: 21; t: 20; b_conc_id: 1
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
Took the 2nd continue.
s: 21; b: 20; t: 7; b_conc_id: 1
s: 21; b: 20; t: 7; b_conc_id: 1
a: 21; c: 19; s: 21, t: 7; False
a: 21; c: 19; s: 21, t: 7; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
s: 10; b: 16; t: 15; b_conc_id: 2
s: 10; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 10, t: 15; False
a: 17; c: 15; s: 10, t: 15; False
Took the 2nd continue.
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
s: 4; b: 21; t: 20; b_conc_id: 1
s: 4; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 4, t: 20; False
a: 12; c: 20; s: 4, t: 20; False
(0) 4 21 20 shortcut
(0) 4 21 20 shortcut
s: 4; b: 20; t: 6; b_conc_id: 1
s: 4; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 4, t: 6; False
a: 21; c: 19; s: 4, t: 6; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
s: 1; b: 23; t: 22; b_conc_id: 0
s: 1; b: 23; t: 22; b_conc_id: 0
a: 22; c: 24; s: 1, t: 22; False
a: 22; c: 24; s: 1, t: 22; False
(0) 1 23 22 shortcut
(0) 1 23 22 shortcut
s: 1; b: 22; t: 4; b_conc_id: 0
s: 1; b: 22; t: 4; b_conc_id: 0
a: 25; c: 23; s: 1, t: 4; False
a: 25; c: 23; s: 1, t: 4; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
s: 0; b: 21; t: 20; b_conc_id: 1
s: 0; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 0, t: 20; False
a: 12; c: 20; s: 0, t: 20; False
Took the 2nd continue.
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
s: 11; b: 16; t: 15; b_conc_id: 2
s: 11; b: 16; t: 15; b_conc_id: 2
a: 17; c: 15; s: 11, t: 15; False
a: 17; c: 15; s: 11, t: 15; False
Took the 2nd continue.
Took the 2nd continue.
s: 16; b: 15; t: -1; b_conc_id: 2
s: 16; b: 15; t: -1; b_conc_id: 2
a: 16; c: 14; s: 16, t: -1; False
a: 16; c: 14; s: 16, t: -1; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]
A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]
A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]
A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]
s: 2; b: 21; t: 20; b_conc_id: 1
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
Took the 2nd continue.
s: 21; b: 20; t: 6; b_conc_id: 1
s: 21; b: 20; t: 6; b_conc_id: 1
a: 21; c: 19; s: 21, t: 6; False
a: 21; c: 19; s: 21, t: 6; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 5–6 length: 969.949; path: [5, 15, 6]
A_edge: 5–6 length: 969.949; path: [5, 15, 6]
s: 5; b: 15; t: 6; b_conc_id: 2
s: 5; b: 15; t: 6; b_conc_id: 2
a: 16; c: 14; s: 5, t: 6; False
a: 16; c: 14; s: 5, t: 6; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]
A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]
A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]
A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]
s: 2; b: 21; t: 20; b_conc_id: 1
s: 2; b: 21; t: 20; b_conc_id: 1
a: 12; c: 20; s: 2, t: 20; False
a: 12; c: 20; s: 2, t: 20; False
Took the 2nd continue.
Took the 2nd continue.
s: 21; b: 20; t: 15; b_conc_id: 1
s: 21; b: 20; t: 15; b_conc_id: 1
a: 21; c: 19; s: 21, t: 15; False
a: 21; c: 19; s: 21, t: 15; False
(1) 21 20 15 shortcut
(1) 21 20 15 shortcut
s: 21; b: 15; t: 16; b_conc_id: 2
s: 21; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: 21, t: 16; False
a: 16; c: 14; s: 21, t: 16; False
(1) 21 15 16 shortcut
(1) 21 15 16 shortcut
s: 21; b: 16; t: 11; b_conc_id: 2
s: 21; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 21, t: 11; False
a: 17; c: 15; s: 21, t: 11; False
Took the 2nd continue.
Took the 2nd continue.
A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
PART N
PART N
updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])
updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])
s: -1; b: 21; t: 0; b_conc_id: 1
s: -1; b: 21; t: 0; b_conc_id: 1
a: 12; c: 20; s: -1, t: 0; False
a: 12; c: 20; s: -1, t: 0; False
updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
s: -1; b: 15; t: 16; b_conc_id: 2
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
Took the 2nd continue.
s: 15; b: 16; t: 11; b_conc_id: 2
s: 15; b: 16; t: 11; b_conc_id: 2
a: 17; c: 15; s: 15, t: 11; False
a: 17; c: 15; s: 15, t: 11; False
Took the 2nd continue.
Took the 2nd continue.
d2roots[11, -1] updated
d2roots[11, -1] updated
updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
s: -1; b: 15; t: 16; b_conc_id: 2
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
Took the 2nd continue.
s: 15; b: 16; t: 10; b_conc_id: 2
s: 15; b: 16; t: 10; b_conc_id: 2
a: 17; c: 15; s: 15, t: 10; False
a: 17; c: 15; s: 15, t: 10; False
Took the 2nd continue.
Took the 2nd continue.
d2roots[10, -1] updated
d2roots[10, -1] updated
updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
s: -1; b: 25; t: 3; b_conc_id: 0
s: -1; b: 25; t: 3; b_conc_id: 0
a: 24; c: 22; s: -1, t: 3; False
a: 24; c: 22; s: -1, t: 3; False
Took the 2nd continue.
Took the 2nd continue.
d2roots[3, -1] updated
d2roots[3, -1] updated
updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
s: -1; b: 15; t: 16; b_conc_id: 2
s: -1; b: 15; t: 16; b_conc_id: 2
a: 16; c: 14; s: -1, t: 16; False
a: 16; c: 14; s: -1, t: 16; False
Took the 2nd continue.
Took the 2nd continue.
s: 15; b: 16; t: 9; b_conc_id: 2
s: 15; b: 16; t: 9; b_conc_id: 2
a: 17; c: 15; s: 15, t: 9; False
a: 17; c: 15; s: 15, t: 9; False
d2roots[9, -1] updated
d2roots[9, -1] updated
PART O
PART O
PART P
PART P
<enqueue_best_union> starting... subroot = <0>
<pushed> sr_u <0>, «0~1», tradeoff = -1045.968
<enqueue_best_union> starting... subroot = <1>
<pushed> sr_u <1>, «1~0», tradeoff = -851.372
<enqueue_best_union> starting... subroot = <2>
<pushed> sr_u <2>, «2~1», tradeoff = -416.066
<enqueue_best_union> starting... subroot = <3>
<pushed> sr_u <3>, «3~4», tradeoff = -595.165
<enqueue_best_union> starting... subroot = <4>
<pushed> sr_u <4>, «4~3», tradeoff = -62.100
<enqueue_best_union> starting... subroot = <5>
<cancelling> 5
<enqueue_best_union> starting... subroot = <6>
<pushed> sr_u <6>, «6~8», tradeoff = -292.727
<enqueue_best_union> starting... subroot = <7>
<pushed> sr_u <7>, «7~6», tradeoff = -577.867
<enqueue_best_union> starting... subroot = <8>
<pushed> sr_u <8>, «8~6», tradeoff = -567.296
<enqueue_best_union> starting... subroot = <9>
<pushed> sr_u <9>, «9~10», tradeoff = -841.283
<enqueue_best_union> starting... subroot = <10>
<pushed> sr_u <10>, «10~9», tradeoff = -515.130
<enqueue_best_union> starting... subroot = <11>
<pushed> sr_u <11>, «11~10», tradeoff = -511.075
[1]
<popped> «0~1», sr_u: <0>
<add edge> «0~1» subroot <1>
heap top: <1>, «[1, 0]» -851.372
[2]
stale_subtrees: {1}
<enqueue_best_union> starting... subroot = <1>
<pushed> sr_u <1>, «1~2», tradeoff = -830.788
<popped> «9~10», sr_u: <9>
<add edge> «9~10» subroot <10>
heap top: <1>, «[1, 2]» -830.788
[3]
stale_subtrees: {10}
<enqueue_best_union> starting... subroot = <10>
<pushed> sr_u <10>, «10~8», tradeoff = -494.133
<popped> «1~2», sr_u: <1>
<add edge> «1~2» subroot <2>
heap top: <3>, «[3, 4]» -595.165
[4]
stale_subtrees: {2}
<enqueue_best_union> starting... subroot = <2>
<pushed> sr_u <2>, «1~3», tradeoff = -308.157
<popped> «3~4», sr_u: <3>
<add edge> «3~4» subroot <4>
heap top: <7>, «[7, 6]» -577.867
[5]
stale_subtrees: {4}
<enqueue_best_union> starting... subroot = <4>
<pushed> sr_u <4>, «3~1», tradeoff = -73.014
<popped> «7~6», sr_u: <7>
<add edge> «7~6» subroot <6>
heap top: <8>, «[8, 6]» -567.296
[6]
stale_subtrees: {6}
<enqueue_best_union> starting... subroot = <6>
<pushed> sr_u <6>, «6~8», tradeoff = -292.727
<popped> «8~6», sr_u: <8>
<add edge> «8~6» subroot <6>
heap top: <11>, «[11, 10]» -511.075
[7]
stale_subtrees: {6}
<enqueue_best_union> starting... subroot = <6>
<pushed> sr_u <6>, «8~10», tradeoff = -214.216
<popped> «11~10», sr_u: <11>
<add edge> «11~10» subroot <10>
heap top: <10>, «[10, 8]» -494.133
[8]
stale_subtrees: {10}
<enqueue_best_union> starting... subroot = <10>
<pushed> sr_u <10>, «10~8», tradeoff = -494.133
<popped> «10~8», sr_u: <10>
<add edge> «10~8» subroot <6>
heap top: <2>, «[1, 3]» -308.157
[9]
stale_subtrees: {6}
<enqueue_best_union> starting... subroot = <6>
<cancelling> 6
<popped> «1~3», sr_u: <2>
<add edge> «1~3» subroot <4>
heap top: <4>, «[3, 1]» -73.014
[10]
stale_subtrees: {4}
<enqueue_best_union> starting... subroot = <4>
<cancelling> 4
>PathFinder: "example_location" (T = 12)
>PathFinder: "example_location" (T = 12)
<PathFinder: no crossings, detagged all tentative edges.
<PathFinder: no crossings, detagged all tentative edges.
Verbose (for MILP solvers)¶
Set logging level to WARNING to make sure all printed text are from Verbose.
[12]:
logger_file1.setLevel(logging.WARNING)
logger_file2.setLevel(logging.WARNING)
logger_all.setLevel(logging.WARNING)
Verbose is a flag for printing/hiding the MILP solver log (Default is verbose=False).
[13]:
from optiwindnet.api import MILPRouter
router = MILPRouter(solver_name='ortools', time_limit=15, mip_gap=0.001, verbose=True)
[14]:
wfn4 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=7)
[15]:
res4_warmstart = wfn4.optimize()
res4 = wfn4.optimize(router=router)
Using warm start: the model is initialized with the provided solution S.
Starting CP-SAT solver v9.14.6206
Parameters: max_time_in_seconds: 15 log_search_progress: true relative_gap_limit: 0.001
Setting number of workers to 8
Initial optimization model '': (model_fingerprint: 0x3982ce49fdedb1f3)
#Variables: 156 (#bools: 78 in floating point objective) (132 primary variables)
- 78 Booleans in [0,1]
- 66 in [0,6]
- 12 in [0,7]
#kAtMostOne: 44 (#literals: 112)
#kLinear1: 156 (#enforced: 156)
#kLinearN: 39 (#terms: 390)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 78 terms with magnitude in [336.61, 1997.76] average = 854.916
[Scaling] Objective coefficient relative error: 8.90318e-09
[Scaling] Objective worst-case absolute error: 7.72954e-05
[Scaling] Objective scaling factor: 131072
6.40e-04s 0.00e+00d [DetectDominanceRelations]
4.34e-03s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
8.12e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::ExtractEncodingFromLinear] #potential_supersets=56
3.06e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateColumns]
2.23e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 578 nodes and 1'030 arcs.
[Symmetry] Symmetry computation done. time: 0.000276 dtime: 0.00010345
2.38e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
4.32e-03s 1.99e-04d [operations_research::sat::CpModelPresolver::Probe] #probed=156
7.37e-04s 1.43e-05d [MaxClique] Merged 44(112 literals) into 28(80 literals) at_most_ones.
1.37e-04s 0.00e+00d [DetectDominanceRelations]
1.08e-03s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.33e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::ProcessAtMostOneAndLinear]
1.09e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
7.00e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
1.67e-04s 1.31e-06d [operations_research::sat::CpModelPresolver::DetectDominatedLinearConstraints] #relevant_constraints=27 #num_inclusions=13
1.38e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDifferentVariables]
3.75e-04s 4.12e-06d [operations_research::sat::CpModelPresolver::ProcessSetPPC] #relevant_constraints=42 #num_inclusions=40
3.11e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::FindAlmostIdenticalLinearConstraints]
1.21e-04s 1.53e-05d [operations_research::sat::CpModelPresolver::FindBigAtMostOneAndLinearOverlap]
7.76e-05s 1.64e-05d [operations_research::sat::CpModelPresolver::FindBigVerticalLinearOverlap]
2.63e-05s 1.11e-06d [operations_research::sat::CpModelPresolver::FindBigHorizontalLinearOverlap] #linears=23
1.18e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::MergeClauses]
1.12e-04s 0.00e+00d [DetectDominanceRelations]
9.46e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.98e-05s 0.00e+00d [DetectDominanceRelations]
7.56e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
3.96e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateColumns]
7.05e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.
[Symmetry] Symmetry computation done. time: 0.000143 dtime: 9.639e-05
[SAT presolve] num removable Booleans: 0 / 78
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0
[SAT presolve] [6.99e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0
[SAT presolve] [9.47e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0
1.75e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
2.37e-03s 1.82e-04d [operations_research::sat::CpModelPresolver::Probe] #probed=156
1.59e-04s 1.39e-05d [MaxClique]
1.84e-04s 0.00e+00d [DetectDominanceRelations]
1.44e-03s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.71e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::ProcessAtMostOneAndLinear]
1.38e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraints]
1.04e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDuplicateConstraintsWithDifferentEnforcements]
1.63e-04s 9.78e-07d [operations_research::sat::CpModelPresolver::DetectDominatedLinearConstraints] #relevant_constraints=26 #num_inclusions=12
1.84e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::DetectDifferentVariables]
9.95e-05s 5.30e-07d [operations_research::sat::CpModelPresolver::ProcessSetPPC] #relevant_constraints=41
1.94e-05s 0.00e+00d [operations_research::sat::CpModelPresolver::FindAlmostIdenticalLinearConstraints]
1.04e-04s 1.49e-05d [operations_research::sat::CpModelPresolver::FindBigAtMostOneAndLinearOverlap]
7.24e-05s 1.64e-05d [operations_research::sat::CpModelPresolver::FindBigVerticalLinearOverlap]
2.01e-05s 1.11e-06d [operations_research::sat::CpModelPresolver::FindBigHorizontalLinearOverlap] #linears=23
9.10e-06s 0.00e+00d [operations_research::sat::CpModelPresolver::MergeClauses]
1.24e-04s 0.00e+00d [DetectDominanceRelations]
9.04e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.20e-04s 0.00e+00d [operations_research::sat::CpModelPresolver::ExpandObjective] #entries=456 #tight_variables=78 #tight_constraints=12
Presolve summary:
- 0 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 25 times.
- rule 'at_most_one: transformed into max clique.' was applied 1 time.
- rule 'deductions: 156 stored' was applied 1 time.
- rule 'exactly_one: simplified objective' was applied 12 times.
- rule 'linear: positive equal one' was applied 12 times.
- rule 'objective: shifted cost with exactly ones' was applied 12 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 12 times.
- rule 'setppc: reduced linear coefficients' was applied 11 times.
- rule 'setppc: removed trivial linear constraint' was applied 1 time.
- rule 'variables: detect fully reified value encoding' was applied 78 times.
- rule 'variables: detect half reified value encoding' was applied 156 times.
Presolved optimization model '': (model_fingerprint: 0xfa95d535de867438)
#Variables: 156 (#bools: 66 in objective) (132 primary variables)
- 78 Booleans in [0,1]
- 66 in [0,6]
- 12 in [0,7]
#kAtMostOne: 11 (#literals: 46)
#kBoolAnd: 17 (#enforced: 17) (#literals: 34)
#kExactlyOne: 12 (#literals: 78)
#kLinear1: 156 (#enforced: 156)
#kLinearN: 26 (#terms: 234)
[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.
[Symmetry] Symmetry computation done. time: 0.0001536 dtime: 9.636e-05
Preloading model.
#Bound 0.03s best:inf next:[5258.15779,30400.5387] initial_domain
#1 0.03s best:5773.39037 next:[5258.15779,5773.39036] complete_hint
#Model 0.03s var:156/156 constraints:222/222
Starting search at 0.03s with 8 workers.
6 full problem subsolvers: [core, default_lp, max_lp, no_lp, quick_restart, reduced_costs]
2 first solution subsolvers: [fj, fs_random_no_lp]
9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound 0.04s best:5773.39037 next:[5378.2497,5773.39036] am1_presolve (num_literals=66 num_am1=3 increase=15740687 work_done=247)
#Bound 0.04s best:5773.39037 next:[5458.27742,5773.39036] no_lp
#Model 0.04s var:91/156 constraints:145/222
#Done 0.04s no_lp
#Model 0.04s var:69/156 constraints:111/222
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [ 11.28ms, 11.28ms] 11.28ms 0.00ns 11.28ms 1 [170.92us, 170.92us] 170.92us 0.00ns 170.92us
'default_lp': 1 [ 11.78ms, 11.78ms] 11.78ms 0.00ns 11.78ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'feasibility_pump': 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_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': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_cst_lns': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_dec_lns': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_var_lns': 1 [153.30us, 153.30us] 153.30us 0.00ns 153.30us 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'ls': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'max_lp': 1 [ 11.47ms, 11.47ms] 11.47ms 0.00ns 11.47ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'no_lp': 1 [ 10.76ms, 10.76ms] 10.76ms 0.00ns 10.76ms 1 [ 3.69us, 3.69us] 3.69us 0.00ns 3.69us
'quick_restart': 1 [ 10.02ms, 10.02ms] 10.02ms 0.00ns 10.02ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'reduced_costs': 1 [ 10.80ms, 10.80ms] 10.80ms 0.00ns 10.80ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'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': 1 [ 7.84ms, 7.84ms] 7.84ms 0.00ns 7.84ms 1 [ 10.00ns, 10.00ns] 10.00ns 0.00ns 10.00ns
'rnd_var_lns': 1 [ 7.68ms, 7.68ms] 7.68ms 0.00ns 7.68ms 1 [ 10.00ns, 10.00ns] 10.00ns 0.00ns 10.00ns
Search stats Bools Conflicts Branches Restarts BoolPropag IntegerPropag
'core': 81 5 390 227 1'058 3'799
'default_lp': 78 0 156 156 626 2'113
'fs_random_no_lp': 0 0 0 0 0 0
'max_lp': 78 0 156 156 626 2'213
'no_lp': 78 13 174 158 881 2'797
'quick_restart': 78 0 156 156 626 2'113
'reduced_costs': 78 0 156 156 626 2'212
SAT stats ClassicMinim LitRemoved LitLearned LitForgotten Subsumed MClauses MDecisions MLitTrue MSubsumed MLitRemoved MReused
'core': 1 5 53 0 0 11 35 0 0 0 0
'default_lp': 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
'max_lp': 0 0 0 0 0 0 0 0 0 0 0
'no_lp': 5 9 43 0 0 0 0 0 0 0 0
'quick_restart': 0 0 0 0 0 0 0 0 0 0 0
'reduced_costs': 0 0 0 0 0 0 0 0 0 0 0
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 27 0 2 0 0
'max_lp': 1 39 0 0 1 0
'quick_restart': 1 26 0 2 0 0
'reduced_costs': 1 0 0 0 0 0
Lp dimension Final dimension of first component
'default_lp': 27 rows, 145 columns, 196 entries
'max_lp': 300 rows, 156 columns, 860 entries
'quick_restart': 27 rows, 145 columns, 196 entries
'reduced_costs': 0 rows, 156 columns, 0 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 0 0 0 0
'max_lp': 0 0 1 0 0 0
'quick_restart': 0 0 0 0 0 0
'reduced_costs': 0 0 0 0 0 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strenghtened Cuts/Call
'default_lp': 250 0 0 0 0 0 0 0/0
'max_lp': 300 0 0 0 0 0 0 0/0
'quick_restart': 250 0 0 0 0 0 0 0/0
'reduced_costs': 300 0 0 0 0 0 0 0/0
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 0/0 0% 5.00e-01 0.10
'graph_cst_lns': 0/0 0% 5.00e-01 0.10
'graph_dec_lns': 0/0 0% 5.00e-01 0.10
'graph_var_lns': 0/0 0% 5.00e-01 0.10
'rins/rens': 0/0 0% 5.00e-01 0.10
'rnd_cst_lns': 0/1 100% 7.07e-01 0.10
'rnd_var_lns': 0/1 100% 7.07e-01 0.10
Solutions (1) Num Rank
'complete_hint': 1 [1,1]
Objective bounds Num
'am1_presolve': 1
'initial_domain': 1
'no_lp': 1
Solution repositories Added Queried Synchro
'feasible solutions': 1 4 1
'fj solution hints': 0 0 0
'lp solutions': 0 0 0
'pump': 0 0
Improving bounds shared Num Sym
'core': 66 0
'no_lp': 32 0
Clauses shared Num
'core': 1
'no_lp': 1
[Scaling] scaled_objective_bound: 5773.39 corrected_bound: 5773.39 delta: -5.07118e-06
CpSolverResponse summary:
status: OPTIMAL
objective: 5773.390362315924
best_bound: 5773.390362315924
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 0.0589317
usertime: 0.0589318
deterministic_time: 0.000656325
gap_integral: 0.00100524
solution_fingerprint: 0xdd456d7ba62285cc
[16]:
wfn4
[16]: