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]:
../_images/notebooks_a05_debugging_26_0.svg