🐞 Debugging¶
Reference: When something goes wrong
This notebook demonstrates how to configure and control logging in OptiWindNet when debugging wind farm network optimization workflows. It covers logging for individual modules and the package as a whole, as well as verbose output from MILP solvers and HGS-CVRP.
Symptom-oriented guidance — rejected warm starts, options a router cannot enforce, turbines outside the border — is collected in When something goes wrong.
[1]:
import logging
import sys
from optiwindnet.api import HGSRouter, MILPRouter, NetworkConstraints, WindFarmNetwork
Logging¶
Print a module’s debug messages (optiwindnet.mesh)¶
Set the logging level for one module to DEBUG.
[2]:
logger_mesh = logging.getLogger('optiwindnet.mesh')
stdout_handler = logging.StreamHandler(stream=sys.stdout)
logger_mesh.addHandler(stdout_handler)
logger_mesh.setLevel(logging.DEBUG)
Initialize a WindFarmNetwork() instance:
[3]:
wfn1 = WindFarmNetwork.from_own_yaml(filepath='data/example_location.yaml', cables=4)
Run optimization and see the debug log.
[4]:
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_pruned: [5, 11, 9, 7, 0, 1, 3, 4]
hull_pruned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
PART G
hull_concave: [-1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4, 5]
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_pivot_u 26 28
del_conc 19 12
del_pivot_end 26 27
del_pivot_u 26 12
==== pivot 27 ====
del_pivot_u 27 26
==== pivot 28 ====
del_conc 14 17
del_pivot_end 28 26
del_pivot_u 28 17
PART L
PART M
A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
s: 0; b: 21; t: 20;
a: 12; c: 20; s: 0, t: 20
Non-shortable at 4th test.
s: 21; b: 20; t: 7;
a: 21; c: 19; s: 21, t: 7
Non-shortable at 4th test.
A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
s: 3; b: 25; t: -1;
a: 24; c: 22; s: 3, t: -1
Non-shortable at 4th test.
A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
s: 5; b: 15; t: 16;
a: 16; c: 14; s: 5, t: 16
Non-shortable at 3rd test.
s: 15; b: 16; t: 11;
a: 17; c: 15; s: 15, t: 11
Non-shortable at 3rd test.
A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
s: 2; b: 21; t: 20;
a: 12; c: 20; s: 2, t: 20
Non-shortable at 4th test.
s: 21; b: 20; t: 7;
a: 21; c: 19; s: 21, t: 7
Non-shortable at 4th test.
A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
s: 10; b: 16; t: 15;
a: 17; c: 15; s: 10, t: 15
Non-shortable at 4th test.
s: 16; b: 15; t: -1;
a: 16; c: 14; s: 16, t: -1
Non-shortable at 4th test.
A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
s: 4; b: 21; t: 20;
a: 12; c: 20; s: 4, t: 20
(0) 4 21 20 shortcut
s: 4; b: 20; t: 6;
a: 21; c: 19; s: 4, t: 6
Non-shortable at 4th test.
A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
s: 1; b: 23; t: 22;
a: 22; c: 24; s: 1, t: 22
(0) 1 23 22 shortcut
s: 1; b: 22; t: 4;
a: 25; c: 23; s: 1, t: 4
Non-shortable at 3rd test.
A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
s: 0; b: 21; t: 20;
a: 12; c: 20; s: 0, t: 20
Non-shortable at 4th test.
s: 21; b: 20; t: 6;
a: 21; c: 19; s: 21, t: 6
Non-shortable at 4th test.
A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
s: 11; b: 16; t: 15;
a: 17; c: 15; s: 11, t: 15
Non-shortable at 4th test.
s: 16; b: 15; t: -1;
a: 16; c: 14; s: 16, t: -1
Non-shortable at 4th test.
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;
a: 12; c: 20; s: 2, t: 20
Non-shortable at 4th test.
s: 21; b: 20; t: 6;
a: 21; c: 19; s: 21, t: 6
Non-shortable at 4th test.
A_edge: 5–6 length: 969.949; path: [5, 15, 6]
s: 5; b: 15; t: 6;
a: 16; c: 14; s: 5, t: 6
Non-shortable at 3rd test.
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;
a: 12; c: 20; s: 2, t: 20
Non-shortable at 4th test.
s: 21; b: 20; t: 15;
a: 21; c: 19; s: 21, t: 15
(1) 21 20 15 shortcut
s: 2; b: 21; t: 15;
a: 12; c: 20; s: 2, t: 15
Non-shortable at 4th test.
s: 21; b: 15; t: 16;
a: 16; c: 14; s: 21, t: 16
(1) 21 15 16 shortcut
s: 2; b: 21; t: 16;
a: 12; c: 20; s: 2, t: 16
Non-shortable at 4th test.
s: 21; b: 16; t: 11;
a: 17; c: 15; s: 21, t: 11
Non-shortable at 3rd test.
A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
PART N
updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
d2roots[3, -1] updated
d2roots[8, -1] updated by LOS pruning (path [-1, 6, 8] pruned at 8)
updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
s: -1; b: 15; t: 16;
a: 16; c: 14; s: -1, t: 16
Non-shortable at 3rd test.
s: 15; b: 16; t: 9;
a: 17; c: 15; s: 15, t: 9
d2roots[9, -1] updated
updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
s: -1; b: 15; t: 16;
a: 16; c: 14; s: -1, t: 16
Non-shortable at 3rd test.
s: 15; b: 16; t: 10;
a: 17; c: 15; s: 15, t: 10
Non-shortable at 3rd test.
d2roots[10, -1] updated
updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
s: -1; b: 15; t: 16;
a: 16; c: 14; s: -1, t: 16
Non-shortable at 3rd test.
s: 15; b: 16; t: 11;
a: 17; c: 15; s: 15, t: 11
Non-shortable at 3rd test.
d2roots[11, -1] updated
PART O
PART P
differences between G and P: [(-1, 10)]
in G, not in P: -1–10
share 1 neighbors.
[5]:
wfn1.solution_info()
[5]:
{'router': 'EWRouter', 'capacity': 4, 'method': 'rootlust', 'iterations': 8}
Another example (optiwindnet.pathfinding)¶
Logging other modules can be activated independently of the already active loggers.
[6]:
# optional: unset the previous logger level and remove its handler
logger_mesh.setLevel(logging.NOTSET)
logger_mesh.handlers[0].close()
logger_mesh.removeHandler(logger_mesh.handlers[0])
Set a logger for optiwindnet.pathfinding:
[7]:
logger_pathfinding = logging.getLogger('optiwindnet.pathfinding')
stdout_handler = logging.StreamHandler(stream=sys.stdout)
logger_pathfinding.addHandler(stdout_handler)
logger_pathfinding.setLevel(logging.DEBUG)
[8]:
wfn2 = WindFarmNetwork.from_own_yaml(
filepath='data/example_location.yaml',
cables=4,
constraints=NetworkConstraints(max_feeders=3),
)
[9]:
res2 = wfn2.optimize(
router=HGSRouter(
time_limit=0.1,
seed=1234567,
),
)
>PathFinder: "example_location" (T = 12)
pseudoedge «6->-1» added
pseudoedge «15->-1» added
pseudoedge «15->-1» added
pseudoedge «5->-1» added
_find_paths[1]: advancer id <0>
<0> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]
<0> infranear
_find_paths[2]: advancer id <1>
<1> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]
<1> inside
_find_paths[3]: advancer id <0>
pseudoedge «16->15» added
<0> new best pn for (16, -9223372036854775808) via 15: d_path = 397.67
<0> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
<0> infranear
_find_paths[4]: advancer id <2>
<2> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
<2> ultrafar
_find_paths[5]: advancer id <1>
pseudoedge «14->-1» added
<1> new best pn for (14, -9223372036854775808) via -1: d_path = 445.53
<1> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]
<1> infranear
_find_paths[6]: advancer id <0>
pseudoedge «11->16» added
<0> new best pn for (11, 10) via 16: d_path = 985.72
<0> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]
<0> infranear
_find_paths[7]: advancer id <0>
pseudoedge «10->16» added
<0> new best pn for (10, 11) via 16: d_path = 909.25
<0> RIGHT _new(8) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]
<0> infranear
_find_paths[8]: advancer id <0>
pseudoedge «8->15» added
<0> new best pn for (8, 9) via 15: d_path = 905.15
<0> LEFT _new(7) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 8, _funnel: [6, 15]
<0> infranear
_find_paths[9]: advancer id <3>
<3> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]
<3> ultrafar
_find_paths[10]: advancer id <3>
<3> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]
<3> inside
pseudoedge «9->15» added
<3> new best pn for (9, 8) via 15: d_path = 1235.41
{3} advancer reached DEAD-END (not portals)
_find_paths[11]: advancer id <2>
<2> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]
<2> inside
_find_paths[12]: advancer id <2>
pseudoedge «17->16» added
<2> new best pn for (17, -9223372036854775808) via 16: d_path = 1113.60
<2> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
<2> ultrafar
_find_paths[13]: advancer id <4>
<4> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
<4> infranear
_find_paths[14]: advancer id <0>
pseudoedge «7->6» added
<0> new best pn for (7, 6) via 6: d_path = 1150.50
<0> RIGHT _new(9) _nearside(15) _farside(6) _apex(-1), _wedge_end: 7 8, _funnel: [6, 15]
<0> infranear
_find_paths[15]: advancer id <1>
pseudoedge «4->5» added
<1> new best pn for (4, 5) via 5: d_path = 1227.41
<1> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]
<1> infranear
_find_paths[16]: advancer id <5>
<5> LEFT _new(3) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]
<5> ultrafar
_find_paths[17]: advancer id <0>
pseudoedge «9->8» added
<0> RIGHT _new(19) _nearside(15) _farside(6) _apex(-1), _wedge_end: 7 9, _funnel: [6, 15]
<0> ultrafar
_find_paths[18]: advancer id <0>
pseudoedge «19->7» added
<0> new best pn for (19, -9223372036854775808) via 7: d_path = 1245.33
<0> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]
<0> inside
_find_paths[19]: advancer id <6>
<6> LEFT _new(19) _nearside(6) _farside(15) _apex(-1), _wedge_end: 7 9, _funnel: [6, 15]
<6> infranear
_find_paths[20]: advancer id <6>
<6> RIGHT _new(26) _nearside(15) _farside(6) _apex(-1), _wedge_end: 19 9, _funnel: [6, 15]
<6> infranear
_find_paths[21]: advancer id <6>
pseudoedge «26->8» added
<6> new best pn for (26, -9223372036854775808) via 8: d_path = 8019.15
{6} advancer reached DEAD-END (root or mesh edge)
_find_paths[22]: advancer id <7>
<7> LEFT _new(26) _nearside(6) _farside(15) _apex(-1), _wedge_end: 19 9, _funnel: [6, 15]
<7> ultrafar
_find_paths[23]: advancer id <7>
<7> RIGHT _new(17) _nearside(9) _farside(26) _apex(8), _wedge_end: 26 9, _funnel: [26, 9]
<7> infranear
_find_paths[24]: advancer id <8>
<8> LEFT _new(17) _nearside(26) _farside(9) _apex(8), _wedge_end: 26 9, _funnel: [26, 9]
<8> ultrafar
_find_paths[25]: advancer id <1>
pseudoedge «3->4» added
<1> new best pn for (3, 1) via 4: d_path = 1791.29
<1> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
<1> infranear
_find_paths[26]: advancer id <1>
pseudoedge «28->5» added
<1> new best pn for (28, -9223372036854775808) via 5: d_path = 7533.80
{1} advancer reached DEAD-END (root or mesh edge)
_find_paths[27]: advancer id <5>
<5> RIGHT _new(25) _nearside(4) _farside(3) _apex(4), _wedge_end: 3 4, _funnel: [3, 4]
<5> inside
_find_paths[28]: advancer id <5>
pseudoedge «25->4» added
<5> new best pn for (25, -9223372036854775808) via 4: d_path = 1383.44
<5> RIGHT _new(24) _nearside(25) _farside(3) _apex(4), _wedge_end: 3 25, _funnel: [3, 25]
<5> inside
_find_paths[29]: advancer id <5>
pseudoedge «24->4» added
<5> new best pn for (24, -9223372036854775808) via 4: d_path = 1581.88
<5> RIGHT _new(23) _nearside(24) _farside(3) _apex(4), _wedge_end: 3 24, _funnel: [3, 24]
<5> infranear
_find_paths[30]: advancer id <9>
<9> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
<9> ultrafar
_find_paths[31]: advancer id <9>
<9> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]
<9> ultrafar
_find_paths[32]: advancer id <9>
pseudoedge «27->3» added
<9> new best pn for (27, -9223372036854775808) via 3: d_path = 9191.09
<9> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<9> inside
_find_paths[33]: advancer id <10>
<10> LEFT _new(25) _nearside(3) _farside(4) _apex(4), _wedge_end: 3 4, _funnel: [3, 4]
<10> inside
_find_paths[34]: advancer id <10>
<10> RIGHT _new(2) _nearside(4) _farside(25) _apex(4), _wedge_end: 25 4, _funnel: [25, 4]
<10> inside
_find_paths[35]: advancer id <11>
<11> LEFT _new(2) _nearside(25) _farside(4) _apex(4), _wedge_end: 25 4, _funnel: [25, 4]
<11> inside
_find_paths[36]: advancer id <5>
pseudoedge «23->24» added
<5> new best pn for (23, -9223372036854775808) via 24: d_path = 1791.88
<5> RIGHT _new(2) _nearside(24) _farside(3) _apex(4), _wedge_end: 3 23, _funnel: [3, 24]
<5> infranear
_find_paths[37]: advancer id <12>
<12> LEFT _new(2) _nearside(3) _farside(24) _apex(4), _wedge_end: 3 23, _funnel: [3, 24]
<12> ultrafar
_find_paths[38]: advancer id <2>
pseudoedge «9->11» added
<2> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
<2> inside
pseudoedge «10->11» added
{2} advancer reached DEAD-END (not portals)
_find_paths[39]: advancer id <4>
<4> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
<4> ultrafar
_find_paths[40]: advancer id <13>
<13> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
<13> infranear
_find_paths[41]: advancer id <4>
pseudoedge «26->11» added
<4> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<4> ultrafar
_find_paths[42]: advancer id <13>
{13} advancer reached DEAD-END (root or mesh edge)
_find_paths[43]: advancer id <14>
<14> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<14> infranear
_find_paths[44]: advancer id <10>
pseudoedge «2->4» added
<10> new best pn for (2, 0) via 4: d_path = 1859.24
<10> LEFT _new(22) _nearside(25) _farside(2) _apex(4), _wedge_end: 25 2, _funnel: [25, 2]
<10> inside
_find_paths[45]: advancer id <10>
pseudoedge «22->4» added
<10> new best pn for (22, -9223372036854775808) via 4: d_path = 1686.27
<10> LEFT _new(23) _nearside(22) _farside(2) _apex(4), _wedge_end: 22 2, _funnel: [22, 2]
<10> infranear
_find_paths[46]: advancer id <10>
pseudoedge «23->22» added
<10> new best pn for (23, -9223372036854775808) via 22: d_path = 1749.51
<10> RIGHT _new(3) _nearside(2) _farside(22) _apex(4), _wedge_end: 23 2, _funnel: [22, 2]
<10> ultrafar
_find_paths[47]: advancer id <15>
<15> LEFT _new(3) _nearside(22) _farside(2) _apex(4), _wedge_end: 23 2, _funnel: [22, 2]
<15> infranear
_find_paths[48]: advancer id <11>
<11> RIGHT _new(21) _nearside(4) _farside(2) _apex(4), _wedge_end: 2 4, _funnel: [2, 4]
<11> inside
_find_paths[49]: advancer id <11>
pseudoedge «21->4» added
<11> new best pn for (21, 1) via 4: d_path = 1773.09
pseudoedge «20->21» added
pseudoedge «7->20» added
<11> RIGHT _new(12) _nearside(21) _farside(2) _apex(4), _wedge_end: 2 21, _funnel: [2, 21]
<11> ultrafar
_find_paths[50]: advancer id <0>
pseudoedge «20->7» added
pseudoedge «21->20» added
pseudoedge «2->21» added
<0> RIGHT _new(6) _nearside(20) _farside(7) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
<0> inside
pseudoedge «6->7» added
{0} advancer reached DEAD-END (not portals)
_find_paths[51]: advancer id <5>
pseudoedge «2->23» added
<5> LEFT _new(1) _nearside(3) _farside(24) _apex(4), _wedge_end: 3 2, _funnel: [3, 24]
<5> ultrafar
_find_paths[52]: advancer id <12>
<12> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]
<12> inside
_find_paths[53]: advancer id <12>
pseudoedge «22->23» added
<12> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]
<12> infranear
_find_paths[54]: advancer id <5>
pseudoedge «1->24» added
<5> new best pn for (1, 0) via 24: d_path = 2131.61
<5> RIGHT _new(0) _nearside(23) _farside(1) _apex(24), _wedge_end: 1 2, _funnel: [1, 23]
<5> inside
pseudoedge «0->24» added
<5> new best pn for (0, 1) via 24: d_path = 2516.89
{5} advancer reached DEAD-END (not portals)
_find_paths[55]: advancer id <10>
pseudoedge «3->23» added
<10> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]
<10> inside
_find_paths[56]: advancer id <10>
pseudoedge «24->23» added
<10> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]
<10> infranear
_find_paths[57]: advancer id <15>
<15> LEFT _new(1) _nearside(22) _farside(2) _apex(4), _wedge_end: 3 2, _funnel: [22, 2]
<15> infranear
_find_paths[58]: advancer id <15>
pseudoedge «1->22» added
<15> new best pn for (1, 0) via 22: d_path = 2123.86
<15> RIGHT _new(0) _nearside(2) _farside(22) _apex(4), _wedge_end: 1 2, _funnel: [22, 2]
<15> inside
pseudoedge «0->4» added
<15> new best pn for (0, 1) via 4: d_path = 2441.44
{15} advancer reached DEAD-END (not portals)
_find_paths[59]: advancer id <10>
pseudoedge «25->24» added
{10} advancer revisited triangle
_find_paths[60]: advancer id <12>
pseudoedge «25->22» added
<12> RIGHT _new(4) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 25, _funnel: [2, 22]
<12> infranear
_find_paths[61]: advancer id <20>
<20> LEFT _new(4) _nearside(2) _farside(22) _apex(23), _wedge_end: 2 25, _funnel: [2, 22]
<20> ultrafar
_find_paths[62]: advancer id <12>
pseudoedge «4->22» added
<12> RIGHT _new(21) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 4, _funnel: [2, 22]
<12> infranear
_find_paths[63]: advancer id <20>
{20} advancer revisited triangle
_find_paths[64]: advancer id <9>
pseudoedge «1->3» added
<9> new best pn for (1, 3) via 3: d_path = 2344.26
<9> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<9> infranear
_find_paths[65]: advancer id <21>
<21> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<21> ultrafar
_find_paths[66]: advancer id <7>
pseudoedge «17->9» added
{7} advancer reached DEAD-END (root or mesh edge)
_find_paths[67]: advancer id <8>
<8> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<8> inside
_find_paths[68]: advancer id <8>
pseudoedge «11->9» added
<8> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
<8> ultrafar
_find_paths[69]: advancer id <22>
<22> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<22> inside
_find_paths[70]: advancer id <22>
<22> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
<22> inside
pseudoedge «10->9» added
{22} advancer reached DEAD-END (not portals)
_find_paths[71]: advancer id <12>
pseudoedge «21->22» added
pseudoedge «20->21» added
pseudoedge «7->20» added
<12> RIGHT _new(12) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 21, _funnel: [2, 22]
<12> ultrafar
_find_paths[72]: advancer id <11>
pseudoedge «12->2» added
<11> new best pn for (12, -9223372036854775808) via 2: d_path = 2546.69
<11> LEFT _new(0) _nearside(2) _farside(12) _apex(2), _wedge_end: 2 12, _funnel: [2, 12]
<11> inside
_find_paths[73]: advancer id <11>
pseudoedge «0->2» added
<11> LEFT _new(1) _nearside(0) _farside(12) _apex(2), _wedge_end: 0 12, _funnel: [0, 12]
<11> infranear
_find_paths[74]: advancer id <18>
<18> RIGHT _new(2) _nearside(2) _farside(21) _apex(21), _wedge_end: 21 2, _funnel: [21, 2]
<18> inside
_find_paths[75]: advancer id <19>
<19> LEFT _new(2) _nearside(2) _farside(21) _apex(21), _wedge_end: 2 21, _funnel: [2, 21]
<19> inside
_find_paths[76]: advancer id <18>
<18> LEFT _new(4) _nearside(21) _farside(2) _apex(21), _wedge_end: 21 2, _funnel: [21, 2]
<18> inside
_find_paths[77]: advancer id <19>
<19> RIGHT _new(12) _nearside(21) _farside(2) _apex(21), _wedge_end: 2 21, _funnel: [2, 21]
<19> inside
_find_paths[78]: advancer id <18>
pseudoedge «4->21» added
<18> RIGHT _new(25) _nearside(2) _farside(4) _apex(21), _wedge_end: 4 2, _funnel: [4, 2]
<18> inside
_find_paths[79]: advancer id <25>
<25> LEFT _new(25) _nearside(4) _farside(2) _apex(21), _wedge_end: 4 2, _funnel: [4, 2]
<25> inside
_find_paths[80]: advancer id <18>
pseudoedge «25->21» added
<18> RIGHT _new(3) _nearside(25) _farside(4) _apex(21), _wedge_end: 4 25, _funnel: [4, 25]
<18> infranear
_find_paths[81]: advancer id <25>
<25> LEFT _new(22) _nearside(25) _farside(2) _apex(21), _wedge_end: 25 2, _funnel: [25, 2]
<25> inside
_find_paths[82]: advancer id <26>
<26> LEFT _new(3) _nearside(4) _farside(25) _apex(21), _wedge_end: 4 25, _funnel: [4, 25]
<26> ultrafar
_find_paths[83]: advancer id <25>
pseudoedge «22->21» added
<25> LEFT _new(23) _nearside(22) _farside(2) _apex(21), _wedge_end: 22 2, _funnel: [22, 2]
<25> infranear
_find_paths[84]: advancer id <16>
<16> RIGHT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<16> inside
_find_paths[85]: advancer id <17>
<17> LEFT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<17> inside
_find_paths[86]: advancer id <16>
<16> LEFT _new(19) _nearside(20) _farside(7) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<16> inside
_find_paths[87]: advancer id <17>
<17> RIGHT _new(6) _nearside(20) _farside(7) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<17> inside
pseudoedge «6->20» added
{17} advancer reached DEAD-END (not portals)
_find_paths[88]: advancer id <25>
pseudoedge «23->22» added
<25> RIGHT _new(3) _nearside(2) _farside(22) _apex(21), _wedge_end: 23 2, _funnel: [22, 2]
<25> ultrafar
_find_paths[89]: advancer id <27>
<27> LEFT _new(3) _nearside(22) _farside(2) _apex(21), _wedge_end: 23 2, _funnel: [22, 2]
<27> infranear
_find_paths[90]: advancer id <16>
pseudoedge «19->20» added
<16> RIGHT _new(9) _nearside(7) _farside(19) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<16> infranear
_find_paths[91]: advancer id <28>
<28> LEFT _new(9) _nearside(19) _farside(7) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<28> ultrafar
_find_paths[92]: advancer id <12>
pseudoedge «12->2» added
<12> LEFT _new(0) _nearside(2) _farside(12) _apex(2), _wedge_end: 2 12, _funnel: [2, 12]
<12> inside
_find_paths[93]: advancer id <12>
pseudoedge «0->2» added
<12> LEFT _new(1) _nearside(0) _farside(12) _apex(2), _wedge_end: 0 12, _funnel: [0, 12]
<12> infranear
_find_paths[94]: advancer id <8>
pseudoedge «16->11» added
{8} advancer revisited triangle
_find_paths[95]: advancer id <9>
pseudoedge «12->1» added
{9} advancer reached DEAD-END (root or mesh edge)
_find_paths[96]: advancer id <21>
<21> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<21> inside
_find_paths[97]: advancer id <21>
pseudoedge «0->1» added
<21> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<21> infranear
_find_paths[98]: advancer id <4>
pseudoedge «19->9» added
<4> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
<4> inside
_find_paths[99]: advancer id <4>
pseudoedge «7->9» added
<4> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]
<4> inside
_find_paths[100]: advancer id <4>
pseudoedge «8->9» added
<4> RIGHT _new(6) _nearside(7) _farside(8) _apex(9), _wedge_end: 8 7, _funnel: [8, 7]
<4> ultrafar
_find_paths[101]: advancer id <4>
pseudoedge «6->8» added
<4> RIGHT _new(10) _nearside(6) _farside(8) _apex(8), _wedge_end: 8 6, _funnel: [8, 6]
<4> inside
_find_paths[102]: advancer id <30>
<30> LEFT _new(10) _nearside(8) _farside(6) _apex(8), _wedge_end: 8 6, _funnel: [8, 6]
<30> inside
_find_paths[103]: advancer id <4>
pseudoedge «10->8» added
<4> RIGHT _new(9) _nearside(10) _farside(8) _apex(8), _wedge_end: 8 10, _funnel: [8, 10]
<4> inside
pseudoedge «9->8» added
{4} advancer reached DEAD-END (not portals)
_find_paths[104]: advancer id <30>
<30> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]
<30> inside
_find_paths[105]: advancer id <14>
{14} advancer reached DEAD-END (root or mesh edge)
_find_paths[106]: advancer id <29>
<29> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
<29> inside
_find_paths[107]: advancer id <29>
<29> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]
<29> ultrafar
_find_paths[108]: advancer id <11>
pseudoedge «1->0» added
<11> RIGHT _new(27) _nearside(12) _farside(0) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]
<11> ultrafar
_find_paths[109]: advancer id <31>
<31> LEFT _new(27) _nearside(0) _farside(12) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]
<31> infranear
_find_paths[110]: advancer id <11>
pseudoedge «27->0» added
<11> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
<11> infranear
_find_paths[111]: advancer id <31>
{31} advancer reached DEAD-END (root or mesh edge)
_find_paths[112]: advancer id <18>
pseudoedge «3->25» added
<18> RIGHT _new(14) _nearside(25) _farside(4) _apex(21), _wedge_end: 4 3, _funnel: [4, 25]
<18> ultrafar
_find_paths[113]: advancer id <26>
<26> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<26> inside
_find_paths[114]: advancer id <26>
pseudoedge «24->25» added
<26> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<26> infranear
_find_paths[115]: advancer id <26>
pseudoedge «23->24» added
<26> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<26> infranear
_find_paths[116]: advancer id <33>
<33> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<33> ultrafar
_find_paths[117]: advancer id <32>
<32> LEFT _new(14) _nearside(4) _farside(25) _apex(21), _wedge_end: 4 3, _funnel: [4, 25]
<32> infranear
_find_paths[118]: advancer id <25>
pseudoedge «3->23» added
<25> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]
<25> inside
_find_paths[119]: advancer id <25>
pseudoedge «24->23» added
<25> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]
<25> infranear
_find_paths[120]: advancer id <27>
<27> LEFT _new(1) _nearside(22) _farside(2) _apex(21), _wedge_end: 3 2, _funnel: [22, 2]
<27> inside
_find_paths[121]: advancer id <27>
pseudoedge «1->21» added
<27> RIGHT _new(0) _nearside(2) _farside(1) _apex(21), _wedge_end: 1 2, _funnel: [1, 2]
<27> infranear
pseudoedge «0->2» added
{27} advancer reached DEAD-END (not portals)
_find_paths[122]: advancer id <25>
pseudoedge «25->24» added
<25> RIGHT _new(4) _nearside(3) _farside(24) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]
<25> ultrafar
_find_paths[123]: advancer id <34>
<34> LEFT _new(4) _nearside(24) _farside(3) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]
<34> infranear
_find_paths[124]: advancer id <12>
pseudoedge «1->0» added
<12> RIGHT _new(27) _nearside(12) _farside(0) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]
<12> ultrafar
_find_paths[125]: advancer id <35>
<35> LEFT _new(27) _nearside(0) _farside(12) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]
<35> infranear
_find_paths[126]: advancer id <12>
pseudoedge «27->0» added
<12> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
<12> infranear
_find_paths[127]: advancer id <35>
{35} advancer reached DEAD-END (root or mesh edge)
_find_paths[128]: advancer id <30>
pseudoedge «11->8» added
{30} advancer revisited triangle
_find_paths[129]: advancer id <19>
pseudoedge «12->21» added
<19> LEFT _new(0) _nearside(2) _farside(12) _apex(21), _wedge_end: 2 12, _funnel: [2, 12]
<19> inside
_find_paths[130]: advancer id <19>
pseudoedge «0->21» added
<19> LEFT _new(1) _nearside(0) _farside(12) _apex(21), _wedge_end: 0 12, _funnel: [0, 12]
<19> infranear
_find_paths[131]: advancer id <25>
pseudoedge «4->24» added
{25} advancer revisited triangle
_find_paths[132]: advancer id <34>
<34> RIGHT _new(14) _nearside(3) _farside(24) _apex(23), _wedge_end: 4 3, _funnel: [24, 3]
<34> ultrafar
_find_paths[133]: advancer id <36>
<36> LEFT _new(14) _nearside(24) _farside(3) _apex(23), _wedge_end: 4 3, _funnel: [24, 3]
<36> infranear
_find_paths[134]: advancer id <26>
pseudoedge «2->23» added
<26> LEFT _new(1) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 2, _funnel: [3, 24]
<26> ultrafar
_find_paths[135]: advancer id <33>
<33> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]
<33> inside
_find_paths[136]: advancer id <33>
pseudoedge «22->23» added
<33> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]
<33> infranear
_find_paths[137]: advancer id <23>
<23> RIGHT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<23> inside
_find_paths[138]: advancer id <24>
<24> LEFT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<24> inside
_find_paths[139]: advancer id <23>
<23> LEFT _new(19) _nearside(20) _farside(7) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<23> inside
_find_paths[140]: advancer id <24>
<24> RIGHT _new(6) _nearside(20) _farside(7) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<24> inside
pseudoedge «6->20» added
{24} advancer reached DEAD-END (not portals)
_find_paths[141]: advancer id <23>
pseudoedge «19->20» added
<23> RIGHT _new(9) _nearside(7) _farside(19) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<23> infranear
_find_paths[142]: advancer id <37>
<37> LEFT _new(9) _nearside(19) _farside(7) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<37> ultrafar
_find_paths[143]: advancer id <33>
pseudoedge «25->22» added
{33} advancer revisited triangle
_find_paths[144]: advancer id <21>
pseudoedge «2->0» added
<21> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<21> ultrafar
_find_paths[145]: advancer id <18>
pseudoedge «14->4» added
<18> LEFT _new(5) _nearside(4) _farside(14) _apex(4), _wedge_end: 4 14, _funnel: [4, 14]
<18> inside
_find_paths[146]: advancer id <18>
pseudoedge «5->4» added
<18> RIGHT _new(15) _nearside(14) _farside(5) _apex(4), _wedge_end: 5 14, _funnel: [5, 14]
<18> ultrafar
_find_paths[147]: advancer id <32>
<32> RIGHT _new(28) _nearside(25) _farside(4) _apex(21), _wedge_end: 14 3, _funnel: [4, 25]
<32> ultrafar
_find_paths[148]: advancer id <38>
<38> LEFT _new(28) _nearside(4) _farside(25) _apex(21), _wedge_end: 14 3, _funnel: [4, 25]
<38> infranear
_find_paths[149]: advancer id <32>
pseudoedge «28->4» added
{32} advancer reached DEAD-END (root or mesh edge)
_find_paths[150]: advancer id <38>
<38> LEFT _new(27) _nearside(4) _farside(25) _apex(21), _wedge_end: 28 3, _funnel: [4, 25]
<38> ultrafar
_find_paths[151]: advancer id <38>
pseudoedge «27->3» added
<38> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<38> inside
_find_paths[152]: advancer id <11>
pseudoedge «3->1» added
<11> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]
<11> ultrafar
_find_paths[153]: advancer id <11>
pseudoedge «28->1» added
<11> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<11> ultrafar
_find_paths[154]: advancer id <39>
<39> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<39> infranear
_find_paths[155]: advancer id <38>
pseudoedge «1->3» added
<38> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<38> infranear
_find_paths[156]: advancer id <40>
<40> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<40> ultrafar
_find_paths[157]: advancer id <19>
pseudoedge «1->0» added
<19> RIGHT _new(27) _nearside(12) _farside(0) _apex(21), _wedge_end: 1 12, _funnel: [0, 12]
<19> inside
_find_paths[158]: advancer id <41>
<41> LEFT _new(27) _nearside(0) _farside(12) _apex(21), _wedge_end: 1 12, _funnel: [0, 12]
<41> inside
_find_paths[159]: advancer id <19>
pseudoedge «27->21» added
<19> LEFT _new(3) _nearside(0) _farside(27) _apex(21), _wedge_end: 1 27, _funnel: [0, 27]
<19> infranear
_find_paths[160]: advancer id <41>
{41} advancer reached DEAD-END (root or mesh edge)
_find_paths[161]: advancer id <16>
pseudoedge «9->7» added
<16> RIGHT _new(26) _nearside(7) _farside(19) _apex(20), _wedge_end: 19 9, _funnel: [19, 7]
<16> infranear
_find_paths[162]: advancer id <28>
<28> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
<28> inside
_find_paths[163]: advancer id <28>
pseudoedge «8->7» added
<28> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]
<28> inside
_find_paths[164]: advancer id <28>
pseudoedge «6->7» added
<28> RIGHT _new(10) _nearside(6) _farside(8) _apex(7), _wedge_end: 8 6, _funnel: [8, 6]
<28> inside
_find_paths[165]: advancer id <43>
<43> LEFT _new(10) _nearside(8) _farside(6) _apex(7), _wedge_end: 8 6, _funnel: [8, 6]
<43> inside
_find_paths[166]: advancer id <28>
pseudoedge «10->7» added
<28> RIGHT _new(9) _nearside(10) _farside(8) _apex(7), _wedge_end: 8 10, _funnel: [8, 10]
<28> ultrafar
pseudoedge «9->8» added
{28} advancer reached DEAD-END (not portals)
_find_paths[167]: advancer id <43>
<43> LEFT _new(11) _nearside(10) _farside(6) _apex(7), _wedge_end: 10 6, _funnel: [10, 6]
<43> inside
_find_paths[168]: advancer id <42>
<42> LEFT _new(26) _nearside(19) _farside(7) _apex(20), _wedge_end: 19 9, _funnel: [19, 7]
<42> ultrafar
_find_paths[169]: advancer id <16>
pseudoedge «26->7» added
{16} advancer reached DEAD-END (root or mesh edge)
_find_paths[170]: advancer id <42>
<42> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<42> infranear
_find_paths[171]: advancer id <44>
<44> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<44> ultrafar
_find_paths[172]: advancer id <29>
pseudoedge «20->7» added
pseudoedge «21->20» added
pseudoedge «2->21» added
<29> RIGHT _new(6) _nearside(20) _farside(7) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
<29> inside
pseudoedge «6->7» added
{29} advancer reached DEAD-END (not portals)
_find_paths[173]: advancer id <12>
pseudoedge «3->1» added
<12> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]
<12> ultrafar
_find_paths[174]: advancer id <12>
pseudoedge «28->1» added
<12> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<12> ultrafar
_find_paths[175]: advancer id <47>
<47> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<47> infranear
_find_paths[176]: advancer id <21>
pseudoedge «21->0» added
pseudoedge «20->21» added
pseudoedge «7->20» added
<21> LEFT _new(4) _nearside(21) _farside(2) _apex(0), _wedge_end: 21 2, _funnel: [21, 2]
<21> ultrafar
_find_paths[177]: advancer id <43>
pseudoedge «11->7» added
<43> RIGHT _new(16) _nearside(6) _farside(11) _apex(7), _wedge_end: 11 6, _funnel: [11, 6]
<43> infranear
_find_paths[178]: advancer id <43>
pseudoedge «16->6» added
<43> RIGHT _new(17) _nearside(6) _farside(11) _apex(7), _wedge_end: 11 16, _funnel: [11, 6]
<43> inside
_find_paths[179]: advancer id <50>
<50> LEFT _new(16) _nearside(11) _farside(6) _apex(7), _wedge_end: 11 6, _funnel: [11, 6]
<50> ultrafar
_find_paths[180]: advancer id <50>
<50> LEFT _new(15) _nearside(16) _farside(6) _apex(6), _wedge_end: 16 6, _funnel: [16, 6]
<50> inside
_find_paths[181]: advancer id <21>
pseudoedge «4->2» added
<21> RIGHT _new(25) _nearside(2) _farside(4) _apex(2), _wedge_end: 4 2, _funnel: [4, 2]
<21> inside
_find_paths[182]: advancer id <21>
pseudoedge «25->2» added
<21> RIGHT _new(3) _nearside(25) _farside(4) _apex(2), _wedge_end: 4 25, _funnel: [4, 25]
<21> infranear
_find_paths[183]: advancer id <52>
<52> LEFT _new(3) _nearside(4) _farside(25) _apex(2), _wedge_end: 4 25, _funnel: [4, 25]
<52> ultrafar
_find_paths[184]: advancer id <51>
<51> LEFT _new(25) _nearside(4) _farside(2) _apex(2), _wedge_end: 4 2, _funnel: [4, 2]
<51> inside
_find_paths[185]: advancer id <51>
<51> LEFT _new(22) _nearside(25) _farside(2) _apex(2), _wedge_end: 25 2, _funnel: [25, 2]
<51> inside
_find_paths[186]: advancer id <51>
pseudoedge «22->2» added
<51> LEFT _new(23) _nearside(22) _farside(2) _apex(2), _wedge_end: 22 2, _funnel: [22, 2]
<51> inside
_find_paths[187]: advancer id <51>
pseudoedge «23->2» added
<51> RIGHT _new(3) _nearside(2) _farside(23) _apex(2), _wedge_end: 23 2, _funnel: [23, 2]
<51> inside
_find_paths[188]: advancer id <53>
<53> LEFT _new(3) _nearside(23) _farside(2) _apex(2), _wedge_end: 23 2, _funnel: [23, 2]
<53> inside
_find_paths[189]: advancer id <51>
pseudoedge «3->2» added
<51> LEFT _new(24) _nearside(23) _farside(3) _apex(2), _wedge_end: 23 3, _funnel: [23, 3]
<51> infranear
_find_paths[190]: advancer id <51>
pseudoedge «24->23» added
<51> LEFT _new(25) _nearside(23) _farside(3) _apex(2), _wedge_end: 24 3, _funnel: [23, 3]
<51> infranear
_find_paths[191]: advancer id <40>
pseudoedge «12->1» added
<40> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<40> inside
_find_paths[192]: advancer id <40>
pseudoedge «0->1» added
<40> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<40> infranear
_find_paths[193]: advancer id <51>
pseudoedge «25->24» added
<51> RIGHT _new(4) _nearside(3) _farside(23) _apex(2), _wedge_end: 25 3, _funnel: [23, 3]
<51> ultrafar
_find_paths[194]: advancer id <54>
<54> LEFT _new(4) _nearside(23) _farside(3) _apex(2), _wedge_end: 25 3, _funnel: [23, 3]
<54> infranear
_find_paths[195]: advancer id <43>
pseudoedge «17->7» added
<43> RIGHT _new(9) _nearside(17) _farside(11) _apex(7), _wedge_end: 11 17, _funnel: [11, 17]
<43> ultrafar
_find_paths[196]: advancer id <55>
<55> LEFT _new(9) _nearside(11) _farside(17) _apex(7), _wedge_end: 11 17, _funnel: [11, 17]
<55> infranear
_find_paths[197]: advancer id <34>
pseudoedge «14->4» added
<34> LEFT _new(5) _nearside(4) _farside(14) _apex(4), _wedge_end: 4 14, _funnel: [4, 14]
<34> inside
_find_paths[198]: advancer id <34>
pseudoedge «5->4» added
<34> RIGHT _new(15) _nearside(14) _farside(5) _apex(4), _wedge_end: 5 14, _funnel: [5, 14]
<34> ultrafar
_find_paths[199]: advancer id <36>
<36> RIGHT _new(28) _nearside(3) _farside(24) _apex(23), _wedge_end: 14 3, _funnel: [24, 3]
<36> ultrafar
_find_paths[200]: advancer id <56>
<56> LEFT _new(28) _nearside(24) _farside(3) _apex(23), _wedge_end: 14 3, _funnel: [24, 3]
<56> infranear
_find_paths[201]: advancer id <36>
pseudoedge «28->24» added
{36} advancer reached DEAD-END (root or mesh edge)
_find_paths[202]: advancer id <56>
<56> LEFT _new(27) _nearside(24) _farside(3) _apex(23), _wedge_end: 28 3, _funnel: [24, 3]
<56> ultrafar
_find_paths[203]: advancer id <56>
pseudoedge «27->3» added
<56> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<56> inside
_find_paths[204]: advancer id <56>
pseudoedge «1->3» added
<56> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<56> infranear
_find_paths[205]: advancer id <57>
<57> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<57> ultrafar
_find_paths[206]: advancer id <57>
pseudoedge «12->1» added
<57> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<57> inside
_find_paths[207]: advancer id <57>
pseudoedge «0->1» added
<57> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<57> infranear
_find_paths[208]: advancer id <19>
pseudoedge «3->1» added
<19> RIGHT _new(28) _nearside(27) _farside(0) _apex(21), _wedge_end: 3 27, _funnel: [0, 27]
<19> ultrafar
_find_paths[209]: advancer id <19>
pseudoedge «28->1» added
<19> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<19> ultrafar
_find_paths[210]: advancer id <58>
<58> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<58> infranear
_find_paths[211]: advancer id <45>
<45> RIGHT _new(2) _nearside(2) _farside(21) _apex(21), _wedge_end: 21 2, _funnel: [21, 2]
<45> inside
_find_paths[212]: advancer id <46>
<46> LEFT _new(2) _nearside(2) _farside(21) _apex(21), _wedge_end: 2 21, _funnel: [2, 21]
<46> inside
_find_paths[213]: advancer id <45>
<45> LEFT _new(4) _nearside(21) _farside(2) _apex(21), _wedge_end: 21 2, _funnel: [21, 2]
<45> inside
_find_paths[214]: advancer id <46>
<46> RIGHT _new(12) _nearside(21) _farside(2) _apex(21), _wedge_end: 2 21, _funnel: [2, 21]
<46> inside
_find_paths[215]: advancer id <45>
pseudoedge «4->21» added
<45> RIGHT _new(25) _nearside(2) _farside(4) _apex(21), _wedge_end: 4 2, _funnel: [4, 2]
<45> inside
_find_paths[216]: advancer id <59>
<59> LEFT _new(25) _nearside(4) _farside(2) _apex(21), _wedge_end: 4 2, _funnel: [4, 2]
<59> inside
_find_paths[217]: advancer id <45>
pseudoedge «25->21» added
<45> RIGHT _new(3) _nearside(25) _farside(4) _apex(21), _wedge_end: 4 25, _funnel: [4, 25]
<45> infranear
_find_paths[218]: advancer id <59>
<59> LEFT _new(22) _nearside(25) _farside(2) _apex(21), _wedge_end: 25 2, _funnel: [25, 2]
<59> inside
_find_paths[219]: advancer id <60>
<60> LEFT _new(3) _nearside(4) _farside(25) _apex(21), _wedge_end: 4 25, _funnel: [4, 25]
<60> ultrafar
_find_paths[220]: advancer id <51>
pseudoedge «4->24» added
{51} advancer revisited triangle
_find_paths[221]: advancer id <54>
{54} advancer revisited triangle
_find_paths[222]: advancer id <59>
pseudoedge «22->21» added
<59> LEFT _new(23) _nearside(22) _farside(2) _apex(21), _wedge_end: 22 2, _funnel: [22, 2]
<59> infranear
_find_paths[223]: advancer id <23>
pseudoedge «9->7» added
<23> RIGHT _new(26) _nearside(7) _farside(19) _apex(20), _wedge_end: 19 9, _funnel: [19, 7]
<23> infranear
_find_paths[224]: advancer id <37>
<37> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
<37> inside
_find_paths[225]: advancer id <37>
pseudoedge «8->7» added
<37> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]
<37> inside
_find_paths[226]: advancer id <37>
pseudoedge «6->7» added
<37> RIGHT _new(10) _nearside(6) _farside(8) _apex(7), _wedge_end: 8 6, _funnel: [8, 6]
<37> inside
_find_paths[227]: advancer id <62>
<62> LEFT _new(10) _nearside(8) _farside(6) _apex(7), _wedge_end: 8 6, _funnel: [8, 6]
<62> inside
_find_paths[228]: advancer id <62>
pseudoedge «10->7» added
<62> LEFT _new(11) _nearside(10) _farside(6) _apex(7), _wedge_end: 10 6, _funnel: [10, 6]
<62> inside
_find_paths[229]: advancer id <61>
<61> LEFT _new(26) _nearside(19) _farside(7) _apex(20), _wedge_end: 19 9, _funnel: [19, 7]
<61> ultrafar
_find_paths[230]: advancer id <61>
pseudoedge «26->7» added
<61> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<61> infranear
_find_paths[231]: advancer id <63>
<63> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<63> ultrafar
_find_paths[232]: advancer id <59>
pseudoedge «23->22» added
<59> RIGHT _new(3) _nearside(2) _farside(22) _apex(21), _wedge_end: 23 2, _funnel: [22, 2]
<59> ultrafar
_find_paths[233]: advancer id <64>
<64> LEFT _new(3) _nearside(22) _farside(2) _apex(21), _wedge_end: 23 2, _funnel: [22, 2]
<64> infranear
_find_paths[234]: advancer id <21>
pseudoedge «3->25» added
{21} advancer revisited triangle
_find_paths[235]: advancer id <52>
<52> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<52> inside
_find_paths[236]: advancer id <52>
pseudoedge «24->25» added
<52> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<52> infranear
_find_paths[237]: advancer id <52>
pseudoedge «23->24» added
<52> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<52> infranear
_find_paths[238]: advancer id <65>
<65> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<65> ultrafar
_find_paths[239]: advancer id <65>
pseudoedge «2->23» added
<65> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]
<65> inside
_find_paths[240]: advancer id <65>
pseudoedge «22->23» added
<65> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]
<65> infranear
_find_paths[241]: advancer id <62>
pseudoedge «11->7» added
<62> RIGHT _new(16) _nearside(6) _farside(11) _apex(7), _wedge_end: 11 6, _funnel: [11, 6]
<62> infranear
_find_paths[242]: advancer id <62>
pseudoedge «16->6» added
<62> RIGHT _new(17) _nearside(6) _farside(11) _apex(7), _wedge_end: 11 16, _funnel: [11, 6]
<62> inside
_find_paths[243]: advancer id <66>
<66> LEFT _new(16) _nearside(11) _farside(6) _apex(7), _wedge_end: 11 6, _funnel: [11, 6]
<66> ultrafar
_find_paths[244]: advancer id <66>
<66> LEFT _new(15) _nearside(16) _farside(6) _apex(6), _wedge_end: 16 6, _funnel: [16, 6]
<66> inside
_find_paths[245]: advancer id <42>
pseudoedge «17->9» added
{42} advancer reached DEAD-END (root or mesh edge)
_find_paths[246]: advancer id <44>
<44> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<44> inside
_find_paths[247]: advancer id <44>
pseudoedge «11->9» added
<44> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
<44> ultrafar
_find_paths[248]: advancer id <67>
<67> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<67> inside
_find_paths[249]: advancer id <67>
<67> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
<67> inside
pseudoedge «10->9» added
{67} advancer reached DEAD-END (not portals)
_find_paths[250]: advancer id <40>
pseudoedge «2->0» added
<40> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<40> ultrafar
_find_paths[251]: advancer id <57>
pseudoedge «2->0» added
<57> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<57> ultrafar
_find_paths[252]: advancer id <45>
pseudoedge «3->25» added
<45> RIGHT _new(14) _nearside(25) _farside(4) _apex(21), _wedge_end: 4 3, _funnel: [4, 25]
<45> ultrafar
_find_paths[253]: advancer id <60>
<60> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<60> inside
_find_paths[254]: advancer id <60>
pseudoedge «24->25» added
<60> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<60> infranear
_find_paths[255]: advancer id <68>
<68> LEFT _new(14) _nearside(4) _farside(25) _apex(21), _wedge_end: 4 3, _funnel: [4, 25]
<68> infranear
_find_paths[256]: advancer id <65>
pseudoedge «25->22» added
{65} advancer revisited triangle
_find_paths[257]: advancer id <62>
pseudoedge «17->7» added
<62> RIGHT _new(9) _nearside(17) _farside(11) _apex(7), _wedge_end: 11 17, _funnel: [11, 17]
<62> ultrafar
_find_paths[258]: advancer id <69>
<69> LEFT _new(9) _nearside(11) _farside(17) _apex(7), _wedge_end: 11 17, _funnel: [11, 17]
<69> infranear
_find_paths[259]: advancer id <48>
<48> RIGHT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<48> inside
_find_paths[260]: advancer id <49>
<49> LEFT _new(7) _nearside(7) _farside(20) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<49> inside
_find_paths[261]: advancer id <48>
<48> LEFT _new(19) _nearside(20) _farside(7) _apex(20), _wedge_end: 20 7, _funnel: [20, 7]
<48> inside
_find_paths[262]: advancer id <49>
<49> RIGHT _new(6) _nearside(20) _farside(7) _apex(20), _wedge_end: 7 20, _funnel: [7, 20]
<49> inside
pseudoedge «6->20» added
{49} advancer reached DEAD-END (not portals)
_find_paths[263]: advancer id <43>
pseudoedge «9->11» added
<43> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
<43> inside
pseudoedge «10->11» added
{43} advancer reached DEAD-END (not portals)
_find_paths[264]: advancer id <55>
<55> RIGHT _new(26) _nearside(17) _farside(11) _apex(7), _wedge_end: 9 17, _funnel: [11, 17]
<55> ultrafar
_find_paths[265]: advancer id <70>
<70> LEFT _new(26) _nearside(11) _farside(17) _apex(7), _wedge_end: 9 17, _funnel: [11, 17]
<70> infranear
_find_paths[266]: advancer id <55>
pseudoedge «26->11» added
<55> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<55> ultrafar
_find_paths[267]: advancer id <71>
<71> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<71> infranear
_find_paths[268]: advancer id <48>
pseudoedge «19->20» added
<48> RIGHT _new(9) _nearside(7) _farside(19) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<48> infranear
_find_paths[269]: advancer id <72>
<72> LEFT _new(9) _nearside(19) _farside(7) _apex(20), _wedge_end: 19 7, _funnel: [19, 7]
<72> ultrafar
_find_paths[270]: advancer id <46>
pseudoedge «12->21» added
<46> LEFT _new(0) _nearside(2) _farside(12) _apex(21), _wedge_end: 2 12, _funnel: [2, 12]
<46> inside
_find_paths[271]: advancer id <46>
pseudoedge «0->21» added
<46> LEFT _new(1) _nearside(0) _farside(12) _apex(21), _wedge_end: 0 12, _funnel: [0, 12]
<46> infranear
_find_paths[272]: advancer id <11>
pseudoedge «14->3» added
{11} advancer revisited triangle
_find_paths[273]: advancer id <39>
{39} advancer reached DEAD-END (root or mesh edge)
_find_paths[274]: advancer id <44>
pseudoedge «16->11» added
<44> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<44> inside
_find_paths[275]: advancer id <73>
<73> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<73> inside
_find_paths[276]: advancer id <45>
pseudoedge «14->4» added
<45> LEFT _new(5) _nearside(4) _farside(14) _apex(4), _wedge_end: 4 14, _funnel: [4, 14]
<45> inside
_find_paths[277]: advancer id <45>
pseudoedge «5->4» added
<45> RIGHT _new(15) _nearside(14) _farside(5) _apex(4), _wedge_end: 5 14, _funnel: [5, 14]
<45> ultrafar
_find_paths[278]: advancer id <12>
pseudoedge «14->3» added
{12} advancer revisited triangle
_find_paths[279]: advancer id <47>
{47} advancer reached DEAD-END (root or mesh edge)
_find_paths[280]: advancer id <44>
pseudoedge «6->11» added
<44> LEFT _new(15) _nearside(16) _farside(6) _apex(11), _wedge_end: 16 6, _funnel: [16, 6]
<44> infranear
_find_paths[281]: advancer id <73>
<73> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]
<73> inside
_find_paths[282]: advancer id <73>
pseudoedge «10->11» added
<73> RIGHT _new(8) _nearside(10) _farside(6) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
<73> inside
_find_paths[283]: advancer id <74>
<74> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
<74> inside
_find_paths[284]: advancer id <61>
pseudoedge «17->9» added
{61} advancer reached DEAD-END (root or mesh edge)
_find_paths[285]: advancer id <63>
<63> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<63> inside
_find_paths[286]: advancer id <63>
pseudoedge «11->9» added
<63> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
<63> ultrafar
_find_paths[287]: advancer id <75>
<75> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<75> inside
_find_paths[288]: advancer id <73>
pseudoedge «8->11» added
<73> LEFT _new(7) _nearside(6) _farside(8) _apex(11), _wedge_end: 6 8, _funnel: [6, 8]
<73> inside
_find_paths[289]: advancer id <69>
pseudoedge «9->11» added
<69> RIGHT _new(26) _nearside(17) _farside(11) _apex(7), _wedge_end: 9 17, _funnel: [11, 17]
<69> ultrafar
_find_paths[290]: advancer id <76>
<76> LEFT _new(26) _nearside(11) _farside(17) _apex(7), _wedge_end: 9 17, _funnel: [11, 17]
<76> infranear
_find_paths[291]: advancer id <69>
pseudoedge «26->11» added
<69> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<69> ultrafar
_find_paths[292]: advancer id <77>
<77> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<77> infranear
_find_paths[293]: advancer id <19>
pseudoedge «14->3» added
<19> RIGHT _new(4) _nearside(14) _farside(3) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
<19> inside
_find_paths[294]: advancer id <19>
pseudoedge «4->3» added
<19> RIGHT _new(25) _nearside(4) _farside(3) _apex(3), _wedge_end: 3 4, _funnel: [3, 4]
<19> inside
_find_paths[295]: advancer id <79>
<79> LEFT _new(25) _nearside(3) _farside(4) _apex(3), _wedge_end: 3 4, _funnel: [3, 4]
<79> inside
_find_paths[296]: advancer id <78>
<78> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
<78> inside
_find_paths[297]: advancer id <63>
pseudoedge «16->11» added
<63> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<63> inside
_find_paths[298]: advancer id <80>
<80> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<80> inside
_find_paths[299]: advancer id <73>
pseudoedge «7->11» added
<73> RIGHT _new(9) _nearside(8) _farside(7) _apex(11), _wedge_end: 7 8, _funnel: [7, 8]
<73> infranear
_find_paths[300]: advancer id <73>
pseudoedge «9->8» added
{73} advancer revisited triangle
_find_paths[301]: advancer id <55>
pseudoedge «19->9» added
{55} advancer revisited triangle
_find_paths[302]: advancer id <80>
pseudoedge «6->11» added
<80> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]
<80> inside
_find_paths[303]: advancer id <80>
pseudoedge «10->11» added
<80> RIGHT _new(8) _nearside(10) _farside(6) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
<80> inside
_find_paths[304]: advancer id <81>
<81> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
<81> inside
_find_paths[305]: advancer id <80>
pseudoedge «8->11» added
<80> LEFT _new(7) _nearside(6) _farside(8) _apex(11), _wedge_end: 6 8, _funnel: [6, 8]
<80> inside
_find_paths[306]: advancer id <80>
pseudoedge «7->11» added
<80> RIGHT _new(9) _nearside(8) _farside(7) _apex(11), _wedge_end: 7 8, _funnel: [7, 8]
<80> infranear
_find_paths[307]: advancer id <80>
pseudoedge «9->8» added
{80} advancer revisited triangle
_find_paths[308]: advancer id <69>
pseudoedge «19->9» added
{69} advancer revisited triangle
PathFinder: loops performed: 308
hook_candidates: [2, 3]
best: hook = 3, dist = 1791.29
path: [3, 4, 5, -1]
hook changed from 2 to 3: recalculating loads
hook_candidates: [8, 11]
best: hook = 8, dist = 905.15
path: [8, 15, -1]
<PathFinder: created 3 detour vertices, total length changed by 12.48%
[10]:
wfn2.solution_info()
[10]:
{'router': 'HGSRouter',
'capacity': 4,
'solver_name': 'HGS-CVRP',
'complete': False,
'feeders_above_min': 0,
'feeders_exact': False,
'balanced': False,
'ringed': False,
'repair': True,
'max_retries': 10,
'nbGranular': 20,
'mu': 25,
'lambda_': 40,
'nbElite': 4,
'nbClose': 5,
'nbIterPenaltyManagement': 100,
'targetFeasible': 0.2,
'penaltyDecrease': 0.85,
'penaltyIncrease': 1.2,
'seed': 1234567,
'nbIter': 20000,
'nbIterTraces': 500,
'timeLimit': 0.1,
'useSwapStar': True,
'runtime': 0.10026135600000001}
[11]:
wfn2
[11]:
Log all OptiWindNet modules¶
Logging is hierarchical. By specifying the top-level module, all submodules are included.
[12]:
# here we use basicConfig to prepend each log message with the source module name
logging.basicConfig(
level=logging.DEBUG,
format='%(name)s: %(message)s',
stream=sys.stdout,
)
logger_own = logging.getLogger('optiwindnet')
[13]:
wfn3 = WindFarmNetwork.from_own_yaml(filepath='data/example_location.yaml', cables=4)
[14]:
res3 = wfn3.optimize()
optiwindnet.mesh: PART A
optiwindnet.mesh: PART B
optiwindnet.mesh: PART C
optiwindnet.mesh: is_hole: False, ring: 0, num_vertices: 4
optiwindnet.mesh: ((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))
optiwindnet.mesh: is_hole: False, ring: 1, num_vertices: 4
optiwindnet.mesh: ((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))
optiwindnet.mesh: is_hole: True, ring: 0, num_vertices: 4
optiwindnet.mesh: ((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))
optiwindnet.mesh: PART D
optiwindnet.mesh: PART E
optiwindnet.mesh: PART F
optiwindnet.mesh: convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]
optiwindnet.mesh: hull_pruned: [5, 11, 9, 7, 0, 1, 3, 4]
optiwindnet.mesh: hull_pruned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}
optiwindnet.mesh: PART G
optiwindnet.mesh: hull_concave: [-1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4, 5]
optiwindnet.mesh: PART H
optiwindnet.mesh: holes
optiwindnet.mesh: s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)
optiwindnet.mesh: s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)
optiwindnet.mesh: s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)
optiwindnet.mesh: s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)
optiwindnet.mesh: {(24, 25), (22, 25), (23, 24), (22, 23)}
optiwindnet.mesh: PART I
optiwindnet.mesh: hull_concave
optiwindnet.mesh: concavities
optiwindnet.mesh: PART J
optiwindnet.mesh: PART K
optiwindnet.mesh: ==== pivot 26 ====
optiwindnet.mesh: del_pivot_u 26 28
optiwindnet.mesh: del_conc 19 12
optiwindnet.mesh: del_pivot_end 26 27
optiwindnet.mesh: del_pivot_u 26 12
optiwindnet.mesh: ==== pivot 27 ====
optiwindnet.mesh: del_pivot_u 27 26
optiwindnet.mesh: ==== pivot 28 ====
optiwindnet.mesh: del_conc 14 17
optiwindnet.mesh: del_pivot_end 28 26
optiwindnet.mesh: del_pivot_u 28 17
optiwindnet.mesh: PART L
optiwindnet.mesh: PART M
optiwindnet.mesh: A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]
optiwindnet.mesh: s: 0; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 0, t: 20
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 20; t: 7;
optiwindnet.mesh: a: 21; c: 19; s: 21, t: 7
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]
optiwindnet.mesh: s: 3; b: 25; t: -1;
optiwindnet.mesh: a: 24; c: 22; s: 3, t: -1
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]
optiwindnet.mesh: s: 5; b: 15; t: 16;
optiwindnet.mesh: a: 16; c: 14; s: 5, t: 16
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: s: 15; b: 16; t: 11;
optiwindnet.mesh: a: 17; c: 15; s: 15, t: 11
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]
optiwindnet.mesh: s: 2; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 20; t: 7;
optiwindnet.mesh: a: 21; c: 19; s: 21, t: 7
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]
optiwindnet.mesh: s: 10; b: 16; t: 15;
optiwindnet.mesh: a: 17; c: 15; s: 10, t: 15
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 16; b: 15; t: -1;
optiwindnet.mesh: a: 16; c: 14; s: 16, t: -1
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]
optiwindnet.mesh: s: 4; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 4, t: 20
optiwindnet.mesh: (0) 4 21 20 shortcut
optiwindnet.mesh: s: 4; b: 20; t: 6;
optiwindnet.mesh: a: 21; c: 19; s: 4, t: 6
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]
optiwindnet.mesh: s: 1; b: 23; t: 22;
optiwindnet.mesh: a: 22; c: 24; s: 1, t: 22
optiwindnet.mesh: (0) 1 23 22 shortcut
optiwindnet.mesh: s: 1; b: 22; t: 4;
optiwindnet.mesh: a: 25; c: 23; s: 1, t: 4
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]
optiwindnet.mesh: s: 0; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 0, t: 20
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 20; t: 6;
optiwindnet.mesh: a: 21; c: 19; s: 21, t: 6
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]
optiwindnet.mesh: s: 11; b: 16; t: 15;
optiwindnet.mesh: a: 17; c: 15; s: 11, t: 15
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 16; b: 15; t: -1;
optiwindnet.mesh: a: 16; c: 14; s: 16, t: -1
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]
optiwindnet.mesh: A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]
optiwindnet.mesh: s: 2; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 20; t: 6;
optiwindnet.mesh: a: 21; c: 19; s: 21, t: 6
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: A_edge: 5–6 length: 969.949; path: [5, 15, 6]
optiwindnet.mesh: s: 5; b: 15; t: 6;
optiwindnet.mesh: a: 16; c: 14; s: 5, t: 6
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]
optiwindnet.mesh: A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]
optiwindnet.mesh: s: 2; b: 21; t: 20;
optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 20; t: 15;
optiwindnet.mesh: a: 21; c: 19; s: 21, t: 15
optiwindnet.mesh: (1) 21 20 15 shortcut
optiwindnet.mesh: s: 2; b: 21; t: 15;
optiwindnet.mesh: a: 12; c: 20; s: 2, t: 15
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 15; t: 16;
optiwindnet.mesh: a: 16; c: 14; s: 21, t: 16
optiwindnet.mesh: (1) 21 15 16 shortcut
optiwindnet.mesh: s: 2; b: 21; t: 16;
optiwindnet.mesh: a: 12; c: 20; s: 2, t: 16
optiwindnet.mesh: Non-shortable at 4th test.
optiwindnet.mesh: s: 21; b: 16; t: 11;
optiwindnet.mesh: a: 17; c: 15; s: 21, t: 11
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]
optiwindnet.mesh: PART N
optiwindnet.mesh: updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])
optiwindnet.mesh: d2roots[3, -1] updated
optiwindnet.mesh: d2roots[8, -1] updated by LOS pruning (path [-1, 6, 8] pruned at 8)
optiwindnet.mesh: updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])
optiwindnet.mesh: s: -1; b: 15; t: 16;
optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: s: 15; b: 16; t: 9;
optiwindnet.mesh: a: 17; c: 15; s: 15, t: 9
optiwindnet.mesh: d2roots[9, -1] updated
optiwindnet.mesh: updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])
optiwindnet.mesh: s: -1; b: 15; t: 16;
optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: s: 15; b: 16; t: 10;
optiwindnet.mesh: a: 17; c: 15; s: 15, t: 10
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: d2roots[10, -1] updated
optiwindnet.mesh: updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])
optiwindnet.mesh: s: -1; b: 15; t: 16;
optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: s: 15; b: 16; t: 11;
optiwindnet.mesh: a: 17; c: 15; s: 15, t: 11
optiwindnet.mesh: Non-shortable at 3rd test.
optiwindnet.mesh: d2roots[11, -1] updated
optiwindnet.mesh: PART O
optiwindnet.mesh: PART P
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <0>
optiwindnet.heuristics.constructor: <pushed> sr_u <0>, «0~1», priority = -1096.886
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <1>
optiwindnet.heuristics.constructor: <pushed> sr_u <1>, «1~2», priority = -939.305
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <2>
optiwindnet.heuristics.constructor: <pushed> sr_u <2>, «2~1», priority = -307.550
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <3>
optiwindnet.heuristics.constructor: <pushed> sr_u <3>, «3~4», priority = -734.647
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <4>
optiwindnet.heuristics.constructor: <pushed> sr_u <4>, «4~3», priority = 77.383
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <5>
optiwindnet.heuristics.constructor: <cancelling> 5
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <6>
optiwindnet.heuristics.constructor: <pushed> sr_u <6>, «6~8», priority = -220.884
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <7>
optiwindnet.heuristics.constructor: <pushed> sr_u <7>, «7~6», priority = -700.767
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <8>
optiwindnet.heuristics.constructor: <pushed> sr_u <8>, «8~6», priority = -639.140
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <9>
optiwindnet.heuristics.constructor: <pushed> sr_u <9>, «9~10», priority = -926.625
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <10>
optiwindnet.heuristics.constructor: <pushed> sr_u <10>, «10~8», priority = -495.532
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <11>
optiwindnet.heuristics.constructor: <pushed> sr_u <11>, «11~10», priority = -531.084
optiwindnet.heuristics.constructor: [1]
optiwindnet.heuristics.constructor: <pop> «0~1», sr_dropped: <0>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(0, 1)//
optiwindnet.heuristics.constructor: <add edge> «0~1» subroot <1>
optiwindnet.heuristics.constructor: heap top: <1>, «(1, 2)» -939.305
optiwindnet.heuristics.constructor: [2]
optiwindnet.heuristics.constructor: stale_subtrees: (1, 2)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <1>
optiwindnet.heuristics.constructor: <pushed> sr_u <1>, «1~2», priority = -972.844
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <2>
optiwindnet.heuristics.constructor: <pushed> sr_u <2>, «2~1», priority = -307.550
optiwindnet.heuristics.constructor: <pop> «1~2», sr_dropped: <1>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(0, 1)//
optiwindnet.heuristics.constructor: <add edge> «1~2» subroot <2>
optiwindnet.heuristics.constructor: heap top: <9>, «(9, 10)» -926.625
optiwindnet.heuristics.constructor: [3]
optiwindnet.heuristics.constructor: stale_subtrees: (2,)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <2>
optiwindnet.heuristics.constructor: <pushed> sr_u <2>, «2~4», priority = -328.856
optiwindnet.heuristics.constructor: <pop> «9~10», sr_dropped: <9>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(10, 9)//
optiwindnet.heuristics.constructor: <add edge> «9~10» subroot <10>
optiwindnet.heuristics.constructor: heap top: <3>, «(3, 4)» -734.647
optiwindnet.heuristics.constructor: [4]
optiwindnet.heuristics.constructor: stale_subtrees: (10, 11)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <10>
optiwindnet.heuristics.constructor: <pushed> sr_u <10>, «10~8», priority = -495.965
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <11>
optiwindnet.heuristics.constructor: <pushed> sr_u <11>, «11~10», priority = -531.084
optiwindnet.heuristics.constructor: <pop> «3~4», sr_dropped: <3>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(3, 4)//
optiwindnet.heuristics.constructor: <add edge> «3~4» subroot <4>
optiwindnet.heuristics.constructor: heap top: <7>, «(7, 6)» -700.767
optiwindnet.heuristics.constructor: [5]
optiwindnet.heuristics.constructor: stale_subtrees: (2, 4)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <2>
optiwindnet.heuristics.constructor: <cancelling> 2
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <4>
optiwindnet.heuristics.constructor: <cancelling> 4
optiwindnet.heuristics.constructor: <pop> «7~6», sr_dropped: <7>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(6, 7)//
optiwindnet.heuristics.constructor: <add edge> «7~6» subroot <6>
optiwindnet.heuristics.constructor: heap top: <8>, «(8, 6)» -639.140
optiwindnet.heuristics.constructor: [6]
optiwindnet.heuristics.constructor: stale_subtrees: (6, 8)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <6>
optiwindnet.heuristics.constructor: <pushed> sr_u <6>, «6~8», priority = -198.679
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <8>
optiwindnet.heuristics.constructor: <pushed> sr_u <8>, «8~6», priority = -639.140
optiwindnet.heuristics.constructor: <pop> «8~6», sr_dropped: <8>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(8, 7)//
optiwindnet.heuristics.constructor: <add edge> «8~6» subroot <6>
optiwindnet.heuristics.constructor: heap top: <11>, «(11, 10)» -531.084
optiwindnet.heuristics.constructor: [7]
optiwindnet.heuristics.constructor: stale_subtrees: (6, 10)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <6>
optiwindnet.heuristics.constructor: <cancelling> 6
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <10>
optiwindnet.heuristics.constructor: <pushed> sr_u <10>, «10~11», priority = -408.413
optiwindnet.heuristics.constructor: <pop> «11~10», sr_dropped: <11>, ins: False
optiwindnet.heuristics.constructor: <angle_span> //(11, 9)//
optiwindnet.heuristics.constructor: <add edge> «11~10» subroot <10>
optiwindnet.heuristics.constructor: heap top: <10>, «(10, 11)» -408.413
optiwindnet.heuristics.constructor: [8]
optiwindnet.heuristics.constructor: stale_subtrees: (10,)
optiwindnet.heuristics.constructor: <enqueue_best_union> starting... subroot = <10>
optiwindnet.heuristics.constructor: <cancelling> 10
>PathFinder: "example_location" (T = 12)
optiwindnet.pathfinding: >PathFinder: "example_location" (T = 12)
optiwindnet.mesh: differences between G and P: [(-1, 10)]
optiwindnet.mesh: in G, not in P: -1–10
optiwindnet.mesh: share 1 neighbors.
pseudoedge «20->-1» added
optiwindnet.pathfinding: pseudoedge «20->-1» added
pseudoedge «6->-1» added
optiwindnet.pathfinding: pseudoedge «6->-1» added
pseudoedge «6->-1» added
optiwindnet.pathfinding: pseudoedge «6->-1» added
pseudoedge «15->-1» added
optiwindnet.pathfinding: pseudoedge «15->-1» added
pseudoedge «15->-1» added
optiwindnet.pathfinding: pseudoedge «15->-1» added
pseudoedge «5->-1» added
optiwindnet.pathfinding: pseudoedge «5->-1» added
pseudoedge «4->-1» added
optiwindnet.pathfinding: pseudoedge «4->-1» added
pseudoedge «4->-1» added
optiwindnet.pathfinding: pseudoedge «4->-1» added
pseudoedge «2->-1» added
optiwindnet.pathfinding: pseudoedge «2->-1» added
pseudoedge «2->-1» added
optiwindnet.pathfinding: pseudoedge «2->-1» added
pseudoedge «21->-1» added
optiwindnet.pathfinding: pseudoedge «21->-1» added
_find_paths[1]: advancer id <0>
optiwindnet.pathfinding: _find_paths[1]: advancer id <0>
<0> RIGHT _new(7) _nearside(6) _farside(20) _apex(-1), _wedge_end: 20 6, _funnel: [20, 6]
optiwindnet.pathfinding: <0> RIGHT _new(7) _nearside(6) _farside(20) _apex(-1), _wedge_end: 20 6, _funnel: [20, 6]
<0> inside
optiwindnet.pathfinding: <0> inside
_find_paths[2]: advancer id <5>
optiwindnet.pathfinding: _find_paths[2]: advancer id <5>
<5> RIGHT _new(12) _nearside(21) _farside(2) _apex(-1), _wedge_end: 2 21, _funnel: [2, 21]
optiwindnet.pathfinding: <5> RIGHT _new(12) _nearside(21) _farside(2) _apex(-1), _wedge_end: 2 21, _funnel: [2, 21]
<5> inside
optiwindnet.pathfinding: <5> inside
_find_paths[3]: advancer id <1>
optiwindnet.pathfinding: _find_paths[3]: advancer id <1>
<1> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]
optiwindnet.pathfinding: <1> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]
<1> infranear
optiwindnet.pathfinding: <1> infranear
_find_paths[4]: advancer id <2>
optiwindnet.pathfinding: _find_paths[4]: advancer id <2>
<2> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]
optiwindnet.pathfinding: <2> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]
<2> inside
optiwindnet.pathfinding: <2> inside
_find_paths[5]: advancer id <3>
optiwindnet.pathfinding: _find_paths[5]: advancer id <3>
<3> RIGHT _new(14) _nearside(4) _farside(5) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]
optiwindnet.pathfinding: <3> RIGHT _new(14) _nearside(4) _farside(5) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]
<3> ultrafar
optiwindnet.pathfinding: <3> ultrafar
_find_paths[6]: advancer id <6>
optiwindnet.pathfinding: _find_paths[6]: advancer id <6>
<6> LEFT _new(14) _nearside(5) _farside(4) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]
optiwindnet.pathfinding: <6> LEFT _new(14) _nearside(5) _farside(4) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]
<6> infranear
optiwindnet.pathfinding: <6> infranear
_find_paths[7]: advancer id <1>
optiwindnet.pathfinding: _find_paths[7]: advancer id <1>
pseudoedge «16->15» added
optiwindnet.pathfinding: pseudoedge «16->15» added
<1> new best pn for (16, -9223372036854775808) via 15: d_path = 397.67
optiwindnet.pathfinding: <1> new best pn for (16, -9223372036854775808) via 15: d_path = 397.67
<1> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
optiwindnet.pathfinding: <1> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
<1> infranear
optiwindnet.pathfinding: <1> infranear
_find_paths[8]: advancer id <7>
optiwindnet.pathfinding: _find_paths[8]: advancer id <7>
<7> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
optiwindnet.pathfinding: <7> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]
<7> ultrafar
optiwindnet.pathfinding: <7> ultrafar
_find_paths[9]: advancer id <2>
optiwindnet.pathfinding: _find_paths[9]: advancer id <2>
pseudoedge «14->-1» added
optiwindnet.pathfinding: pseudoedge «14->-1» added
<2> new best pn for (14, -9223372036854775808) via -1: d_path = 445.53
optiwindnet.pathfinding: <2> new best pn for (14, -9223372036854775808) via -1: d_path = 445.53
<2> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]
optiwindnet.pathfinding: <2> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]
<2> infranear
optiwindnet.pathfinding: <2> infranear
_find_paths[10]: advancer id <8>
optiwindnet.pathfinding: _find_paths[10]: advancer id <8>
<8> LEFT _new(4) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]
optiwindnet.pathfinding: <8> LEFT _new(4) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]
<8> ultrafar
optiwindnet.pathfinding: <8> ultrafar
_find_paths[11]: advancer id <3>
optiwindnet.pathfinding: _find_paths[11]: advancer id <3>
pseudoedge «14->5» added
optiwindnet.pathfinding: pseudoedge «14->5» added
<3> RIGHT _new(15) _nearside(14) _farside(5) _apex(5), _wedge_end: 5 14, _funnel: [5, 14]
optiwindnet.pathfinding: <3> RIGHT _new(15) _nearside(14) _farside(5) _apex(5), _wedge_end: 5 14, _funnel: [5, 14]
<3> inside
optiwindnet.pathfinding: <3> inside
_find_paths[12]: advancer id <6>
optiwindnet.pathfinding: _find_paths[12]: advancer id <6>
<6> RIGHT _new(3) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [5, 4]
optiwindnet.pathfinding: <6> RIGHT _new(3) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [5, 4]
<6> infranear
optiwindnet.pathfinding: <6> infranear
_find_paths[13]: advancer id <4>
optiwindnet.pathfinding: _find_paths[13]: advancer id <4>
<4> RIGHT _new(25) _nearside(2) _farside(4) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]
optiwindnet.pathfinding: <4> RIGHT _new(25) _nearside(2) _farside(4) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]
<4> inside
optiwindnet.pathfinding: <4> inside
_find_paths[14]: advancer id <9>
optiwindnet.pathfinding: _find_paths[14]: advancer id <9>
<9> LEFT _new(25) _nearside(4) _farside(2) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]
optiwindnet.pathfinding: <9> LEFT _new(25) _nearside(4) _farside(2) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]
<9> inside
optiwindnet.pathfinding: <9> inside
_find_paths[15]: advancer id <4>
optiwindnet.pathfinding: _find_paths[15]: advancer id <4>
pseudoedge «25->-1» added
optiwindnet.pathfinding: pseudoedge «25->-1» added
<4> new best pn for (25, -9223372036854775808) via -1: d_path = 717.21
optiwindnet.pathfinding: <4> new best pn for (25, -9223372036854775808) via -1: d_path = 717.21
<4> LEFT _new(3) _nearside(4) _farside(25) _apex(-1), _wedge_end: 4 25, _funnel: [4, 25]
optiwindnet.pathfinding: <4> LEFT _new(3) _nearside(4) _farside(25) _apex(-1), _wedge_end: 4 25, _funnel: [4, 25]
<4> ultrafar
optiwindnet.pathfinding: <4> ultrafar
_find_paths[16]: advancer id <9>
optiwindnet.pathfinding: _find_paths[16]: advancer id <9>
<9> LEFT _new(22) _nearside(25) _farside(2) _apex(-1), _wedge_end: 25 2, _funnel: [25, 2]
optiwindnet.pathfinding: <9> LEFT _new(22) _nearside(25) _farside(2) _apex(-1), _wedge_end: 25 2, _funnel: [25, 2]
<9> inside
optiwindnet.pathfinding: <9> inside
_find_paths[17]: advancer id <9>
optiwindnet.pathfinding: _find_paths[17]: advancer id <9>
pseudoedge «22->-1» added
optiwindnet.pathfinding: pseudoedge «22->-1» added
<9> new best pn for (22, -9223372036854775808) via -1: d_path = 856.03
optiwindnet.pathfinding: <9> new best pn for (22, -9223372036854775808) via -1: d_path = 856.03
<9> LEFT _new(23) _nearside(22) _farside(2) _apex(-1), _wedge_end: 22 2, _funnel: [22, 2]
optiwindnet.pathfinding: <9> LEFT _new(23) _nearside(22) _farside(2) _apex(-1), _wedge_end: 22 2, _funnel: [22, 2]
<9> infranear
optiwindnet.pathfinding: <9> infranear
_find_paths[18]: advancer id <9>
optiwindnet.pathfinding: _find_paths[18]: advancer id <9>
pseudoedge «23->22» added
optiwindnet.pathfinding: pseudoedge «23->22» added
<9> new best pn for (23, -9223372036854775808) via 22: d_path = 919.27
optiwindnet.pathfinding: <9> new best pn for (23, -9223372036854775808) via 22: d_path = 919.27
<9> RIGHT _new(3) _nearside(2) _farside(22) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]
optiwindnet.pathfinding: <9> RIGHT _new(3) _nearside(2) _farside(22) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]
<9> ultrafar
optiwindnet.pathfinding: <9> ultrafar
_find_paths[19]: advancer id <10>
optiwindnet.pathfinding: _find_paths[19]: advancer id <10>
<10> LEFT _new(3) _nearside(22) _farside(2) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]
optiwindnet.pathfinding: <10> LEFT _new(3) _nearside(22) _farside(2) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]
<10> infranear
optiwindnet.pathfinding: <10> infranear
_find_paths[20]: advancer id <1>
optiwindnet.pathfinding: _find_paths[20]: advancer id <1>
pseudoedge «11->16» added
optiwindnet.pathfinding: pseudoedge «11->16» added
<1> new best pn for (11, 10) via 16: d_path = 985.72
optiwindnet.pathfinding: <1> new best pn for (11, 10) via 16: d_path = 985.72
<1> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]
optiwindnet.pathfinding: <1> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]
<1> infranear
optiwindnet.pathfinding: <1> infranear
_find_paths[21]: advancer id <1>
optiwindnet.pathfinding: _find_paths[21]: advancer id <1>
pseudoedge «10->16» added
optiwindnet.pathfinding: pseudoedge «10->16» added
<1> new best pn for (10, 11) via 16: d_path = 909.25
optiwindnet.pathfinding: <1> new best pn for (10, 11) via 16: d_path = 909.25
<1> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]
optiwindnet.pathfinding: <1> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]
<1> ultrafar
optiwindnet.pathfinding: <1> ultrafar
_find_paths[22]: advancer id <1>
optiwindnet.pathfinding: _find_paths[22]: advancer id <1>
pseudoedge «8->15» added
optiwindnet.pathfinding: pseudoedge «8->15» added
<1> new best pn for (8, 6) via 15: d_path = 905.15
optiwindnet.pathfinding: <1> new best pn for (8, 6) via 15: d_path = 905.15
<1> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]
optiwindnet.pathfinding: <1> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]
<1> inside
optiwindnet.pathfinding: <1> inside
_find_paths[23]: advancer id <7>
optiwindnet.pathfinding: _find_paths[23]: advancer id <7>
<7> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]
optiwindnet.pathfinding: <7> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]
<7> inside
optiwindnet.pathfinding: <7> inside
_find_paths[24]: advancer id <3>
optiwindnet.pathfinding: _find_paths[24]: advancer id <3>
pseudoedge «15->5» added
optiwindnet.pathfinding: pseudoedge «15->5» added
<3> new best pn for (15, -9223372036854775808) via 5: d_path = 1073.46
optiwindnet.pathfinding: <3> new best pn for (15, -9223372036854775808) via 5: d_path = 1073.46
{3} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {3} advancer reached DEAD-END (root or mesh edge)
_find_paths[25]: advancer id <0>
optiwindnet.pathfinding: _find_paths[25]: advancer id <0>
pseudoedge «7->-1» added
optiwindnet.pathfinding: pseudoedge «7->-1» added
<0> new best pn for (7, 6) via -1: d_path = 1099.03
optiwindnet.pathfinding: <0> new best pn for (7, 6) via -1: d_path = 1099.03
<0> LEFT _new(19) _nearside(20) _farside(7) _apex(-1), _wedge_end: 20 7, _funnel: [20, 7]
optiwindnet.pathfinding: <0> LEFT _new(19) _nearside(20) _farside(7) _apex(-1), _wedge_end: 20 7, _funnel: [20, 7]
<0> inside
optiwindnet.pathfinding: <0> inside
_find_paths[26]: advancer id <7>
optiwindnet.pathfinding: _find_paths[26]: advancer id <7>
pseudoedge «17->16» added
optiwindnet.pathfinding: pseudoedge «17->16» added
<7> new best pn for (17, -9223372036854775808) via 16: d_path = 1113.60
optiwindnet.pathfinding: <7> new best pn for (17, -9223372036854775808) via 16: d_path = 1113.60
<7> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
optiwindnet.pathfinding: <7> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
<7> ultrafar
optiwindnet.pathfinding: <7> ultrafar
_find_paths[27]: advancer id <11>
optiwindnet.pathfinding: _find_paths[27]: advancer id <11>
<11> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
optiwindnet.pathfinding: <11> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]
<11> infranear
optiwindnet.pathfinding: <11> infranear
_find_paths[28]: advancer id <0>
optiwindnet.pathfinding: _find_paths[28]: advancer id <0>
pseudoedge «19->-1» added
optiwindnet.pathfinding: pseudoedge «19->-1» added
<0> new best pn for (19, -9223372036854775808) via -1: d_path = 1153.92
optiwindnet.pathfinding: <0> new best pn for (19, -9223372036854775808) via -1: d_path = 1153.92
<0> RIGHT _new(9) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]
optiwindnet.pathfinding: <0> RIGHT _new(9) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]
<0> infranear
optiwindnet.pathfinding: <0> infranear
_find_paths[29]: advancer id <12>
optiwindnet.pathfinding: _find_paths[29]: advancer id <12>
<12> LEFT _new(9) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]
optiwindnet.pathfinding: <12> LEFT _new(9) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]
<12> ultrafar
optiwindnet.pathfinding: <12> ultrafar
_find_paths[30]: advancer id <4>
optiwindnet.pathfinding: _find_paths[30]: advancer id <4>
pseudoedge «3->25» added
optiwindnet.pathfinding: pseudoedge «3->25» added
<4> new best pn for (3, 4) via 25: d_path = 1159.04
optiwindnet.pathfinding: <4> new best pn for (3, 4) via 25: d_path = 1159.04
<4> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
optiwindnet.pathfinding: <4> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<4> inside
optiwindnet.pathfinding: <4> inside
_find_paths[31]: advancer id <4>
optiwindnet.pathfinding: _find_paths[31]: advancer id <4>
pseudoedge «24->25» added
optiwindnet.pathfinding: pseudoedge «24->25» added
<4> new best pn for (24, -9223372036854775808) via 25: d_path = 923.36
optiwindnet.pathfinding: <4> new best pn for (24, -9223372036854775808) via 25: d_path = 923.36
<4> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
optiwindnet.pathfinding: <4> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<4> infranear
optiwindnet.pathfinding: <4> infranear
_find_paths[32]: advancer id <4>
optiwindnet.pathfinding: _find_paths[32]: advancer id <4>
pseudoedge «23->24» added
optiwindnet.pathfinding: pseudoedge «23->24» added
<4> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
optiwindnet.pathfinding: <4> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<4> infranear
optiwindnet.pathfinding: <4> infranear
_find_paths[33]: advancer id <13>
optiwindnet.pathfinding: _find_paths[33]: advancer id <13>
<13> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
optiwindnet.pathfinding: <13> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]
<13> ultrafar
optiwindnet.pathfinding: <13> ultrafar
_find_paths[34]: advancer id <6>
optiwindnet.pathfinding: _find_paths[34]: advancer id <6>
pseudoedge «3->4» added
optiwindnet.pathfinding: pseudoedge «3->4» added
<6> RIGHT _new(28) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]
optiwindnet.pathfinding: <6> RIGHT _new(28) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]
<6> inside
optiwindnet.pathfinding: <6> inside
_find_paths[35]: advancer id <14>
optiwindnet.pathfinding: _find_paths[35]: advancer id <14>
<14> LEFT _new(28) _nearside(5) _farside(4) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]
optiwindnet.pathfinding: <14> LEFT _new(28) _nearside(5) _farside(4) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]
<14> inside
optiwindnet.pathfinding: <14> inside
_find_paths[36]: advancer id <6>
optiwindnet.pathfinding: _find_paths[36]: advancer id <6>
pseudoedge «28->-1» added
optiwindnet.pathfinding: pseudoedge «28->-1» added
<6> new best pn for (28, -9223372036854775808) via -1: d_path = 7423.95
optiwindnet.pathfinding: <6> new best pn for (28, -9223372036854775808) via -1: d_path = 7423.95
{6} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {6} advancer reached DEAD-END (root or mesh edge)
_find_paths[37]: advancer id <14>
optiwindnet.pathfinding: _find_paths[37]: advancer id <14>
<14> LEFT _new(27) _nearside(28) _farside(4) _apex(-1), _wedge_end: 28 3, _funnel: [28, 4]
optiwindnet.pathfinding: <14> LEFT _new(27) _nearside(28) _farside(4) _apex(-1), _wedge_end: 28 3, _funnel: [28, 4]
<14> ultrafar
optiwindnet.pathfinding: <14> ultrafar
_find_paths[38]: advancer id <14>
optiwindnet.pathfinding: _find_paths[38]: advancer id <14>
pseudoedge «27->3» added
optiwindnet.pathfinding: pseudoedge «27->3» added
<14> new best pn for (27, -9223372036854775808) via 3: d_path = 8589.66
optiwindnet.pathfinding: <14> new best pn for (27, -9223372036854775808) via 3: d_path = 8589.66
<14> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
optiwindnet.pathfinding: <14> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<14> inside
optiwindnet.pathfinding: <14> inside
_find_paths[39]: advancer id <15>
optiwindnet.pathfinding: _find_paths[39]: advancer id <15>
<15> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
optiwindnet.pathfinding: <15> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<15> inside
optiwindnet.pathfinding: <15> inside
_find_paths[40]: advancer id <2>
optiwindnet.pathfinding: _find_paths[40]: advancer id <2>
pseudoedge «4->5» added
optiwindnet.pathfinding: pseudoedge «4->5» added
<2> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]
optiwindnet.pathfinding: <2> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]
<2> infranear
optiwindnet.pathfinding: <2> infranear
_find_paths[41]: advancer id <8>
optiwindnet.pathfinding: _find_paths[41]: advancer id <8>
{8} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {8} advancer reached DEAD-END (root or mesh edge)
_find_paths[42]: advancer id <1>
optiwindnet.pathfinding: _find_paths[42]: advancer id <1>
pseudoedge «9->15» added
optiwindnet.pathfinding: pseudoedge «9->15» added
<1> new best pn for (9, 10) via 15: d_path = 1235.41
optiwindnet.pathfinding: <1> new best pn for (9, 10) via 15: d_path = 1235.41
<1> RIGHT _new(7) _nearside(9) _farside(8) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]
optiwindnet.pathfinding: <1> RIGHT _new(7) _nearside(9) _farside(8) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]
<1> ultrafar
optiwindnet.pathfinding: <1> ultrafar
_find_paths[43]: advancer id <16>
optiwindnet.pathfinding: _find_paths[43]: advancer id <16>
<16> LEFT _new(7) _nearside(8) _farside(9) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]
optiwindnet.pathfinding: <16> LEFT _new(7) _nearside(8) _farside(9) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]
<16> infranear
optiwindnet.pathfinding: <16> infranear
_find_paths[44]: advancer id <9>
optiwindnet.pathfinding: _find_paths[44]: advancer id <9>
pseudoedge «3->23» added
optiwindnet.pathfinding: pseudoedge «3->23» added
<9> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]
optiwindnet.pathfinding: <9> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]
<9> inside
optiwindnet.pathfinding: <9> inside
_find_paths[45]: advancer id <9>
optiwindnet.pathfinding: _find_paths[45]: advancer id <9>
pseudoedge «24->23» added
optiwindnet.pathfinding: pseudoedge «24->23» added
<9> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]
optiwindnet.pathfinding: <9> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]
<9> infranear
optiwindnet.pathfinding: <9> infranear
_find_paths[46]: advancer id <10>
optiwindnet.pathfinding: _find_paths[46]: advancer id <10>
<10> RIGHT _new(1) _nearside(2) _farside(22) _apex(-1), _wedge_end: 3 2, _funnel: [22, 2]
optiwindnet.pathfinding: <10> RIGHT _new(1) _nearside(2) _farside(22) _apex(-1), _wedge_end: 3 2, _funnel: [22, 2]
<10> inside
optiwindnet.pathfinding: <10> inside
_find_paths[47]: advancer id <10>
optiwindnet.pathfinding: _find_paths[47]: advancer id <10>
pseudoedge «1->-1» added
optiwindnet.pathfinding: pseudoedge «1->-1» added
<10> new best pn for (1, 2) via -1: d_path = 1275.84
optiwindnet.pathfinding: <10> new best pn for (1, 2) via -1: d_path = 1275.84
<10> RIGHT _new(27) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]
optiwindnet.pathfinding: <10> RIGHT _new(27) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]
<10> infranear
optiwindnet.pathfinding: <10> infranear
_find_paths[48]: advancer id <10>
optiwindnet.pathfinding: _find_paths[48]: advancer id <10>
pseudoedge «27->1» added
optiwindnet.pathfinding: pseudoedge «27->1» added
<10> new best pn for (27, -9223372036854775808) via 1: d_path = 8292.63
optiwindnet.pathfinding: <10> new best pn for (27, -9223372036854775808) via 1: d_path = 8292.63
<10> RIGHT _new(28) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 27, _funnel: [22, 1]
optiwindnet.pathfinding: <10> RIGHT _new(28) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 27, _funnel: [22, 1]
<10> ultrafar
optiwindnet.pathfinding: <10> ultrafar
_find_paths[49]: advancer id <10>
optiwindnet.pathfinding: _find_paths[49]: advancer id <10>
pseudoedge «28->3» added
optiwindnet.pathfinding: pseudoedge «28->3» added
<10> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <10> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
<10> inside
optiwindnet.pathfinding: <10> inside
_find_paths[50]: advancer id <18>
optiwindnet.pathfinding: _find_paths[50]: advancer id <18>
<18> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <18> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
<18> inside
optiwindnet.pathfinding: <18> inside
_find_paths[51]: advancer id <17>
optiwindnet.pathfinding: _find_paths[51]: advancer id <17>
<17> LEFT _new(27) _nearside(22) _farside(1) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]
optiwindnet.pathfinding: <17> LEFT _new(27) _nearside(22) _farside(1) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]
<17> ultrafar
optiwindnet.pathfinding: <17> ultrafar
_find_paths[52]: advancer id <17>
optiwindnet.pathfinding: _find_paths[52]: advancer id <17>
<17> RIGHT _new(12) _nearside(1) _farside(27) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <17> RIGHT _new(12) _nearside(1) _farside(27) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]
<17> inside
optiwindnet.pathfinding: <17> inside
_find_paths[53]: advancer id <19>
optiwindnet.pathfinding: _find_paths[53]: advancer id <19>
<19> LEFT _new(12) _nearside(27) _farside(1) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <19> LEFT _new(12) _nearside(27) _farside(1) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]
<19> inside
optiwindnet.pathfinding: <19> inside
_find_paths[54]: advancer id <9>
optiwindnet.pathfinding: _find_paths[54]: advancer id <9>
pseudoedge «25->24» added
optiwindnet.pathfinding: pseudoedge «25->24» added
<9> RIGHT _new(4) _nearside(3) _farside(24) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]
optiwindnet.pathfinding: <9> RIGHT _new(4) _nearside(3) _farside(24) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]
<9> ultrafar
optiwindnet.pathfinding: <9> ultrafar
_find_paths[55]: advancer id <4>
optiwindnet.pathfinding: _find_paths[55]: advancer id <4>
pseudoedge «2->23» added
optiwindnet.pathfinding: pseudoedge «2->23» added
<4> RIGHT _new(1) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 2, _funnel: [3, 24]
optiwindnet.pathfinding: <4> RIGHT _new(1) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 2, _funnel: [3, 24]
<4> infranear
optiwindnet.pathfinding: <4> infranear
_find_paths[56]: advancer id <13>
optiwindnet.pathfinding: _find_paths[56]: advancer id <13>
<13> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]
optiwindnet.pathfinding: <13> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]
<13> inside
optiwindnet.pathfinding: <13> inside
_find_paths[57]: advancer id <13>
optiwindnet.pathfinding: _find_paths[57]: advancer id <13>
pseudoedge «22->23» added
optiwindnet.pathfinding: pseudoedge «22->23» added
<13> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]
optiwindnet.pathfinding: <13> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]
<13> infranear
optiwindnet.pathfinding: <13> infranear
_find_paths[58]: advancer id <1>
optiwindnet.pathfinding: _find_paths[58]: advancer id <1>
pseudoedge «7->8» added
optiwindnet.pathfinding: pseudoedge «7->8» added
<1> RIGHT _new(6) _nearside(7) _farside(8) _apex(8), _wedge_end: 8 7, _funnel: [8, 7]
optiwindnet.pathfinding: <1> RIGHT _new(6) _nearside(7) _farside(8) _apex(8), _wedge_end: 8 7, _funnel: [8, 7]
<1> inside
optiwindnet.pathfinding: <1> inside
pseudoedge «6->8» added
optiwindnet.pathfinding: pseudoedge «6->8» added
{1} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {1} advancer reached DEAD-END (not portals)
_find_paths[59]: advancer id <16>
optiwindnet.pathfinding: _find_paths[59]: advancer id <16>
<16> RIGHT _new(19) _nearside(9) _farside(8) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]
optiwindnet.pathfinding: <16> RIGHT _new(19) _nearside(9) _farside(8) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]
<16> ultrafar
optiwindnet.pathfinding: <16> ultrafar
_find_paths[60]: advancer id <20>
optiwindnet.pathfinding: _find_paths[60]: advancer id <20>
<20> LEFT _new(19) _nearside(8) _farside(9) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]
optiwindnet.pathfinding: <20> LEFT _new(19) _nearside(8) _farside(9) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]
<20> infranear
optiwindnet.pathfinding: <20> infranear
_find_paths[61]: advancer id <4>
optiwindnet.pathfinding: _find_paths[61]: advancer id <4>
pseudoedge «1->24» added
optiwindnet.pathfinding: pseudoedge «1->24» added
<4> RIGHT _new(27) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]
optiwindnet.pathfinding: <4> RIGHT _new(27) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]
<4> infranear
optiwindnet.pathfinding: <4> infranear
_find_paths[62]: advancer id <21>
optiwindnet.pathfinding: _find_paths[62]: advancer id <21>
<21> LEFT _new(27) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]
optiwindnet.pathfinding: <21> LEFT _new(27) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]
<21> ultrafar
optiwindnet.pathfinding: <21> ultrafar
_find_paths[63]: advancer id <4>
optiwindnet.pathfinding: _find_paths[63]: advancer id <4>
pseudoedge «27->24» added
optiwindnet.pathfinding: pseudoedge «27->24» added
<4> RIGHT _new(28) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 27, _funnel: [3, 24]
optiwindnet.pathfinding: <4> RIGHT _new(28) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 27, _funnel: [3, 24]
<4> ultrafar
optiwindnet.pathfinding: <4> ultrafar
_find_paths[64]: advancer id <21>
optiwindnet.pathfinding: _find_paths[64]: advancer id <21>
<21> RIGHT _new(12) _nearside(1) _farside(27) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <21> RIGHT _new(12) _nearside(1) _farside(27) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]
<21> infranear
optiwindnet.pathfinding: <21> infranear
_find_paths[65]: advancer id <22>
optiwindnet.pathfinding: _find_paths[65]: advancer id <22>
<22> LEFT _new(12) _nearside(27) _farside(1) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <22> LEFT _new(12) _nearside(27) _farside(1) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]
<22> ultrafar
optiwindnet.pathfinding: <22> ultrafar
_find_paths[66]: advancer id <4>
optiwindnet.pathfinding: _find_paths[66]: advancer id <4>
pseudoedge «28->3» added
optiwindnet.pathfinding: pseudoedge «28->3» added
<4> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <4> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
<4> inside
optiwindnet.pathfinding: <4> inside
_find_paths[67]: advancer id <23>
optiwindnet.pathfinding: _find_paths[67]: advancer id <23>
<23> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <23> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]
<23> inside
optiwindnet.pathfinding: <23> inside
_find_paths[68]: advancer id <9>
optiwindnet.pathfinding: _find_paths[68]: advancer id <9>
pseudoedge «4->24» added
optiwindnet.pathfinding: pseudoedge «4->24» added
{9} advancer revisited triangle
optiwindnet.pathfinding: {9} advancer revisited triangle
_find_paths[69]: advancer id <13>
optiwindnet.pathfinding: _find_paths[69]: advancer id <13>
pseudoedge «25->22» added
optiwindnet.pathfinding: pseudoedge «25->22» added
{13} advancer revisited triangle
optiwindnet.pathfinding: {13} advancer revisited triangle
_find_paths[70]: advancer id <5>
optiwindnet.pathfinding: _find_paths[70]: advancer id <5>
pseudoedge «12->-1» added
optiwindnet.pathfinding: pseudoedge «12->-1» added
<5> new best pn for (12, -9223372036854775808) via -1: d_path = 1523.09
optiwindnet.pathfinding: <5> new best pn for (12, -9223372036854775808) via -1: d_path = 1523.09
<5> RIGHT _new(0) _nearside(12) _farside(2) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]
optiwindnet.pathfinding: <5> RIGHT _new(0) _nearside(12) _farside(2) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]
<5> inside
optiwindnet.pathfinding: <5> inside
_find_paths[71]: advancer id <5>
optiwindnet.pathfinding: _find_paths[71]: advancer id <5>
pseudoedge «0->-1» added
optiwindnet.pathfinding: pseudoedge «0->-1» added
<5> new best pn for (0, 1) via -1: d_path = 1470.44
optiwindnet.pathfinding: <5> new best pn for (0, 1) via -1: d_path = 1470.44
<5> RIGHT _new(1) _nearside(0) _farside(2) _apex(-1), _wedge_end: 2 0, _funnel: [2, 0]
optiwindnet.pathfinding: <5> RIGHT _new(1) _nearside(0) _farside(2) _apex(-1), _wedge_end: 2 0, _funnel: [2, 0]
<5> ultrafar
optiwindnet.pathfinding: <5> ultrafar
pseudoedge «1->2» added
optiwindnet.pathfinding: pseudoedge «1->2» added
{5} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {5} advancer reached DEAD-END (not portals)
_find_paths[72]: advancer id <24>
optiwindnet.pathfinding: _find_paths[72]: advancer id <24>
<24> LEFT _new(0) _nearside(2) _farside(12) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]
optiwindnet.pathfinding: <24> LEFT _new(0) _nearside(2) _farside(12) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]
<24> inside
optiwindnet.pathfinding: <24> inside
_find_paths[73]: advancer id <24>
optiwindnet.pathfinding: _find_paths[73]: advancer id <24>
<24> LEFT _new(1) _nearside(0) _farside(12) _apex(-1), _wedge_end: 0 12, _funnel: [0, 12]
optiwindnet.pathfinding: <24> LEFT _new(1) _nearside(0) _farside(12) _apex(-1), _wedge_end: 0 12, _funnel: [0, 12]
<24> infranear
optiwindnet.pathfinding: <24> infranear
_find_paths[74]: advancer id <16>
optiwindnet.pathfinding: _find_paths[74]: advancer id <16>
pseudoedge «19->7» added
optiwindnet.pathfinding: pseudoedge «19->7» added
<16> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]
optiwindnet.pathfinding: <16> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]
<16> inside
optiwindnet.pathfinding: <16> inside
_find_paths[75]: advancer id <20>
optiwindnet.pathfinding: _find_paths[75]: advancer id <20>
<20> RIGHT _new(26) _nearside(9) _farside(8) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]
optiwindnet.pathfinding: <20> RIGHT _new(26) _nearside(9) _farside(8) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]
<20> infranear
optiwindnet.pathfinding: <20> infranear
_find_paths[76]: advancer id <25>
optiwindnet.pathfinding: _find_paths[76]: advancer id <25>
<25> LEFT _new(26) _nearside(8) _farside(9) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]
optiwindnet.pathfinding: <25> LEFT _new(26) _nearside(8) _farside(9) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]
<25> ultrafar
optiwindnet.pathfinding: <25> ultrafar
_find_paths[77]: advancer id <20>
optiwindnet.pathfinding: _find_paths[77]: advancer id <20>
pseudoedge «26->9» added
optiwindnet.pathfinding: pseudoedge «26->9» added
<20> new best pn for (26, -9223372036854775808) via 9: d_path = 7900.12
optiwindnet.pathfinding: <20> new best pn for (26, -9223372036854775808) via 9: d_path = 7900.12
{20} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {20} advancer reached DEAD-END (root or mesh edge)
_find_paths[78]: advancer id <25>
optiwindnet.pathfinding: _find_paths[78]: advancer id <25>
<25> RIGHT _new(17) _nearside(9) _farside(26) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]
optiwindnet.pathfinding: <25> RIGHT _new(17) _nearside(9) _farside(26) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]
<25> inside
optiwindnet.pathfinding: <25> inside
_find_paths[79]: advancer id <26>
optiwindnet.pathfinding: _find_paths[79]: advancer id <26>
<26> LEFT _new(17) _nearside(26) _farside(9) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]
optiwindnet.pathfinding: <26> LEFT _new(17) _nearside(26) _farside(9) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]
<26> inside
optiwindnet.pathfinding: <26> inside
_find_paths[80]: advancer id <14>
optiwindnet.pathfinding: _find_paths[80]: advancer id <14>
pseudoedge «1->3» added
optiwindnet.pathfinding: pseudoedge «1->3» added
<14> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <14> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<14> infranear
optiwindnet.pathfinding: <14> infranear
_find_paths[81]: advancer id <15>
optiwindnet.pathfinding: _find_paths[81]: advancer id <15>
<15> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]
optiwindnet.pathfinding: <15> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]
<15> inside
optiwindnet.pathfinding: <15> inside
_find_paths[82]: advancer id <27>
optiwindnet.pathfinding: _find_paths[82]: advancer id <27>
<27> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <27> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<27> ultrafar
optiwindnet.pathfinding: <27> ultrafar
_find_paths[83]: advancer id <17>
optiwindnet.pathfinding: _find_paths[83]: advancer id <17>
pseudoedge «12->1» added
optiwindnet.pathfinding: pseudoedge «12->1» added
{17} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {17} advancer reached DEAD-END (root or mesh edge)
_find_paths[84]: advancer id <19>
optiwindnet.pathfinding: _find_paths[84]: advancer id <19>
<19> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
optiwindnet.pathfinding: <19> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<19> inside
optiwindnet.pathfinding: <19> inside
_find_paths[85]: advancer id <19>
optiwindnet.pathfinding: _find_paths[85]: advancer id <19>
pseudoedge «0->1» added
optiwindnet.pathfinding: pseudoedge «0->1» added
<19> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <19> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<19> infranear
optiwindnet.pathfinding: <19> infranear
_find_paths[86]: advancer id <28>
optiwindnet.pathfinding: _find_paths[86]: advancer id <28>
<28> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <28> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<28> ultrafar
optiwindnet.pathfinding: <28> ultrafar
_find_paths[87]: advancer id <2>
optiwindnet.pathfinding: _find_paths[87]: advancer id <2>
pseudoedge «3->4» added
optiwindnet.pathfinding: pseudoedge «3->4» added
<2> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
optiwindnet.pathfinding: <2> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
<2> infranear
optiwindnet.pathfinding: <2> infranear
_find_paths[88]: advancer id <29>
optiwindnet.pathfinding: _find_paths[88]: advancer id <29>
<29> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
optiwindnet.pathfinding: <29> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]
<29> ultrafar
optiwindnet.pathfinding: <29> ultrafar
_find_paths[89]: advancer id <2>
optiwindnet.pathfinding: _find_paths[89]: advancer id <2>
pseudoedge «28->5» added
optiwindnet.pathfinding: pseudoedge «28->5» added
{2} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {2} advancer reached DEAD-END (root or mesh edge)
_find_paths[90]: advancer id <29>
optiwindnet.pathfinding: _find_paths[90]: advancer id <29>
<29> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]
optiwindnet.pathfinding: <29> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]
<29> ultrafar
optiwindnet.pathfinding: <29> ultrafar
_find_paths[91]: advancer id <29>
optiwindnet.pathfinding: _find_paths[91]: advancer id <29>
pseudoedge «27->3» added
optiwindnet.pathfinding: pseudoedge «27->3» added
<29> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
optiwindnet.pathfinding: <29> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<29> inside
optiwindnet.pathfinding: <29> inside
_find_paths[92]: advancer id <30>
optiwindnet.pathfinding: _find_paths[92]: advancer id <30>
<30> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
optiwindnet.pathfinding: <30> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]
<30> inside
optiwindnet.pathfinding: <30> inside
_find_paths[93]: advancer id <7>
optiwindnet.pathfinding: _find_paths[93]: advancer id <7>
pseudoedge «9->11» added
optiwindnet.pathfinding: pseudoedge «9->11» added
<7> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
optiwindnet.pathfinding: <7> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
<7> inside
optiwindnet.pathfinding: <7> inside
pseudoedge «10->11» added
optiwindnet.pathfinding: pseudoedge «10->11» added
{7} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {7} advancer reached DEAD-END (not portals)
_find_paths[94]: advancer id <11>
optiwindnet.pathfinding: _find_paths[94]: advancer id <11>
<11> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
optiwindnet.pathfinding: <11> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
<11> ultrafar
optiwindnet.pathfinding: <11> ultrafar
_find_paths[95]: advancer id <31>
optiwindnet.pathfinding: _find_paths[95]: advancer id <31>
<31> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
optiwindnet.pathfinding: <31> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]
<31> infranear
optiwindnet.pathfinding: <31> infranear
_find_paths[96]: advancer id <11>
optiwindnet.pathfinding: _find_paths[96]: advancer id <11>
pseudoedge «26->11» added
optiwindnet.pathfinding: pseudoedge «26->11» added
<11> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
optiwindnet.pathfinding: <11> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<11> ultrafar
optiwindnet.pathfinding: <11> ultrafar
_find_paths[97]: advancer id <31>
optiwindnet.pathfinding: _find_paths[97]: advancer id <31>
{31} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {31} advancer reached DEAD-END (root or mesh edge)
_find_paths[98]: advancer id <32>
optiwindnet.pathfinding: _find_paths[98]: advancer id <32>
<32> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
optiwindnet.pathfinding: <32> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<32> infranear
optiwindnet.pathfinding: <32> infranear
_find_paths[99]: advancer id <15>
optiwindnet.pathfinding: _find_paths[99]: advancer id <15>
pseudoedge «2->3» added
optiwindnet.pathfinding: pseudoedge «2->3» added
<15> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <15> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
<15> inside
optiwindnet.pathfinding: <15> inside
_find_paths[100]: advancer id <15>
optiwindnet.pathfinding: _find_paths[100]: advancer id <15>
pseudoedge «23->3» added
optiwindnet.pathfinding: pseudoedge «23->3» added
<15> RIGHT _new(22) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 23, _funnel: [2, 23]
optiwindnet.pathfinding: <15> RIGHT _new(22) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 23, _funnel: [2, 23]
<15> infranear
optiwindnet.pathfinding: <15> infranear
_find_paths[101]: advancer id <15>
optiwindnet.pathfinding: _find_paths[101]: advancer id <15>
pseudoedge «22->23» added
optiwindnet.pathfinding: pseudoedge «22->23» added
<15> RIGHT _new(25) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 22, _funnel: [2, 23]
optiwindnet.pathfinding: <15> RIGHT _new(25) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 22, _funnel: [2, 23]
<15> infranear
optiwindnet.pathfinding: <15> infranear
_find_paths[102]: advancer id <33>
optiwindnet.pathfinding: _find_paths[102]: advancer id <33>
<33> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <33> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
<33> inside
optiwindnet.pathfinding: <33> inside
_find_paths[103]: advancer id <33>
optiwindnet.pathfinding: _find_paths[103]: advancer id <33>
<33> LEFT _new(24) _nearside(23) _farside(3) _apex(3), _wedge_end: 23 3, _funnel: [23, 3]
optiwindnet.pathfinding: <33> LEFT _new(24) _nearside(23) _farside(3) _apex(3), _wedge_end: 23 3, _funnel: [23, 3]
<33> inside
optiwindnet.pathfinding: <33> inside
_find_paths[104]: advancer id <33>
optiwindnet.pathfinding: _find_paths[104]: advancer id <33>
pseudoedge «24->3» added
optiwindnet.pathfinding: pseudoedge «24->3» added
<33> LEFT _new(25) _nearside(24) _farside(3) _apex(3), _wedge_end: 24 3, _funnel: [24, 3]
optiwindnet.pathfinding: <33> LEFT _new(25) _nearside(24) _farside(3) _apex(3), _wedge_end: 24 3, _funnel: [24, 3]
<33> inside
optiwindnet.pathfinding: <33> inside
_find_paths[105]: advancer id <33>
optiwindnet.pathfinding: _find_paths[105]: advancer id <33>
pseudoedge «25->3» added
optiwindnet.pathfinding: pseudoedge «25->3» added
<33> RIGHT _new(4) _nearside(3) _farside(25) _apex(3), _wedge_end: 25 3, _funnel: [25, 3]
optiwindnet.pathfinding: <33> RIGHT _new(4) _nearside(3) _farside(25) _apex(3), _wedge_end: 25 3, _funnel: [25, 3]
<33> inside
optiwindnet.pathfinding: <33> inside
_find_paths[106]: advancer id <33>
optiwindnet.pathfinding: _find_paths[106]: advancer id <33>
pseudoedge «4->3» added
optiwindnet.pathfinding: pseudoedge «4->3» added
<33> RIGHT _new(2) _nearside(4) _farside(25) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]
optiwindnet.pathfinding: <33> RIGHT _new(2) _nearside(4) _farside(25) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]
<33> ultrafar
optiwindnet.pathfinding: <33> ultrafar
_find_paths[107]: advancer id <34>
optiwindnet.pathfinding: _find_paths[107]: advancer id <34>
<34> LEFT _new(2) _nearside(25) _farside(4) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]
optiwindnet.pathfinding: <34> LEFT _new(2) _nearside(25) _farside(4) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]
<34> infranear
optiwindnet.pathfinding: <34> infranear
_find_paths[108]: advancer id <24>
optiwindnet.pathfinding: _find_paths[108]: advancer id <24>
pseudoedge «1->0» added
optiwindnet.pathfinding: pseudoedge «1->0» added
<24> RIGHT _new(27) _nearside(12) _farside(0) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]
optiwindnet.pathfinding: <24> RIGHT _new(27) _nearside(12) _farside(0) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]
<24> ultrafar
optiwindnet.pathfinding: <24> ultrafar
_find_paths[109]: advancer id <35>
optiwindnet.pathfinding: _find_paths[109]: advancer id <35>
<35> LEFT _new(27) _nearside(0) _farside(12) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]
optiwindnet.pathfinding: <35> LEFT _new(27) _nearside(0) _farside(12) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]
<35> infranear
optiwindnet.pathfinding: <35> infranear
_find_paths[110]: advancer id <24>
optiwindnet.pathfinding: _find_paths[110]: advancer id <24>
pseudoedge «27->0» added
optiwindnet.pathfinding: pseudoedge «27->0» added
<24> new best pn for (27, -9223372036854775808) via 0: d_path = 8243.27
optiwindnet.pathfinding: <24> new best pn for (27, -9223372036854775808) via 0: d_path = 8243.27
<24> RIGHT _new(3) _nearside(27) _farside(1) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
optiwindnet.pathfinding: <24> RIGHT _new(3) _nearside(27) _farside(1) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
<24> ultrafar
optiwindnet.pathfinding: <24> ultrafar
_find_paths[111]: advancer id <35>
optiwindnet.pathfinding: _find_paths[111]: advancer id <35>
{35} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {35} advancer reached DEAD-END (root or mesh edge)
_find_paths[112]: advancer id <36>
optiwindnet.pathfinding: _find_paths[112]: advancer id <36>
<36> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
optiwindnet.pathfinding: <36> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]
<36> infranear
optiwindnet.pathfinding: <36> infranear
_find_paths[113]: advancer id <15>
optiwindnet.pathfinding: _find_paths[113]: advancer id <15>
pseudoedge «25->22» added
optiwindnet.pathfinding: pseudoedge «25->22» added
<15> RIGHT _new(4) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]
optiwindnet.pathfinding: <15> RIGHT _new(4) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]
<15> infranear
optiwindnet.pathfinding: <15> infranear
_find_paths[114]: advancer id <37>
optiwindnet.pathfinding: _find_paths[114]: advancer id <37>
<37> LEFT _new(4) _nearside(2) _farside(23) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]
optiwindnet.pathfinding: <37> LEFT _new(4) _nearside(2) _farside(23) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]
<37> ultrafar
optiwindnet.pathfinding: <37> ultrafar
_find_paths[115]: advancer id <21>
optiwindnet.pathfinding: _find_paths[115]: advancer id <21>
pseudoedge «12->1» added
optiwindnet.pathfinding: pseudoedge «12->1» added
{21} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {21} advancer reached DEAD-END (root or mesh edge)
_find_paths[116]: advancer id <22>
optiwindnet.pathfinding: _find_paths[116]: advancer id <22>
<22> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
optiwindnet.pathfinding: <22> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<22> inside
optiwindnet.pathfinding: <22> inside
_find_paths[117]: advancer id <22>
optiwindnet.pathfinding: _find_paths[117]: advancer id <22>
pseudoedge «0->1» added
optiwindnet.pathfinding: pseudoedge «0->1» added
<22> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <22> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<22> infranear
optiwindnet.pathfinding: <22> infranear
_find_paths[118]: advancer id <38>
optiwindnet.pathfinding: _find_paths[118]: advancer id <38>
<38> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <38> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<38> ultrafar
optiwindnet.pathfinding: <38> ultrafar
_find_paths[119]: advancer id <0>
optiwindnet.pathfinding: _find_paths[119]: advancer id <0>
pseudoedge «9->7» added
optiwindnet.pathfinding: pseudoedge «9->7» added
<0> RIGHT _new(26) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]
optiwindnet.pathfinding: <0> RIGHT _new(26) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]
<0> infranear
optiwindnet.pathfinding: <0> infranear
_find_paths[120]: advancer id <12>
optiwindnet.pathfinding: _find_paths[120]: advancer id <12>
<12> RIGHT _new(8) _nearside(7) _farside(9) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
optiwindnet.pathfinding: <12> RIGHT _new(8) _nearside(7) _farside(9) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
<12> inside
optiwindnet.pathfinding: <12> inside
_find_paths[121]: advancer id <12>
optiwindnet.pathfinding: _find_paths[121]: advancer id <12>
pseudoedge «8->7» added
optiwindnet.pathfinding: pseudoedge «8->7» added
<12> LEFT _new(10) _nearside(9) _farside(8) _apex(7), _wedge_end: 9 8, _funnel: [9, 8]
optiwindnet.pathfinding: <12> LEFT _new(10) _nearside(9) _farside(8) _apex(7), _wedge_end: 9 8, _funnel: [9, 8]
<12> ultrafar
optiwindnet.pathfinding: <12> ultrafar
_find_paths[122]: advancer id <39>
optiwindnet.pathfinding: _find_paths[122]: advancer id <39>
<39> LEFT _new(26) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]
optiwindnet.pathfinding: <39> LEFT _new(26) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]
<39> ultrafar
optiwindnet.pathfinding: <39> ultrafar
_find_paths[123]: advancer id <40>
optiwindnet.pathfinding: _find_paths[123]: advancer id <40>
<40> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
optiwindnet.pathfinding: <40> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]
<40> inside
optiwindnet.pathfinding: <40> inside
_find_paths[124]: advancer id <40>
optiwindnet.pathfinding: _find_paths[124]: advancer id <40>
<40> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]
optiwindnet.pathfinding: <40> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]
<40> inside
optiwindnet.pathfinding: <40> inside
pseudoedge «6->7» added
optiwindnet.pathfinding: pseudoedge «6->7» added
{40} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {40} advancer reached DEAD-END (not portals)
_find_paths[125]: advancer id <0>
optiwindnet.pathfinding: _find_paths[125]: advancer id <0>
pseudoedge «26->7» added
optiwindnet.pathfinding: pseudoedge «26->7» added
{0} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {0} advancer reached DEAD-END (root or mesh edge)
_find_paths[126]: advancer id <39>
optiwindnet.pathfinding: _find_paths[126]: advancer id <39>
<39> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
optiwindnet.pathfinding: <39> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<39> infranear
optiwindnet.pathfinding: <39> infranear
_find_paths[127]: advancer id <41>
optiwindnet.pathfinding: _find_paths[127]: advancer id <41>
<41> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
optiwindnet.pathfinding: <41> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]
<41> ultrafar
optiwindnet.pathfinding: <41> ultrafar
_find_paths[128]: advancer id <12>
optiwindnet.pathfinding: _find_paths[128]: advancer id <12>
pseudoedge «10->8» added
optiwindnet.pathfinding: pseudoedge «10->8» added
<12> RIGHT _new(6) _nearside(8) _farside(10) _apex(8), _wedge_end: 10 8, _funnel: [10, 8]
optiwindnet.pathfinding: <12> RIGHT _new(6) _nearside(8) _farside(10) _apex(8), _wedge_end: 10 8, _funnel: [10, 8]
<12> inside
optiwindnet.pathfinding: <12> inside
_find_paths[129]: advancer id <12>
optiwindnet.pathfinding: _find_paths[129]: advancer id <12>
pseudoedge «6->8» added
optiwindnet.pathfinding: pseudoedge «6->8» added
<12> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]
optiwindnet.pathfinding: <12> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]
<12> inside
optiwindnet.pathfinding: <12> inside
_find_paths[130]: advancer id <37>
optiwindnet.pathfinding: _find_paths[130]: advancer id <37>
pseudoedge «4->22» added
optiwindnet.pathfinding: pseudoedge «4->22» added
<37> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]
optiwindnet.pathfinding: <37> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]
<37> ultrafar
optiwindnet.pathfinding: <37> ultrafar
_find_paths[131]: advancer id <33>
optiwindnet.pathfinding: _find_paths[131]: advancer id <33>
pseudoedge «2->25» added
optiwindnet.pathfinding: pseudoedge «2->25» added
<33> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]
optiwindnet.pathfinding: <33> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]
<33> inside
optiwindnet.pathfinding: <33> inside
_find_paths[132]: advancer id <33>
optiwindnet.pathfinding: _find_paths[132]: advancer id <33>
pseudoedge «22->25» added
optiwindnet.pathfinding: pseudoedge «22->25» added
<33> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]
optiwindnet.pathfinding: <33> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]
<33> infranear
optiwindnet.pathfinding: <33> infranear
_find_paths[133]: advancer id <33>
optiwindnet.pathfinding: _find_paths[133]: advancer id <33>
pseudoedge «23->22» added
optiwindnet.pathfinding: pseudoedge «23->22» added
{33} advancer revisited triangle
optiwindnet.pathfinding: {33} advancer revisited triangle
_find_paths[134]: advancer id <25>
optiwindnet.pathfinding: _find_paths[134]: advancer id <25>
pseudoedge «17->9» added
optiwindnet.pathfinding: pseudoedge «17->9» added
{25} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {25} advancer reached DEAD-END (root or mesh edge)
_find_paths[135]: advancer id <26>
optiwindnet.pathfinding: _find_paths[135]: advancer id <26>
<26> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
optiwindnet.pathfinding: <26> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<26> inside
optiwindnet.pathfinding: <26> inside
_find_paths[136]: advancer id <26>
optiwindnet.pathfinding: _find_paths[136]: advancer id <26>
pseudoedge «11->9» added
optiwindnet.pathfinding: pseudoedge «11->9» added
<26> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
optiwindnet.pathfinding: <26> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
<26> ultrafar
optiwindnet.pathfinding: <26> ultrafar
_find_paths[137]: advancer id <42>
optiwindnet.pathfinding: _find_paths[137]: advancer id <42>
<42> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
optiwindnet.pathfinding: <42> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<42> inside
optiwindnet.pathfinding: <42> inside
_find_paths[138]: advancer id <42>
optiwindnet.pathfinding: _find_paths[138]: advancer id <42>
<42> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
optiwindnet.pathfinding: <42> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
<42> inside
optiwindnet.pathfinding: <42> inside
pseudoedge «10->9» added
optiwindnet.pathfinding: pseudoedge «10->9» added
{42} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {42} advancer reached DEAD-END (not portals)
_find_paths[139]: advancer id <14>
optiwindnet.pathfinding: _find_paths[139]: advancer id <14>
pseudoedge «12->1» added
optiwindnet.pathfinding: pseudoedge «12->1» added
{14} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {14} advancer reached DEAD-END (root or mesh edge)
_find_paths[140]: advancer id <27>
optiwindnet.pathfinding: _find_paths[140]: advancer id <27>
<27> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
optiwindnet.pathfinding: <27> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]
<27> inside
optiwindnet.pathfinding: <27> inside
_find_paths[141]: advancer id <27>
optiwindnet.pathfinding: _find_paths[141]: advancer id <27>
pseudoedge «0->1» added
optiwindnet.pathfinding: pseudoedge «0->1» added
<27> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <27> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<27> infranear
optiwindnet.pathfinding: <27> infranear
_find_paths[142]: advancer id <43>
optiwindnet.pathfinding: _find_paths[142]: advancer id <43>
<43> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
optiwindnet.pathfinding: <43> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]
<43> ultrafar
optiwindnet.pathfinding: <43> ultrafar
_find_paths[143]: advancer id <16>
optiwindnet.pathfinding: _find_paths[143]: advancer id <16>
pseudoedge «20->7» added
optiwindnet.pathfinding: pseudoedge «20->7» added
<16> new best pn for (20, -9223372036854775808) via 7: d_path = 2269.46
optiwindnet.pathfinding: <16> new best pn for (20, -9223372036854775808) via 7: d_path = 2269.46
<16> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
optiwindnet.pathfinding: <16> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
<16> inside
optiwindnet.pathfinding: <16> inside
_find_paths[144]: advancer id <16>
optiwindnet.pathfinding: _find_paths[144]: advancer id <16>
pseudoedge «6->7» added
optiwindnet.pathfinding: pseudoedge «6->7» added
{16} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {16} advancer reached DEAD-END (root or mesh edge)
_find_paths[145]: advancer id <19>
optiwindnet.pathfinding: _find_paths[145]: advancer id <19>
pseudoedge «2->0» added
optiwindnet.pathfinding: pseudoedge «2->0» added
<19> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
optiwindnet.pathfinding: <19> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<19> ultrafar
optiwindnet.pathfinding: <19> ultrafar
_find_paths[146]: advancer id <28>
optiwindnet.pathfinding: _find_paths[146]: advancer id <28>
<28> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
optiwindnet.pathfinding: <28> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
<28> inside
optiwindnet.pathfinding: <28> inside
pseudoedge «1->0» added
optiwindnet.pathfinding: pseudoedge «1->0» added
{28} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {28} advancer reached DEAD-END (not portals)
_find_paths[147]: advancer id <29>
optiwindnet.pathfinding: _find_paths[147]: advancer id <29>
pseudoedge «1->3» added
optiwindnet.pathfinding: pseudoedge «1->3» added
<29> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <29> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<29> infranear
optiwindnet.pathfinding: <29> infranear
_find_paths[148]: advancer id <30>
optiwindnet.pathfinding: _find_paths[148]: advancer id <30>
<30> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]
optiwindnet.pathfinding: <30> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]
<30> inside
optiwindnet.pathfinding: <30> inside
_find_paths[149]: advancer id <44>
optiwindnet.pathfinding: _find_paths[149]: advancer id <44>
<44> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
optiwindnet.pathfinding: <44> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]
<44> ultrafar
optiwindnet.pathfinding: <44> ultrafar
_find_paths[150]: advancer id <37>
optiwindnet.pathfinding: _find_paths[150]: advancer id <37>
pseudoedge «3->25» added
optiwindnet.pathfinding: pseudoedge «3->25» added
<37> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
optiwindnet.pathfinding: <37> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<37> inside
optiwindnet.pathfinding: <37> inside
_find_paths[151]: advancer id <37>
optiwindnet.pathfinding: _find_paths[151]: advancer id <37>
pseudoedge «24->25» added
optiwindnet.pathfinding: pseudoedge «24->25» added
<37> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
optiwindnet.pathfinding: <37> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<37> infranear
optiwindnet.pathfinding: <37> infranear
_find_paths[152]: advancer id <37>
optiwindnet.pathfinding: _find_paths[152]: advancer id <37>
pseudoedge «23->24» added
optiwindnet.pathfinding: pseudoedge «23->24» added
{37} advancer revisited triangle
optiwindnet.pathfinding: {37} advancer revisited triangle
_find_paths[153]: advancer id <24>
optiwindnet.pathfinding: _find_paths[153]: advancer id <24>
pseudoedge «3->1» added
optiwindnet.pathfinding: pseudoedge «3->1» added
<24> LEFT _new(2) _nearside(1) _farside(3) _apex(1), _wedge_end: 1 3, _funnel: [1, 3]
optiwindnet.pathfinding: <24> LEFT _new(2) _nearside(1) _farside(3) _apex(1), _wedge_end: 1 3, _funnel: [1, 3]
<24> inside
optiwindnet.pathfinding: <24> inside
_find_paths[154]: advancer id <24>
optiwindnet.pathfinding: _find_paths[154]: advancer id <24>
pseudoedge «2->1» added
optiwindnet.pathfinding: pseudoedge «2->1» added
<24> RIGHT _new(23) _nearside(3) _farside(2) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <24> RIGHT _new(23) _nearside(3) _farside(2) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]
<24> inside
optiwindnet.pathfinding: <24> inside
_find_paths[155]: advancer id <24>
optiwindnet.pathfinding: _find_paths[155]: advancer id <24>
pseudoedge «23->1» added
optiwindnet.pathfinding: pseudoedge «23->1» added
<24> RIGHT _new(22) _nearside(23) _farside(2) _apex(1), _wedge_end: 2 23, _funnel: [2, 23]
optiwindnet.pathfinding: <24> RIGHT _new(22) _nearside(23) _farside(2) _apex(1), _wedge_end: 2 23, _funnel: [2, 23]
<24> inside
optiwindnet.pathfinding: <24> inside
_find_paths[156]: advancer id <24>
optiwindnet.pathfinding: _find_paths[156]: advancer id <24>
pseudoedge «22->1» added
optiwindnet.pathfinding: pseudoedge «22->1» added
<24> RIGHT _new(25) _nearside(22) _farside(2) _apex(1), _wedge_end: 2 22, _funnel: [2, 22]
optiwindnet.pathfinding: <24> RIGHT _new(25) _nearside(22) _farside(2) _apex(1), _wedge_end: 2 22, _funnel: [2, 22]
<24> infranear
optiwindnet.pathfinding: <24> infranear
_find_paths[157]: advancer id <45>
optiwindnet.pathfinding: _find_paths[157]: advancer id <45>
<45> LEFT _new(23) _nearside(2) _farside(3) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <45> LEFT _new(23) _nearside(2) _farside(3) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]
<45> inside
optiwindnet.pathfinding: <45> inside
_find_paths[158]: advancer id <45>
optiwindnet.pathfinding: _find_paths[158]: advancer id <45>
<45> LEFT _new(24) _nearside(23) _farside(3) _apex(1), _wedge_end: 23 3, _funnel: [23, 3]
optiwindnet.pathfinding: <45> LEFT _new(24) _nearside(23) _farside(3) _apex(1), _wedge_end: 23 3, _funnel: [23, 3]
<45> inside
optiwindnet.pathfinding: <45> inside
_find_paths[159]: advancer id <45>
optiwindnet.pathfinding: _find_paths[159]: advancer id <45>
pseudoedge «24->1» added
optiwindnet.pathfinding: pseudoedge «24->1» added
<45> LEFT _new(25) _nearside(24) _farside(3) _apex(1), _wedge_end: 24 3, _funnel: [24, 3]
optiwindnet.pathfinding: <45> LEFT _new(25) _nearside(24) _farside(3) _apex(1), _wedge_end: 24 3, _funnel: [24, 3]
<45> infranear
optiwindnet.pathfinding: <45> infranear
_find_paths[160]: advancer id <36>
optiwindnet.pathfinding: _find_paths[160]: advancer id <36>
<36> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]
optiwindnet.pathfinding: <36> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]
<36> ultrafar
optiwindnet.pathfinding: <36> ultrafar
_find_paths[161]: advancer id <36>
optiwindnet.pathfinding: _find_paths[161]: advancer id <36>
pseudoedge «28->1» added
optiwindnet.pathfinding: pseudoedge «28->1» added
<36> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <36> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<36> ultrafar
optiwindnet.pathfinding: <36> ultrafar
_find_paths[162]: advancer id <46>
optiwindnet.pathfinding: _find_paths[162]: advancer id <46>
<46> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
optiwindnet.pathfinding: <46> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]
<46> infranear
optiwindnet.pathfinding: <46> infranear
_find_paths[163]: advancer id <30>
optiwindnet.pathfinding: _find_paths[163]: advancer id <30>
pseudoedge «2->3» added
optiwindnet.pathfinding: pseudoedge «2->3» added
<30> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <30> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
<30> inside
optiwindnet.pathfinding: <30> inside
_find_paths[164]: advancer id <47>
optiwindnet.pathfinding: _find_paths[164]: advancer id <47>
<47> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
optiwindnet.pathfinding: <47> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]
<47> inside
optiwindnet.pathfinding: <47> inside
_find_paths[165]: advancer id <12>
optiwindnet.pathfinding: _find_paths[165]: advancer id <12>
pseudoedge «11->8» added
optiwindnet.pathfinding: pseudoedge «11->8» added
<12> RIGHT _new(16) _nearside(6) _farside(11) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]
optiwindnet.pathfinding: <12> RIGHT _new(16) _nearside(6) _farside(11) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]
<12> inside
optiwindnet.pathfinding: <12> inside
_find_paths[166]: advancer id <12>
optiwindnet.pathfinding: _find_paths[166]: advancer id <12>
pseudoedge «16->8» added
optiwindnet.pathfinding: pseudoedge «16->8» added
<12> RIGHT _new(17) _nearside(16) _farside(11) _apex(8), _wedge_end: 11 16, _funnel: [11, 16]
optiwindnet.pathfinding: <12> RIGHT _new(17) _nearside(16) _farside(11) _apex(8), _wedge_end: 11 16, _funnel: [11, 16]
<12> inside
optiwindnet.pathfinding: <12> inside
_find_paths[167]: advancer id <48>
optiwindnet.pathfinding: _find_paths[167]: advancer id <48>
<48> LEFT _new(16) _nearside(11) _farside(6) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]
optiwindnet.pathfinding: <48> LEFT _new(16) _nearside(11) _farside(6) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]
<48> inside
optiwindnet.pathfinding: <48> inside
_find_paths[168]: advancer id <48>
optiwindnet.pathfinding: _find_paths[168]: advancer id <48>
<48> LEFT _new(15) _nearside(16) _farside(6) _apex(8), _wedge_end: 16 6, _funnel: [16, 6]
optiwindnet.pathfinding: <48> LEFT _new(15) _nearside(16) _farside(6) _apex(8), _wedge_end: 16 6, _funnel: [16, 6]
<48> inside
optiwindnet.pathfinding: <48> inside
_find_paths[169]: advancer id <22>
optiwindnet.pathfinding: _find_paths[169]: advancer id <22>
pseudoedge «2->0» added
optiwindnet.pathfinding: pseudoedge «2->0» added
<22> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
optiwindnet.pathfinding: <22> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<22> ultrafar
optiwindnet.pathfinding: <22> ultrafar
_find_paths[170]: advancer id <38>
optiwindnet.pathfinding: _find_paths[170]: advancer id <38>
<38> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
optiwindnet.pathfinding: <38> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
<38> inside
optiwindnet.pathfinding: <38> inside
pseudoedge «1->0» added
optiwindnet.pathfinding: pseudoedge «1->0» added
{38} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {38} advancer reached DEAD-END (not portals)
_find_paths[171]: advancer id <4>
optiwindnet.pathfinding: _find_paths[171]: advancer id <4>
pseudoedge «14->3» added
optiwindnet.pathfinding: pseudoedge «14->3» added
<4> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
optiwindnet.pathfinding: <4> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
<4> inside
optiwindnet.pathfinding: <4> inside
_find_paths[172]: advancer id <4>
optiwindnet.pathfinding: _find_paths[172]: advancer id <4>
pseudoedge «4->3» added
optiwindnet.pathfinding: pseudoedge «4->3» added
<4> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <4> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<4> ultrafar
optiwindnet.pathfinding: <4> ultrafar
_find_paths[173]: advancer id <49>
optiwindnet.pathfinding: _find_paths[173]: advancer id <49>
<49> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <49> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<49> infranear
optiwindnet.pathfinding: <49> infranear
_find_paths[174]: advancer id <49>
optiwindnet.pathfinding: _find_paths[174]: advancer id <49>
pseudoedge «5->4» added
optiwindnet.pathfinding: pseudoedge «5->4» added
<49> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
optiwindnet.pathfinding: <49> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
<49> ultrafar
optiwindnet.pathfinding: <49> ultrafar
_find_paths[175]: advancer id <23>
optiwindnet.pathfinding: _find_paths[175]: advancer id <23>
{23} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {23} advancer reached DEAD-END (root or mesh edge)
_find_paths[176]: advancer id <24>
optiwindnet.pathfinding: _find_paths[176]: advancer id <24>
pseudoedge «25->22» added
optiwindnet.pathfinding: pseudoedge «25->22» added
<24> RIGHT _new(4) _nearside(22) _farside(2) _apex(1), _wedge_end: 2 25, _funnel: [2, 22]
optiwindnet.pathfinding: <24> RIGHT _new(4) _nearside(22) _farside(2) _apex(1), _wedge_end: 2 25, _funnel: [2, 22]
<24> infranear
optiwindnet.pathfinding: <24> infranear
_find_paths[177]: advancer id <50>
optiwindnet.pathfinding: _find_paths[177]: advancer id <50>
<50> LEFT _new(4) _nearside(2) _farside(22) _apex(1), _wedge_end: 2 25, _funnel: [2, 22]
optiwindnet.pathfinding: <50> LEFT _new(4) _nearside(2) _farside(22) _apex(1), _wedge_end: 2 25, _funnel: [2, 22]
<50> ultrafar
optiwindnet.pathfinding: <50> ultrafar
_find_paths[178]: advancer id <45>
optiwindnet.pathfinding: _find_paths[178]: advancer id <45>
pseudoedge «25->24» added
optiwindnet.pathfinding: pseudoedge «25->24» added
<45> RIGHT _new(4) _nearside(3) _farside(24) _apex(1), _wedge_end: 25 3, _funnel: [24, 3]
optiwindnet.pathfinding: <45> RIGHT _new(4) _nearside(3) _farside(24) _apex(1), _wedge_end: 25 3, _funnel: [24, 3]
<45> ultrafar
optiwindnet.pathfinding: <45> ultrafar
_find_paths[179]: advancer id <12>
optiwindnet.pathfinding: _find_paths[179]: advancer id <12>
pseudoedge «17->8» added
optiwindnet.pathfinding: pseudoedge «17->8» added
<12> RIGHT _new(9) _nearside(17) _farside(11) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]
optiwindnet.pathfinding: <12> RIGHT _new(9) _nearside(17) _farside(11) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]
<12> ultrafar
optiwindnet.pathfinding: <12> ultrafar
_find_paths[180]: advancer id <51>
optiwindnet.pathfinding: _find_paths[180]: advancer id <51>
<51> LEFT _new(9) _nearside(11) _farside(17) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]
optiwindnet.pathfinding: <51> LEFT _new(9) _nearside(11) _farside(17) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]
<51> infranear
optiwindnet.pathfinding: <51> infranear
_find_paths[181]: advancer id <26>
optiwindnet.pathfinding: _find_paths[181]: advancer id <26>
pseudoedge «16->11» added
optiwindnet.pathfinding: pseudoedge «16->11» added
{26} advancer revisited triangle
optiwindnet.pathfinding: {26} advancer revisited triangle
_find_paths[182]: advancer id <10>
optiwindnet.pathfinding: _find_paths[182]: advancer id <10>
pseudoedge «14->3» added
optiwindnet.pathfinding: pseudoedge «14->3» added
<10> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
optiwindnet.pathfinding: <10> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
<10> inside
optiwindnet.pathfinding: <10> inside
_find_paths[183]: advancer id <10>
optiwindnet.pathfinding: _find_paths[183]: advancer id <10>
pseudoedge «4->3» added
optiwindnet.pathfinding: pseudoedge «4->3» added
<10> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <10> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<10> ultrafar
optiwindnet.pathfinding: <10> ultrafar
_find_paths[184]: advancer id <52>
optiwindnet.pathfinding: _find_paths[184]: advancer id <52>
<52> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <52> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<52> infranear
optiwindnet.pathfinding: <52> infranear
_find_paths[185]: advancer id <10>
optiwindnet.pathfinding: _find_paths[185]: advancer id <10>
pseudoedge «5->4» added
optiwindnet.pathfinding: pseudoedge «5->4» added
{10} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {10} advancer reached DEAD-END (root or mesh edge)
_find_paths[186]: advancer id <52>
optiwindnet.pathfinding: _find_paths[186]: advancer id <52>
<52> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
optiwindnet.pathfinding: <52> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
<52> ultrafar
optiwindnet.pathfinding: <52> ultrafar
_find_paths[187]: advancer id <18>
optiwindnet.pathfinding: _find_paths[187]: advancer id <18>
{18} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {18} advancer reached DEAD-END (root or mesh edge)
_find_paths[188]: advancer id <50>
optiwindnet.pathfinding: _find_paths[188]: advancer id <50>
pseudoedge «4->22» added
optiwindnet.pathfinding: pseudoedge «4->22» added
<50> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]
optiwindnet.pathfinding: <50> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]
<50> ultrafar
optiwindnet.pathfinding: <50> ultrafar
_find_paths[189]: advancer id <27>
optiwindnet.pathfinding: _find_paths[189]: advancer id <27>
pseudoedge «2->0» added
optiwindnet.pathfinding: pseudoedge «2->0» added
<27> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
optiwindnet.pathfinding: <27> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]
<27> ultrafar
optiwindnet.pathfinding: <27> ultrafar
_find_paths[190]: advancer id <43>
optiwindnet.pathfinding: _find_paths[190]: advancer id <43>
<43> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
optiwindnet.pathfinding: <43> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]
<43> inside
optiwindnet.pathfinding: <43> inside
pseudoedge «1->0» added
optiwindnet.pathfinding: pseudoedge «1->0» added
{43} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {43} advancer reached DEAD-END (not portals)
_find_paths[191]: advancer id <45>
optiwindnet.pathfinding: _find_paths[191]: advancer id <45>
pseudoedge «4->24» added
optiwindnet.pathfinding: pseudoedge «4->24» added
<45> RIGHT _new(2) _nearside(4) _farside(25) _apex(24), _wedge_end: 25 4, _funnel: [25, 4]
optiwindnet.pathfinding: <45> RIGHT _new(2) _nearside(4) _farside(25) _apex(24), _wedge_end: 25 4, _funnel: [25, 4]
<45> ultrafar
optiwindnet.pathfinding: <45> ultrafar
_find_paths[192]: advancer id <53>
optiwindnet.pathfinding: _find_paths[192]: advancer id <53>
<53> LEFT _new(2) _nearside(25) _farside(4) _apex(24), _wedge_end: 25 4, _funnel: [25, 4]
optiwindnet.pathfinding: <53> LEFT _new(2) _nearside(25) _farside(4) _apex(24), _wedge_end: 25 4, _funnel: [25, 4]
<53> infranear
optiwindnet.pathfinding: <53> infranear
_find_paths[193]: advancer id <19>
optiwindnet.pathfinding: _find_paths[193]: advancer id <19>
pseudoedge «21->0» added
optiwindnet.pathfinding: pseudoedge «21->0» added
<19> new best pn for (21, -9223372036854775808) via 0: d_path = 2839.14
optiwindnet.pathfinding: <19> new best pn for (21, -9223372036854775808) via 0: d_path = 2839.14
{19} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {19} advancer reached DEAD-END (root or mesh edge)
_find_paths[194]: advancer id <11>
optiwindnet.pathfinding: _find_paths[194]: advancer id <11>
pseudoedge «19->9» added
optiwindnet.pathfinding: pseudoedge «19->9» added
<11> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
optiwindnet.pathfinding: <11> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
<11> inside
optiwindnet.pathfinding: <11> inside
_find_paths[195]: advancer id <11>
optiwindnet.pathfinding: _find_paths[195]: advancer id <11>
pseudoedge «7->9» added
optiwindnet.pathfinding: pseudoedge «7->9» added
<11> RIGHT _new(8) _nearside(7) _farside(9) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]
optiwindnet.pathfinding: <11> RIGHT _new(8) _nearside(7) _farside(9) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]
<11> inside
optiwindnet.pathfinding: <11> inside
_find_paths[196]: advancer id <11>
optiwindnet.pathfinding: _find_paths[196]: advancer id <11>
pseudoedge «8->9» added
optiwindnet.pathfinding: pseudoedge «8->9» added
<11> LEFT _new(10) _nearside(9) _farside(8) _apex(9), _wedge_end: 9 8, _funnel: [9, 8]
optiwindnet.pathfinding: <11> LEFT _new(10) _nearside(9) _farside(8) _apex(9), _wedge_end: 9 8, _funnel: [9, 8]
<11> inside
optiwindnet.pathfinding: <11> inside
_find_paths[197]: advancer id <11>
optiwindnet.pathfinding: _find_paths[197]: advancer id <11>
pseudoedge «10->9» added
optiwindnet.pathfinding: pseudoedge «10->9» added
<11> RIGHT _new(6) _nearside(8) _farside(10) _apex(9), _wedge_end: 10 8, _funnel: [10, 8]
optiwindnet.pathfinding: <11> RIGHT _new(6) _nearside(8) _farside(10) _apex(9), _wedge_end: 10 8, _funnel: [10, 8]
<11> inside
optiwindnet.pathfinding: <11> inside
_find_paths[198]: advancer id <11>
optiwindnet.pathfinding: _find_paths[198]: advancer id <11>
pseudoedge «6->9» added
optiwindnet.pathfinding: pseudoedge «6->9» added
<11> LEFT _new(11) _nearside(10) _farside(6) _apex(9), _wedge_end: 10 6, _funnel: [10, 6]
optiwindnet.pathfinding: <11> LEFT _new(11) _nearside(10) _farside(6) _apex(9), _wedge_end: 10 6, _funnel: [10, 6]
<11> infranear
optiwindnet.pathfinding: <11> infranear
_find_paths[199]: advancer id <11>
optiwindnet.pathfinding: _find_paths[199]: advancer id <11>
pseudoedge «11->10» added
optiwindnet.pathfinding: pseudoedge «11->10» added
{11} advancer revisited triangle
optiwindnet.pathfinding: {11} advancer revisited triangle
_find_paths[200]: advancer id <55>
optiwindnet.pathfinding: _find_paths[200]: advancer id <55>
<55> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]
optiwindnet.pathfinding: <55> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]
<55> inside
optiwindnet.pathfinding: <55> inside
_find_paths[201]: advancer id <55>
optiwindnet.pathfinding: _find_paths[201]: advancer id <55>
<55> RIGHT _new(6) _nearside(7) _farside(8) _apex(9), _wedge_end: 8 7, _funnel: [8, 7]
optiwindnet.pathfinding: <55> RIGHT _new(6) _nearside(7) _farside(8) _apex(9), _wedge_end: 8 7, _funnel: [8, 7]
<55> ultrafar
optiwindnet.pathfinding: <55> ultrafar
pseudoedge «6->8» added
optiwindnet.pathfinding: pseudoedge «6->8» added
{55} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {55} advancer reached DEAD-END (not portals)
_find_paths[202]: advancer id <32>
optiwindnet.pathfinding: _find_paths[202]: advancer id <32>
{32} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {32} advancer reached DEAD-END (root or mesh edge)
_find_paths[203]: advancer id <54>
optiwindnet.pathfinding: _find_paths[203]: advancer id <54>
<54> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
optiwindnet.pathfinding: <54> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]
<54> inside
optiwindnet.pathfinding: <54> inside
_find_paths[204]: advancer id <54>
optiwindnet.pathfinding: _find_paths[204]: advancer id <54>
<54> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]
optiwindnet.pathfinding: <54> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]
<54> ultrafar
optiwindnet.pathfinding: <54> ultrafar
_find_paths[205]: advancer id <22>
optiwindnet.pathfinding: _find_paths[205]: advancer id <22>
pseudoedge «21->0» added
optiwindnet.pathfinding: pseudoedge «21->0» added
{22} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {22} advancer reached DEAD-END (root or mesh edge)
_find_paths[206]: advancer id <39>
optiwindnet.pathfinding: _find_paths[206]: advancer id <39>
pseudoedge «17->9» added
optiwindnet.pathfinding: pseudoedge «17->9» added
{39} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {39} advancer reached DEAD-END (root or mesh edge)
_find_paths[207]: advancer id <41>
optiwindnet.pathfinding: _find_paths[207]: advancer id <41>
<41> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
optiwindnet.pathfinding: <41> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<41> inside
optiwindnet.pathfinding: <41> inside
_find_paths[208]: advancer id <41>
optiwindnet.pathfinding: _find_paths[208]: advancer id <41>
pseudoedge «11->9» added
optiwindnet.pathfinding: pseudoedge «11->9» added
<41> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
optiwindnet.pathfinding: <41> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]
<41> ultrafar
optiwindnet.pathfinding: <41> ultrafar
_find_paths[209]: advancer id <56>
optiwindnet.pathfinding: _find_paths[209]: advancer id <56>
<56> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
optiwindnet.pathfinding: <56> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]
<56> inside
optiwindnet.pathfinding: <56> inside
_find_paths[210]: advancer id <56>
optiwindnet.pathfinding: _find_paths[210]: advancer id <56>
<56> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
optiwindnet.pathfinding: <56> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]
<56> inside
optiwindnet.pathfinding: <56> inside
pseudoedge «10->9» added
optiwindnet.pathfinding: pseudoedge «10->9» added
{56} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {56} advancer reached DEAD-END (not portals)
_find_paths[211]: advancer id <50>
optiwindnet.pathfinding: _find_paths[211]: advancer id <50>
pseudoedge «3->25» added
optiwindnet.pathfinding: pseudoedge «3->25» added
<50> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
optiwindnet.pathfinding: <50> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]
<50> inside
optiwindnet.pathfinding: <50> inside
_find_paths[212]: advancer id <50>
optiwindnet.pathfinding: _find_paths[212]: advancer id <50>
pseudoedge «24->25» added
optiwindnet.pathfinding: pseudoedge «24->25» added
<50> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
optiwindnet.pathfinding: <50> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]
<50> infranear
optiwindnet.pathfinding: <50> infranear
_find_paths[213]: advancer id <50>
optiwindnet.pathfinding: _find_paths[213]: advancer id <50>
pseudoedge «23->24» added
optiwindnet.pathfinding: pseudoedge «23->24» added
{50} advancer revisited triangle
optiwindnet.pathfinding: {50} advancer revisited triangle
_find_paths[214]: advancer id <45>
optiwindnet.pathfinding: _find_paths[214]: advancer id <45>
pseudoedge «2->25» added
optiwindnet.pathfinding: pseudoedge «2->25» added
<45> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]
optiwindnet.pathfinding: <45> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]
<45> inside
optiwindnet.pathfinding: <45> inside
_find_paths[215]: advancer id <45>
optiwindnet.pathfinding: _find_paths[215]: advancer id <45>
pseudoedge «22->25» added
optiwindnet.pathfinding: pseudoedge «22->25» added
<45> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]
optiwindnet.pathfinding: <45> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]
<45> infranear
optiwindnet.pathfinding: <45> infranear
_find_paths[216]: advancer id <45>
optiwindnet.pathfinding: _find_paths[216]: advancer id <45>
pseudoedge «23->22» added
optiwindnet.pathfinding: pseudoedge «23->22» added
{45} advancer revisited triangle
optiwindnet.pathfinding: {45} advancer revisited triangle
_find_paths[217]: advancer id <12>
optiwindnet.pathfinding: _find_paths[217]: advancer id <12>
pseudoedge «9->11» added
optiwindnet.pathfinding: pseudoedge «9->11» added
<12> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
optiwindnet.pathfinding: <12> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]
<12> inside
optiwindnet.pathfinding: <12> inside
pseudoedge «10->11» added
optiwindnet.pathfinding: pseudoedge «10->11» added
{12} advancer reached DEAD-END (not portals)
optiwindnet.pathfinding: {12} advancer reached DEAD-END (not portals)
_find_paths[218]: advancer id <51>
optiwindnet.pathfinding: _find_paths[218]: advancer id <51>
<51> RIGHT _new(26) _nearside(17) _farside(11) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]
optiwindnet.pathfinding: <51> RIGHT _new(26) _nearside(17) _farside(11) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]
<51> ultrafar
optiwindnet.pathfinding: <51> ultrafar
_find_paths[219]: advancer id <57>
optiwindnet.pathfinding: _find_paths[219]: advancer id <57>
<57> LEFT _new(26) _nearside(11) _farside(17) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]
optiwindnet.pathfinding: <57> LEFT _new(26) _nearside(11) _farside(17) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]
<57> infranear
optiwindnet.pathfinding: <57> infranear
_find_paths[220]: advancer id <51>
optiwindnet.pathfinding: _find_paths[220]: advancer id <51>
pseudoedge «26->11» added
optiwindnet.pathfinding: pseudoedge «26->11» added
<51> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
optiwindnet.pathfinding: <51> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<51> ultrafar
optiwindnet.pathfinding: <51> ultrafar
_find_paths[221]: advancer id <58>
optiwindnet.pathfinding: _find_paths[221]: advancer id <58>
<58> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
optiwindnet.pathfinding: <58> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]
<58> infranear
optiwindnet.pathfinding: <58> infranear
_find_paths[222]: advancer id <41>
optiwindnet.pathfinding: _find_paths[222]: advancer id <41>
pseudoedge «16->11» added
optiwindnet.pathfinding: pseudoedge «16->11» added
<41> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
optiwindnet.pathfinding: <41> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<41> inside
optiwindnet.pathfinding: <41> inside
_find_paths[223]: advancer id <59>
optiwindnet.pathfinding: _find_paths[223]: advancer id <59>
<59> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
optiwindnet.pathfinding: <59> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]
<59> inside
optiwindnet.pathfinding: <59> inside
_find_paths[224]: advancer id <54>
optiwindnet.pathfinding: _find_paths[224]: advancer id <54>
pseudoedge «20->7» added
optiwindnet.pathfinding: pseudoedge «20->7» added
<54> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
optiwindnet.pathfinding: <54> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]
<54> inside
optiwindnet.pathfinding: <54> inside
_find_paths[225]: advancer id <41>
optiwindnet.pathfinding: _find_paths[225]: advancer id <41>
pseudoedge «6->11» added
optiwindnet.pathfinding: pseudoedge «6->11» added
<41> LEFT _new(15) _nearside(16) _farside(6) _apex(11), _wedge_end: 16 6, _funnel: [16, 6]
optiwindnet.pathfinding: <41> LEFT _new(15) _nearside(16) _farside(6) _apex(11), _wedge_end: 16 6, _funnel: [16, 6]
<41> infranear
optiwindnet.pathfinding: <41> infranear
_find_paths[226]: advancer id <59>
optiwindnet.pathfinding: _find_paths[226]: advancer id <59>
<59> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]
optiwindnet.pathfinding: <59> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]
<59> inside
optiwindnet.pathfinding: <59> inside
_find_paths[227]: advancer id <59>
optiwindnet.pathfinding: _find_paths[227]: advancer id <59>
pseudoedge «10->11» added
optiwindnet.pathfinding: pseudoedge «10->11» added
<59> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
optiwindnet.pathfinding: <59> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]
<59> inside
optiwindnet.pathfinding: <59> inside
_find_paths[228]: advancer id <59>
optiwindnet.pathfinding: _find_paths[228]: advancer id <59>
pseudoedge «8->11» added
optiwindnet.pathfinding: pseudoedge «8->11» added
<59> RIGHT _new(9) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 10, _funnel: [8, 10]
optiwindnet.pathfinding: <59> RIGHT _new(9) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 10, _funnel: [8, 10]
<59> infranear
optiwindnet.pathfinding: <59> infranear
_find_paths[229]: advancer id <59>
optiwindnet.pathfinding: _find_paths[229]: advancer id <59>
pseudoedge «9->10» added
optiwindnet.pathfinding: pseudoedge «9->10» added
<59> RIGHT _new(7) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]
optiwindnet.pathfinding: <59> RIGHT _new(7) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]
<59> ultrafar
optiwindnet.pathfinding: <59> ultrafar
_find_paths[230]: advancer id <60>
optiwindnet.pathfinding: _find_paths[230]: advancer id <60>
<60> LEFT _new(7) _nearside(8) _farside(10) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]
optiwindnet.pathfinding: <60> LEFT _new(7) _nearside(8) _farside(10) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]
<60> infranear
optiwindnet.pathfinding: <60> infranear
_find_paths[231]: advancer id <36>
optiwindnet.pathfinding: _find_paths[231]: advancer id <36>
pseudoedge «14->3» added
optiwindnet.pathfinding: pseudoedge «14->3» added
<36> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
optiwindnet.pathfinding: <36> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]
<36> inside
optiwindnet.pathfinding: <36> inside
_find_paths[232]: advancer id <36>
optiwindnet.pathfinding: _find_paths[232]: advancer id <36>
pseudoedge «4->3» added
optiwindnet.pathfinding: pseudoedge «4->3» added
<36> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <36> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<36> ultrafar
optiwindnet.pathfinding: <36> ultrafar
_find_paths[233]: advancer id <61>
optiwindnet.pathfinding: _find_paths[233]: advancer id <61>
<61> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
optiwindnet.pathfinding: <61> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]
<61> infranear
optiwindnet.pathfinding: <61> infranear
_find_paths[234]: advancer id <36>
optiwindnet.pathfinding: _find_paths[234]: advancer id <36>
pseudoedge «5->4» added
optiwindnet.pathfinding: pseudoedge «5->4» added
{36} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {36} advancer reached DEAD-END (root or mesh edge)
_find_paths[235]: advancer id <61>
optiwindnet.pathfinding: _find_paths[235]: advancer id <61>
<61> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
optiwindnet.pathfinding: <61> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]
<61> ultrafar
optiwindnet.pathfinding: <61> ultrafar
_find_paths[236]: advancer id <46>
optiwindnet.pathfinding: _find_paths[236]: advancer id <46>
{46} advancer reached DEAD-END (root or mesh edge)
optiwindnet.pathfinding: {46} advancer reached DEAD-END (root or mesh edge)
_find_paths[237]: advancer id <60>
optiwindnet.pathfinding: _find_paths[237]: advancer id <60>
pseudoedge «7->8» added
optiwindnet.pathfinding: pseudoedge «7->8» added
{60} advancer revisited triangle
optiwindnet.pathfinding: {60} advancer revisited triangle
_find_paths[238]: advancer id <51>
optiwindnet.pathfinding: _find_paths[238]: advancer id <51>
pseudoedge «19->9» added
optiwindnet.pathfinding: pseudoedge «19->9» added
{51} advancer revisited triangle
optiwindnet.pathfinding: {51} advancer revisited triangle
PathFinder: loops performed: 238
optiwindnet.pathfinding: PathFinder: loops performed: 238
hook_candidates: [9, 10, 11]
optiwindnet.pathfinding: hook_candidates: [9, 10, 11]
best: hook = 10, dist = 909.25
optiwindnet.pathfinding: best: hook = 10, dist = 909.25
path: [10, 16, 15, -1]
optiwindnet.pathfinding: path: [10, 16, 15, -1]
<PathFinder: created 2 detour vertices, total length changed by 0.00%
optiwindnet.pathfinding: <PathFinder: created 2 detour vertices, total length changed by 0.00%
[15]:
wfn3.solution_info()
[15]:
{'router': 'EWRouter', 'capacity': 4, 'method': 'rootlust', 'iterations': 8}
[16]:
wfn3
[16]:
Set the logging level to WARNING so that only the effect of the verbose flag remains visible.
[17]:
logger_own.setLevel(logging.WARNING)
logger_pathfinding.setLevel(logging.WARNING)
Verbose (non-Python code)¶
Python’s logging only applies to Python code. For OptiWindNet’s functionality that is implemented as C extensions or external libraries and programs, a verbose=True option may be available.
The verbose flag controls whether the log of such code is displayed; it defaults to False. The MILP solvers and HGS-CVRP support it.
[18]:
res3 = wfn3.optimize(
router=MILPRouter(
solver_name='ortools.cp_sat',
time_limit=2,
mip_gap=0.001,
solver_options={'random_seed': 1234567},
verbose=True,
),
)
IntegerBoundsPreprocessor 239 rows, 156 columns, 814 entries with magnitude in [1.000000e+00, 4.000000e+00]
BoundPropagationPreprocessor 239 rows, 156 columns, 814 entries with magnitude in [1.000000e+00, 4.000000e+00]
ImpliedIntegerPreprocessor 239 rows, 156 columns, 814 entries with magnitude in [1.000000e+00, 4.000000e+00]
IntegerBoundsPreprocessor 239 rows, 156 columns, 814 entries with magnitude in [1.000000e+00, 4.000000e+00]
ReduceCostOverExclusiveOrConstraintPreprocessor 239 rows, 156 columns, 814 entries with magnitude in [1.000000e+00, 4.000000e+00]
Scaling to pure integer problem.
Num integers: 78/156 (implied: 0 in_inequalities: 0 max_scaling: 0) [MIP]
Warning: 78 continuous variable domain with fewer than 1000 values.
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: random_seed: 1234567 max_time_in_seconds: 2 log_search_progress: true catch_sigint_signal: false relative_gap_limit: 0.001 log_to_stdout: false
Setting number of workers to 16
Initial optimization model 'optiwindnet': (model_fingerprint: 0xc1ee98dc44934d9c)
#Variables: 156 (#bools: 66 in floating point objective) (132 primary variables)
- 78 Booleans in [0,1]
- 66 in [0,3]
- 12 in [0,4]
#kLinear2: 189
#kLinearN: 50 (#terms: 436)
Starting presolve at 0.00s
The solution hint is complete and is feasible.
[Scaling] Floating point objective has 66 terms with magnitude in [10.9147, 1573.29] average = 497.341
[Scaling] Objective coefficient relative error: 2.36737e-07
[Scaling] Objective worst-case absolute error: 7.86909e-05
[Scaling] Objective scaling factor: 131072
8.87e-05s 0.00e+00d [DetectDominanceRelations]
1.79e-03s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
1.50e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=23
3.06e-05s 0.00e+00d [DetectDuplicateColumns]
3.10e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 777 nodes and 1'427 arcs.
[Symmetry] Symmetry computation done. time: 0.000157662 dtime: 0.00017876
[SAT presolve] num removable Booleans: 0 / 144
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:165 literals:330 vars:132 one_side_vars:0 simple_definition:132 singleton_clauses:0
[SAT presolve] [3.7196e-05s] clauses:165 literals:330 vars:132 one_side_vars:0 simple_definition:132 singleton_clauses:0
[SAT presolve] [9.6431e-05s] clauses:165 literals:330 vars:132 one_side_vars:0 simple_definition:132 singleton_clauses:0
3.55e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.50e-03s 5.55e-04d [Probe] #probed=312 #equiv=66 #new_binary_clauses=12
6.77e-05s 2.07e-05d [MaxClique] Merged 176 constraints with 376 literals into 160 constraints with 344 literals
6.69e-05s 0.00e+00d [DetectDominanceRelations]
5.54e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
8.34e-05s 0.00e+00d [ProcessAtMostOneAndLinear] #num_changes=12
2.48e-05s 0.00e+00d [DetectDuplicateConstraints]
1.99e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
5.12e-05s 1.35e-06d [DetectDominatedLinearConstraints] #relevant_constraints=27 #num_inclusions=13
5.65e-06s 0.00e+00d [DetectDifferentVariables]
1.09e-04s 4.19e-06d [ProcessSetPPC] #relevant_constraints=42 #num_inclusions=40
3.94e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28
8.22e-05s 0.00e+00d [DetectEncodedComplexDomains]
6.82e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints]
3.11e-05s 1.56e-05d [FindBigAtMostOneAndLinearOverlap]
2.42e-05s 1.64e-05d [FindBigVerticalLinearOverlap]
7.35e-06s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23
3.67e-06s 0.00e+00d [MergeClauses]
5.08e-05s 0.00e+00d [DetectDominanceRelations]
4.41e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1
4.50e-05s 0.00e+00d [DetectDominanceRelations]
3.55e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
1.20e-05s 0.00e+00d [DetectDuplicateColumns]
1.75e-05s 0.00e+00d [DetectDuplicateConstraints]
[Symmetry] Graph for symmetry has 611 nodes and 888 arcs.
[Symmetry] Symmetry computation done. time: 6.4471e-05 dtime: 0.00010058
[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] [1.9211e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0
[SAT presolve] [4.9076e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0
2.48e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
1.05e-03s 1.92e-04d [Probe] #probed=288
3.17e-05s 1.39e-05d [MaxClique]
8.27e-05s 0.00e+00d [DetectDominanceRelations]
6.18e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
4.91e-05s 0.00e+00d [ProcessAtMostOneAndLinear]
3.70e-05s 0.00e+00d [DetectDuplicateConstraints]
2.10e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements]
4.44e-05s 1.01e-06d [DetectDominatedLinearConstraints] #relevant_constraints=26 #num_inclusions=12
4.94e-06s 0.00e+00d [DetectDifferentVariables]
2.84e-05s 5.54e-07d [ProcessSetPPC] #relevant_constraints=41
4.21e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28
7.11e-05s 0.00e+00d [DetectEncodedComplexDomains]
5.43e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints]
3.09e-05s 1.56e-05d [FindBigAtMostOneAndLinearOverlap]
2.70e-05s 1.64e-05d [FindBigVerticalLinearOverlap]
6.88e-06s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23
2.67e-06s 0.00e+00d [MergeClauses]
6.23e-05s 0.00e+00d [DetectDominanceRelations]
4.41e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1
2.12e-06s 0.00e+00d [MergeNoOverlap]
1.79e-06s 0.00e+00d [MergeNoOverlap2D]
3.92e-05s 0.00e+00d [ExpandObjective] #entries=456 #tight_variables=78 #tight_constraints=12
Presolve summary:
- 66 affine relations were detected.
- rule 'TODO linear inclusion: superset is equality' was applied 25 times.
- rule 'TODO linear2: convert ax + by != cte to clauses for large domains' was applied 72 times.
- rule 'affine: new relation' was applied 66 times.
- rule 'at_most_one: transformed into max clique' was applied 1 time.
- rule 'bool_or: implications' was applied 99 times.
- rule 'deductions: 288 stored' was applied 1 time.
- rule 'linear + amo: extracted enforcement literal' was applied 12 times.
- rule 'linear1: transformed to implication' was applied 66 times.
- rule 'linear2: contains a boolean' was applied 78 times.
- rule 'linear2: convert ax + by != cte to clauses' was applied 99 times.
- rule 'linear: positive at most one' was applied 11 times.
- rule 'linear: positive equal one' was applied 12 times.
- rule 'new_bool: integer encoding' was applied 66 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: add encoding constraint' was applied 66 times.
- rule 'variables: detect fully reified value encoding' was applied 12 times.
- rule 'variables: detect half reified value encoding' was applied 24 times.
Presolved optimization model 'optiwindnet': (model_fingerprint: 0x7b033dbe7ba61f10)
#Variables: 156 (#bools: 66 in objective) (132 primary variables)
- 78 Booleans in [0,1]
- 66 in [0,3]
- 12 in [0,4]
#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: 6.5349e-05 dtime: 9.604e-05
Preloading model.
#Bound 0.02s best:inf next:[5258.15779,30400.5387] initial_domain
#1 0.02s best:6575.68001 next:[5258.15779,6575.68] complete_hint
#Model 0.02s var:156/156 constraints:222/222
Starting search at 0.02s 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.02s best:6575.68001 next:[5378.2497,6575.68] am1_presolve (num_literals=66 num_am1=3 increase=15740686 work_done=247)
#Bound 0.02s best:6575.68001 next:[5444.84348,6575.68] default_lp
#Model 0.02s var:152/156 constraints:217/222
#Bound 0.02s best:6575.68001 next:[5605.60979,6575.68] quick_restart
#2 0.02s best:6564.76533 next:[5605.60979,6564.76532] graph_var_lns (d=5.00e-01 s=13 t=0.10 p=0.00 stall=0 h=base) [hint]
#Bound 0.02s best:6564.76533 next:[5654.566,6564.76532] default_lp
#Model 0.02s var:150/156 constraints:214/222
#Bound 0.02s best:6564.76533 next:[6097.49603,6564.76532] max_lp
#Model 0.02s var:146/156 constraints:210/222
#Model 0.02s var:138/156 constraints:200/222
#Model 0.03s var:132/156 constraints:194/222
#Model 0.03s var:124/156 constraints:184/222
#Bound 0.03s best:6564.76533 next:[6234.36678,6564.76532] no_lp
#Done 0.03s no_lp
#Model 0.03s var:69/156 constraints:111/222
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'core': 1 [ 12.98ms, 12.98ms] 12.98ms 0.00ns 12.98ms 2 [188.93us, 1.34ms] 765.32us 576.39us 1.53ms
'default_lp': 1 [ 13.54ms, 13.54ms] 13.54ms 0.00ns 13.54ms 2 [207.21us, 1.58ms] 891.22us 684.01us 1.78ms
'feasibility_pump': 1 [881.43us, 881.43us] 881.43us 0.00ns 881.43us 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
'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': 2 [ 1.96ms, 6.09ms] 4.03ms 2.07ms 8.06ms 2 [ 52.00ns, 1.98us] 1.02us 963.00ns 2.03us
'graph_cst_lns': 2 [ 1.62ms, 3.90ms] 2.76ms 1.14ms 5.52ms 2 [ 10.00ns, 42.19us] 21.10us 21.09us 42.20us
'graph_dec_lns': 2 [418.70us, 1.69ms] 1.06ms 636.91us 2.11ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'graph_var_lns': 2 [ 2.30ms, 3.66ms] 2.98ms 677.14us 5.96ms 2 [575.00ns, 2.64us] 1.61us 1.03us 3.21us
'lb_relax_lns': 1 [ 9.77ms, 9.77ms] 9.77ms 0.00ns 9.77ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'lb_tree_search': 1 [ 12.18ms, 12.18ms] 12.18ms 0.00ns 12.18ms 1 [679.01us, 679.01us] 679.01us 0.00ns 679.01us
'ls': 1 [ 8.67ms, 8.67ms] 8.67ms 0.00ns 8.67ms 1 [ 3.72ms, 3.72ms] 3.72ms 0.00ns 3.72ms
'ls_lin': 1 [955.53us, 955.53us] 955.53us 0.00ns 955.53us 1 [ 56.27us, 56.27us] 56.27us 0.00ns 56.27us
'max_lp': 1 [ 12.97ms, 12.97ms] 12.97ms 0.00ns 12.97ms 1 [804.39us, 804.39us] 804.39us 0.00ns 804.39us
'no_lp': 1 [ 12.09ms, 12.09ms] 12.09ms 0.00ns 12.09ms 2 [306.33us, 1.79ms] 1.05ms 741.13us 2.09ms
'objective_lb_search': 1 [ 12.10ms, 12.10ms] 12.10ms 0.00ns 12.10ms 2 [ 47.48us, 1.62ms] 831.91us 784.43us 1.66ms
'probing': 1 [ 12.14ms, 12.14ms] 12.14ms 0.00ns 12.14ms 2 [ 73.50us, 1.73ms] 903.44us 829.94us 1.81ms
'pseudo_costs': 1 [ 12.27ms, 12.27ms] 12.27ms 0.00ns 12.27ms 2 [173.74us, 1.31ms] 740.98us 567.24us 1.48ms
'quick_restart': 1 [ 12.90ms, 12.90ms] 12.90ms 0.00ns 12.90ms 2 [180.71us, 1.52ms] 852.74us 672.03us 1.71ms
'quick_restart_no_lp': 1 [ 12.53ms, 12.53ms] 12.53ms 0.00ns 12.53ms 2 [305.63us, 1.37ms] 837.53us 531.90us 1.68ms
'reduced_costs': 1 [ 12.76ms, 12.76ms] 12.76ms 0.00ns 12.76ms 1 [749.91us, 749.91us] 749.91us 0.00ns 749.91us
'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': 2 [ 1.80ms, 5.76ms] 3.78ms 1.98ms 7.56ms 2 [ 10.00ns, 442.00ns] 226.00ns 216.00ns 452.00ns
'rnd_var_lns': 2 [ 2.10ms, 2.41ms] 2.26ms 152.36us 4.51ms 2 [ 10.00ns, 135.00ns] 72.50ns 62.50ns 145.00ns
Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag
'core': 81 69 1'580 1 359 458 4'686 15'140
'default_lp': 78 13 184 0 159 172 880 2'884
'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': 78 0 156 0 156 156 626 2'213
'max_lp': 78 0 156 0 156 156 626 2'213
'no_lp': 78 164 897 1 343 542 6'968 18'582
'objective_lb_search': 78 11 179 0 157 168 862 2'828
'probing': 78 14 190 0 158 172 907 2'949
'pseudo_costs': 78 11 185 0 158 169 816 2'839
'quick_restart': 78 12 192 0 158 170 855 2'820
'quick_restart_no_lp': 79 136 804 9 297 485 5'183 14'138
'reduced_costs': 78 6 181 0 156 162 746 2'612
SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses
'core': 21 0 81 60 168 19 11
'default_lp': 13 0 78 65 156 17 2
'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': 0 0 78 78 34 12 0
'max_lp': 0 0 78 78 34 12 0
'no_lp': 68 0 78 10 386 23 15
'objective_lb_search': 10 0 78 68 98 16 1
'probing': 10 0 78 68 326 18 2
'pseudo_costs': 18 0 78 60 320 16 2
'quick_restart': 17 0 78 61 82 17 3
'quick_restart_no_lp': 49 0 79 30 408 47 40
'reduced_costs': 7 0 78 71 98 12 5
SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed
'core': 39 257 102 937 0 20
'default_lp': 11 70 24 116 0 5
'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': 0 0 0 0 0 0
'no_lp': 65 224 278 1'180 0 76
'objective_lb_search': 10 78 21 90 0 5
'probing': 12 67 22 123 0 5
'pseudo_costs': 8 47 22 108 0 5
'quick_restart': 10 43 25 130 0 4
'quick_restart_no_lp': 64 172 409 1'258 0 41
'reduced_costs': 5 25 12 134 0 1
Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts
'core': 34 171 0 1 8 0 0
'default_lp': 0 0 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': 0 0 0 0 0 0 0
'max_lp': 0 0 0 0 0 0 0
'no_lp': 97 371 2 12 93 63 7
'objective_lb_search': 0 0 0 0 0 0 0
'probing': 0 0 0 0 0 0 0
'pseudo_costs': 0 0 0 0 0 0 0
'quick_restart': 0 0 0 0 0 0 0
'quick_restart_no_lp': 50 185 0 3 22 14 2
'reduced_costs': 0 0 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': 28 0 2 18 2 0 2 1 0 0 0 0 0 135 69
'default_lp': 0 0 0 5 0 0 0 0 0 0 0 0 0 14 13
'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 0 0 0 0 0 0 0 0 0 0 0 0
'no_lp': 2 0 0 71 1 5 5 12 1 0 0 0 0 90 164
'objective_lb_search': 0 0 0 5 0 0 0 0 0 0 0 0 0 8 11
'probing': 0 0 0 5 0 0 0 0 0 0 0 0 0 14 14
'pseudo_costs': 0 0 0 5 0 0 0 0 0 0 0 0 0 18 11
'quick_restart': 0 0 0 4 0 0 0 0 0 0 0 0 0 18 12
'quick_restart_no_lp': 0 0 0 37 2 1 4 3 0 2 0 0 0 159 136
'reduced_costs': 0 0 0 1 0 0 0 0 0 0 0 0 0 10 6
Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.
'default_lp': 1 248 77 38 0 0
'lb_tree_search': 1 53 70 2 0 0
'max_lp': 1 64 92 2 0 0
'objective_lb_search': 1 252 60 30 1 0
'probing': 1 273 75 33 1 0
'pseudo_costs': 1 207 77 25 5 0
'quick_restart': 1 241 125 33 0 0
'reduced_costs': 1 134 44 9 7 0
Lp dimension Final dimension of first component
'default_lp': 144 rows, 145 columns, 561 entries
'lb_tree_search': 314 rows, 156 columns, 1131 entries
'max_lp': 310 rows, 156 columns, 996 entries
'objective_lb_search': 138 rows, 145 columns, 459 entries
'probing': 139 rows, 145 columns, 452 entries
'pseudo_costs': 166 rows, 156 columns, 537 entries
'quick_restart': 152 rows, 145 columns, 570 entries
'reduced_costs': 110 rows, 156 columns, 394 entries
Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling
'default_lp': 0 0 31 0 18 0
'lb_tree_search': 0 0 2 0 92 0
'max_lp': 0 0 2 0 72 0
'objective_lb_search': 0 0 28 0 0 0
'probing': 0 0 31 0 0 0
'pseudo_costs': 0 0 23 0 1 0
'quick_restart': 0 0 26 0 44 0
'reduced_costs': 0 0 10 0 0 0
Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call
'default_lp': 327 0 73 0 49 0 0 77/117
'lb_tree_search': 370 2 0 0 0 1 0 70/141
'max_lp': 392 0 0 0 0 0 0 92/201
'objective_lb_search': 310 0 27 0 27 0 0 60/98
'probing': 325 0 57 0 51 0 0 75/115
'pseudo_costs': 377 0 97 0 69 0 0 77/125
'quick_restart': 375 0 55 0 49 0 0 125/213
'reduced_costs': 344 0 42 0 42 0 0 44/72
Lp Cut default_lp max_lp quick_restart reduced_costs pseudo_costs lb_tree_search probing objective_lb_search
CG_FF: - 5 4 - - 3 - -
CG_K: - 6 3 - - 2 - -
CG_KL: - 5 2 - - 2 - -
CG_R: - 6 5 - - 6 - -
CG_RB: - 9 7 - - 7 - -
CG_RBP: - 4 4 - - 3 - -
IB: 64 - 66 44 74 - 75 60
MIR_1_K: - - 1 - - - - -
MIR_1_KL: - - 1 - - - - -
MIR_2_FF: 1 - 1 - - 1 - -
MIR_2_K: - 2 1 - - 2 - -
MIR_2_KL: - 2 1 - - 2 - -
MIR_2_RB: - 1 2 - - 3 - -
MIR_3_FF: 1 1 4 - - 1 - -
MIR_3_K: 1 1 3 - - 1 - -
MIR_3_KL: 1 1 3 - - 1 - -
MIR_3_RB: 1 4 1 - - 4 - -
MIR_3_RBP: 1 - 1 - - 1 - -
MIR_4_FF: - 3 2 - - 2 - -
MIR_4_K: - 4 2 - - 2 - -
MIR_4_KL: - 4 2 - - 2 - -
MIR_4_R: - 1 - - - - - -
MIR_4_RB: - 3 - - - 2 - -
MIR_4_RBP: - 1 - - - 1 - -
MIR_5_FF: 2 3 - - - 2 - -
MIR_5_K: 2 4 1 - - 2 - -
MIR_5_KL: 2 5 1 - - 3 - -
MIR_5_RB: 1 4 1 - - 5 - -
MIR_6_FF: - 2 1 - 1 3 - -
MIR_6_K: - 2 - - 1 2 - -
MIR_6_KL: - 2 - - - 2 - -
MIR_6_RB: - 1 - - 1 2 - -
ZERO_HALF_FF: - 2 1 - - - - -
ZERO_HALF_K: - 1 - - - - - -
ZERO_HALF_KL: - - 1 - - - - -
ZERO_HALF_R: - 3 2 - - 1 - -
ZERO_HALF_RB: - - 1 - - - - -
LNS stats Improv/Calls Closed Difficulty TimeLimit
'graph_arc_lns': 0/2 50% 5.38e-01 0.10
'graph_cst_lns': 0/2 100% 8.14e-01 0.10
'graph_dec_lns': 0/0 0% 5.00e-01 0.10
'graph_var_lns': 1/2 100% 8.14e-01 0.10
'lb_relax_lns': 0/0 0% 5.00e-01 0.50
'rins/rens': 0/0 0% 5.00e-01 0.10
'rnd_cst_lns': 0/2 100% 8.14e-01 0.10
'rnd_var_lns': 0/2 100% 8.14e-01 0.10
LS stats Batches Restarts/Perturbs LinMoves GenMoves CompoundMoves Bactracks WeightUpdates ScoreComputed
'ls_lin_restart_decay': 1 1 21 0 0 0 11 185
'ls_restart_perturb': 1 1 1'100 0 0 0 748 23'409
Solutions (2) Num Rank
'complete_hint': 2 [0,1]
'graph_var_lns': 2 [1,2]
Objective bounds Num
'am1_presolve': 1
'default_lp': 2
'initial_domain': 1
'max_lp': 1
'no_lp': 1
'quick_restart': 1
Solution repositories Added Queried Synchro
'alternative_path': 1 0 1
'best_solutions': 4 15 4
'fj solution hints': 0 0 0
'lp solutions': 0 0 0
'pump': 0 0
Improving bounds shared Num Sym
'default_lp': 4 0
'no_lp': 94 0
'quick_restart': 4 0
'quick_restart_no_lp': 4 0
Clauses shared #Exported #Imported #BinaryRead #BinaryTotal
'core': 1 0 255 255
'default_lp': 1 0 81 255
'lb_tree_search': 0 0 0 255
'max_lp': 0 0 0 255
'no_lp': 218 0 255 255
'objective_lb_search': 0 0 38 255
'probing': 0 0 181 255
'pseudo_costs': 0 0 226 255
'quick_restart': 0 0 38 255
'quick_restart_no_lp': 35 0 255 255
'reduced_costs': 0 0 49 255
LRAT_status: NA
[Scaling] scaled_objective_bound: 6564.77 corrected_bound: 6564.77 delta: -1.41511e-06
CpSolverResponse summary:
status: OPTIMAL
objective: 6564.765329507451
best_bound: 6564.765329409447
integers: 0
booleans: 0
conflicts: 0
branches: 0
propagations: 0
integer_propagations: 0
restarts: 0
lp_iterations: 0
walltime: 0.0338553
usertime: 0.0338553
deterministic_time: 0.0206503
gap_integral: 0.0649164
solution_fingerprint: 0x60d46668bb6aa7c9
[19]:
wfn3.solution_info()
[19]:
{'router': 'MILPRouter',
'capacity': 4,
'solver_name': 'ortools.cp_sat',
'mip_gap': 0.001,
'time_limit': 2,
'topology': <Topology.BRANCHED: 'branched'>,
'feeder_route': <FeederRoute.SEGMENTED: 'segmented'>,
'balanced': False,
'runtime': 0.035745,
'bound': 6564.765329409447,
'objective': 6564.7653295074515,
'relgap': 1.4928835945227092e-11,
'termination': 'OPTIMAL'}
[20]:
wfn3
[20]:
HGSRouter runs HGS-CVRP, a C extension. With verbose=True, it streams the HGS-CVRP log (single-substation instances only).
[21]:
res3 = wfn3.optimize(
router=HGSRouter(
time_limit=0.1,
seed=1234567,
verbose=True,
),
)
----- FLEET SIZE WAS NOT SPECIFIED: DEFAULT INITIALIZATION TO 7 VEHICLES
----- INSTANCE SUCCESSFULLY LOADED WITH 12 CLIENTS AND 7 VEHICLES
----- BUILDING INITIAL POPULATION
----- STARTING GENETIC ALGORITHM
It 0 2 | T(s) 0.00 | Feas 60 6.19 6.19 | NO-INFEASIBLE | Div 0.02 -1.00 | Feas 1.00 1.00 | Pen 7.86 0.85
It 500 502 | T(s) 0.02 | Feas 27 6.19 6.23 | NO-INFEASIBLE | Div 0.21 -1.00 | Feas 1.00 1.00 | Pen 3.49 0.38
It 1000 1002 | T(s) 0.04 | Feas 35 6.19 6.20 | NO-INFEASIBLE | Div 0.13 -1.00 | Feas 1.00 1.00 | Pen 1.55 0.17
It 1500 1502 | T(s) 0.06 | Feas 43 6.19 6.19 | NO-INFEASIBLE | Div 0.04 -1.00 | Feas 1.00 1.00 | Pen 0.69 0.10
It 2000 2002 | T(s) 0.08 | Feas 51 6.19 6.19 | NO-INFEASIBLE | Div 0.00 -1.00 | Feas 1.00 1.00 | Pen 0.30 0.10
It 2500 2502 | T(s) 0.10 | Feas 46 6.19 6.19 | Inf 59 6.20 6.21 | Div 0.09 0.03 | Feas 0.00 1.00 | Pen 0.19 0.10
----- GENETIC ALGORITHM FINISHED AFTER 2607 ITERATIONS. TIME SPENT: 0.100284
[22]:
wfn3.solution_info()
[22]:
{'router': 'HGSRouter',
'capacity': 4,
'solver_name': 'HGS-CVRP',
'complete': False,
'feeders_above_min': None,
'feeders_exact': False,
'balanced': False,
'ringed': False,
'repair': True,
'max_retries': 10,
'nbGranular': 20,
'mu': 25,
'lambda_': 40,
'nbElite': 4,
'nbClose': 5,
'nbIterPenaltyManagement': 100,
'targetFeasible': 0.2,
'penaltyDecrease': 0.85,
'penaltyIncrease': 1.2,
'seed': 1234567,
'nbIter': 20000,
'nbIterTraces': 500,
'timeLimit': 0.1,
'useSwapStar': True,
'runtime': 0.10029236200000001}