{ "cells": [ { "cell_type": "markdown", "id": "ed13a6b8-1d5b-4ce0-9cd4-b81bac7b07dd", "metadata": {}, "source": [ "# Debugging" ] }, { "cell_type": "markdown", "id": "8bea1f41", "metadata": {}, "source": [ "This notebook demonstrates how to configure and control logging in the *OptiWindNet* to debug wind farm network optimization workflows. We explore logging at different scopes (individual modules and multiple modules). Additionally, we cover enabling verbose output for MILP solvers to inspect solver behavior in detail, observing optimization performance and progress." ] }, { "cell_type": "code", "execution_count": 1, "id": "b75a2819-7854-4b52-add9-29871fc72d82", "metadata": {}, "outputs": [], "source": [ "import sys\n", "import logging\n", "from optiwindnet.api import WindFarmNetwork, HGSRouter, MILPRouter" ] }, { "cell_type": "markdown", "id": "1927b9de", "metadata": {}, "source": [ "## Logging" ] }, { "cell_type": "markdown", "id": "52d5dc9d", "metadata": {}, "source": [ "### Print a module's debug messages (optiwindnet.mesh)\n", "\n", "As an example, we set the logging level for a specific module to `DEBUG` level." ] }, { "cell_type": "code", "execution_count": 2, "id": "ca81ef76", "metadata": {}, "outputs": [], "source": [ "logger_mesh = logging.getLogger('optiwindnet.mesh')\n", "stdout_handler = logging.StreamHandler(stream=sys.stdout)\n", "logger_mesh.addHandler(stdout_handler)\n", "logger_mesh.setLevel(logging.DEBUG)" ] }, { "cell_type": "markdown", "id": "f414cd38", "metadata": {}, "source": [ "Initialize a `WindFarmNetwork()` instance:" ] }, { "cell_type": "code", "execution_count": 3, "id": "a1ce06e0-1d08-45a9-80d6-e57f87811a1a", "metadata": {}, "outputs": [], "source": [ "wfn1 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=4)" ] }, { "cell_type": "markdown", "id": "c37bc91e", "metadata": {}, "source": [ "Run optimization and see the debug log." ] }, { "cell_type": "code", "execution_count": 4, "id": "7847b726", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PART A\n", "PART B\n", "PART C\n", "is_hole: False, ring: 0, num_vertices: 4\n", "((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))\n", "is_hole: False, ring: 1, num_vertices: 4\n", "((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))\n", "is_hole: True, ring: 0, num_vertices: 4\n", "((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))\n", "PART D\n", "PART E\n", "PART F\n", "convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]\n", "hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]\n", "hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}\n", "PART G\n", "hull_concave: [-1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4, 5]\n", "PART H\n", "holes\n", "s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)\n", "s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)\n", "s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)\n", "s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)\n", "{(24, 25), (22, 25), (23, 24), (22, 23)}\n", "PART I\n", "hull_concave\n", "concavities\n", "PART J\n", "PART K\n", "==== pivot 26 ====\n", "del_pivot_u 26 28\n", "del_conc 19 12\n", "del_pivot_end 26 27\n", "del_pivot_u 26 12\n", "==== pivot 27 ====\n", "del_pivot_u 27 26\n", "==== pivot 28 ====\n", "del_conc 14 17\n", "del_pivot_end 28 26\n", "del_pivot_u 28 17\n", "PART L\n", "PART M\n", "A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]\n", "s: 0; b: 21; t: 20;\n", "a: 12; c: 20; s: 0, t: 20\n", "Non-shortable at 4th test.\n", "s: 21; b: 20; t: 7;\n", "a: 21; c: 19; s: 21, t: 7\n", "Non-shortable at 4th test.\n", "A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]\n", "s: 3; b: 25; t: -1;\n", "a: 24; c: 22; s: 3, t: -1\n", "Non-shortable at 4th test.\n", "A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]\n", "s: 5; b: 15; t: 16;\n", "a: 16; c: 14; s: 5, t: 16\n", "Non-shortable at 3rd test.\n", "s: 15; b: 16; t: 11;\n", "a: 17; c: 15; s: 15, t: 11\n", "Non-shortable at 3rd test.\n", "A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]\n", "s: 2; b: 21; t: 20;\n", "a: 12; c: 20; s: 2, t: 20\n", "Non-shortable at 4th test.\n", "s: 21; b: 20; t: 7;\n", "a: 21; c: 19; s: 21, t: 7\n", "Non-shortable at 4th test.\n", "A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]\n", "s: 10; b: 16; t: 15;\n", "a: 17; c: 15; s: 10, t: 15\n", "Non-shortable at 4th test.\n", "s: 16; b: 15; t: -1;\n", "a: 16; c: 14; s: 16, t: -1\n", "Non-shortable at 4th test.\n", "A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]\n", "s: 4; b: 21; t: 20;\n", "a: 12; c: 20; s: 4, t: 20\n", "(0) 4 21 20 shortcut\n", "s: 4; b: 20; t: 6;\n", "a: 21; c: 19; s: 4, t: 6\n", "Non-shortable at 4th test.\n", "A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]\n", "s: 1; b: 23; t: 22;\n", "a: 22; c: 24; s: 1, t: 22\n", "(0) 1 23 22 shortcut\n", "s: 1; b: 22; t: 4;\n", "a: 25; c: 23; s: 1, t: 4\n", "Non-shortable at 3rd test.\n", "A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]\n", "s: 0; b: 21; t: 20;\n", "a: 12; c: 20; s: 0, t: 20\n", "Non-shortable at 4th test.\n", "s: 21; b: 20; t: 6;\n", "a: 21; c: 19; s: 21, t: 6\n", "Non-shortable at 4th test.\n", "A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]\n", "s: 11; b: 16; t: 15;\n", "a: 17; c: 15; s: 11, t: 15\n", "Non-shortable at 4th test.\n", "s: 16; b: 15; t: -1;\n", "a: 16; c: 14; s: 16, t: -1\n", "Non-shortable at 4th test.\n", "A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]\n", "A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]\n", "s: 2; b: 21; t: 20;\n", "a: 12; c: 20; s: 2, t: 20\n", "Non-shortable at 4th test.\n", "s: 21; b: 20; t: 6;\n", "a: 21; c: 19; s: 21, t: 6\n", "Non-shortable at 4th test.\n", "A_edge: 5–6 length: 969.949; path: [5, 15, 6]\n", "s: 5; b: 15; t: 6;\n", "a: 16; c: 14; s: 5, t: 6\n", "Non-shortable at 3rd test.\n", "A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]\n", "A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]\n", "s: 2; b: 21; t: 20;\n", "a: 12; c: 20; s: 2, t: 20\n", "Non-shortable at 4th test.\n", "s: 21; b: 20; t: 15;\n", "a: 21; c: 19; s: 21, t: 15\n", "(1) 21 20 15 shortcut\n", "s: 2; b: 21; t: 15;\n", "a: 12; c: 20; s: 2, t: 15\n", "Non-shortable at 4th test.\n", "s: 21; b: 15; t: 16;\n", "a: 16; c: 14; s: 21, t: 16\n", "(1) 21 15 16 shortcut\n", "s: 2; b: 21; t: 16;\n", "a: 12; c: 20; s: 2, t: 16\n", "Non-shortable at 4th test.\n", "s: 21; b: 16; t: 11;\n", "a: 17; c: 15; s: 21, t: 11\n", "Non-shortable at 3rd test.\n", "A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]\n", "PART N\n", "updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])\n", "s: -1; b: 15; t: 16;\n", "a: 16; c: 14; s: -1, t: 16\n", "Non-shortable at 3rd test.\n", "s: 15; b: 16; t: 10;\n", "a: 17; c: 15; s: 15, t: 10\n", "Non-shortable at 3rd test.\n", "d2roots[10, -1] updated\n", "updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])\n", "s: -1; b: 15; t: 16;\n", "a: 16; c: 14; s: -1, t: 16\n", "Non-shortable at 3rd test.\n", "s: 15; b: 16; t: 11;\n", "a: 17; c: 15; s: 15, t: 11\n", "Non-shortable at 3rd test.\n", "d2roots[11, -1] updated\n", "updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])\n", "s: -1; b: 25; t: 3;\n", "a: 24; c: 22; s: -1, t: 3\n", "Non-shortable at 3rd test.\n", "d2roots[3, -1] updated\n", "updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])\n", "s: -1; b: 15; t: 16;\n", "a: 16; c: 14; s: -1, t: 16\n", "Non-shortable at 3rd test.\n", "s: 15; b: 16; t: 9;\n", "a: 17; c: 15; s: 15, t: 9\n", "d2roots[9, -1] updated\n", "updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])\n", "s: -1; b: 21; t: 0;\n", "a: 12; c: 20; s: -1, t: 0\n", "PART O\n", "PART P\n", "differences between G and P: [(-1, 10)]\n", "in G, not in P: -1–10\n", "share 1 neighbors.\n" ] } ], "source": [ "res1 = wfn1.optimize()" ] }, { "cell_type": "markdown", "id": "b47b766f", "metadata": {}, "source": [ "### Another example (optiwindnet.pathfinding)\n", "\n", "Logging other modules can be activated independently of the already active loggers." ] }, { "cell_type": "code", "execution_count": 5, "id": "1da32592-658b-42a1-82e8-ee6f390540c4", "metadata": {}, "outputs": [], "source": [ "# optional: unset the previous logger level and remove its handler\n", "logger_mesh.setLevel(logging.NOTSET)\n", "logger_mesh.handlers[0].close()\n", "logger_mesh.removeHandler(logger_mesh.handlers[0])" ] }, { "cell_type": "markdown", "id": "d87c8bd2-2122-4e45-af5d-5043127d8d9d", "metadata": {}, "source": [ "Set a logger for `optiwindnet.pathfinding`:" ] }, { "cell_type": "code", "execution_count": 6, "id": "ec24ebb2", "metadata": {}, "outputs": [], "source": [ "logger_pathfinding = logging.getLogger('optiwindnet.pathfinding')\n", "stdout_handler = logging.StreamHandler(stream=sys.stdout)\n", "logger_pathfinding.addHandler(stdout_handler)\n", "logger_pathfinding.setLevel(logging.DEBUG)" ] }, { "cell_type": "code", "execution_count": 7, "id": "46f01d70", "metadata": {}, "outputs": [], "source": [ "wfn2 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=4)" ] }, { "cell_type": "code", "execution_count": 8, "id": "0f165916", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">PathFinder: \"example_location\" (T = 12)\n", "pseudoedge «6->-1» added\n", "pseudoedge «15->-1» added\n", "pseudoedge «15->-1» added\n", "pseudoedge «5->-1» added\n", "_find_paths[1]: advancer id <0>\n", "<0> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[2]: advancer id <1>\n", "<1> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]\n", "<1> inside\n", "_find_paths[3]: advancer id <0>\n", "pseudoedge «16->15» added\n", "<0> new keeper for (16, -9223372036854775808) via 15: d_path = 397.67\n", "<0> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[4]: advancer id <2>\n", "<2> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "<2> ultrafar\n", "_find_paths[5]: advancer id <1>\n", "pseudoedge «14->-1» added\n", "<1> new keeper for (14, -9223372036854775808) via -1: d_path = 445.53\n", "<1> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]\n", "<1> infranear\n", "_find_paths[6]: advancer id <0>\n", "pseudoedge «11->16» added\n", "<0> new keeper for (11, 10) via 16: d_path = 985.72\n", "<0> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[7]: advancer id <0>\n", "pseudoedge «10->16» added\n", "<0> new keeper for (10, 11) via 16: d_path = 909.25\n", "<0> RIGHT _new(8) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[8]: advancer id <0>\n", "pseudoedge «8->15» added\n", "<0> new keeper for (8, 9) via 15: d_path = 905.15\n", "<0> LEFT _new(7) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 8, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[9]: advancer id <3>\n", "<3> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]\n", "<3> ultrafar\n", "_find_paths[10]: advancer id <3>\n", "<3> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]\n", "<3> inside\n", "pseudoedge «9->15» added\n", "<3> new keeper for (9, 8) via 15: d_path = 1235.41\n", "{3} advancer reached DEAD-END (not portals)\n", "_find_paths[11]: advancer id <2>\n", "<2> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]\n", "<2> inside\n", "_find_paths[12]: advancer id <2>\n", "pseudoedge «17->16» added\n", "<2> new keeper for (17, -9223372036854775808) via 16: d_path = 1113.60\n", "<2> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "<2> ultrafar\n", "_find_paths[13]: advancer id <4>\n", "<4> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "<4> infranear\n", "_find_paths[14]: advancer id <0>\n", "pseudoedge «7->6» added\n", "<0> new keeper for (7, 6) via 6: d_path = 1150.50\n", "<0> RIGHT _new(9) _nearside(15) _farside(6) _apex(-1), _wedge_end: 7 8, _funnel: [6, 15]\n", "<0> infranear\n", "_find_paths[15]: advancer id <1>\n", "pseudoedge «4->5» added\n", "<1> new keeper for (4, 5) via 5: d_path = 1227.41\n", "<1> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]\n", "<1> infranear\n", "_find_paths[16]: advancer id <5>\n", "<5> LEFT _new(3) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]\n", "<5> ultrafar\n", "_find_paths[17]: advancer id <0>\n", "pseudoedge «9->8» added\n", "<0> RIGHT _new(19) _nearside(15) _farside(6) _apex(-1), _wedge_end: 7 9, _funnel: [6, 15]\n", "<0> ultrafar\n", "_find_paths[18]: advancer id <0>\n", "pseudoedge «19->7» added\n", "<0> new keeper for (19, -9223372036854775808) via 7: d_path = 1245.33\n", "<0> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]\n", "<0> inside\n", "_find_paths[19]: advancer id <6>\n", "<6> LEFT _new(19) _nearside(6) _farside(15) _apex(-1), _wedge_end: 7 9, _funnel: [6, 15]\n", "<6> infranear\n", "_find_paths[20]: advancer id <6>\n", "<6> RIGHT _new(26) _nearside(15) _farside(6) _apex(-1), _wedge_end: 19 9, _funnel: [6, 15]\n", "<6> infranear\n", "_find_paths[21]: advancer id <6>\n", "pseudoedge «26->8» added\n", "<6> new keeper for (26, -9223372036854775808) via 8: d_path = 8019.15\n", "{6} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[22]: advancer id <7>\n", "<7> LEFT _new(26) _nearside(6) _farside(15) _apex(-1), _wedge_end: 19 9, _funnel: [6, 15]\n", "<7> ultrafar\n", "_find_paths[23]: advancer id <7>\n", "<7> RIGHT _new(17) _nearside(9) _farside(26) _apex(8), _wedge_end: 26 9, _funnel: [26, 9]\n", "<7> infranear\n", "_find_paths[24]: advancer id <8>\n", "<8> LEFT _new(17) _nearside(26) _farside(9) _apex(8), _wedge_end: 26 9, _funnel: [26, 9]\n", "<8> ultrafar\n", "_find_paths[25]: advancer id <1>\n", "pseudoedge «3->4» added\n", "<1> new keeper for (3, 1) via 4: d_path = 1791.29\n", "<1> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "<1> infranear\n", "_find_paths[26]: advancer id <1>\n", "pseudoedge «28->5» added\n", "<1> new keeper for (28, -9223372036854775808) via 5: d_path = 7533.80\n", "{1} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[27]: advancer id <5>\n", "<5> RIGHT _new(25) _nearside(4) _farside(3) _apex(4), _wedge_end: 3 4, _funnel: [3, 4]\n", "<5> inside\n", "_find_paths[28]: advancer id <5>\n", "pseudoedge «25->4» added\n", "<5> new keeper for (25, -9223372036854775808) via 4: d_path = 1383.44\n", "<5> RIGHT _new(24) _nearside(25) _farside(3) _apex(4), _wedge_end: 3 25, _funnel: [3, 25]\n", "<5> inside\n", "_find_paths[29]: advancer id <5>\n", "pseudoedge «24->4» added\n", "<5> new keeper for (24, -9223372036854775808) via 4: d_path = 1581.88\n", "<5> RIGHT _new(23) _nearside(24) _farside(3) _apex(4), _wedge_end: 3 24, _funnel: [3, 24]\n", "<5> infranear\n", "_find_paths[30]: advancer id <9>\n", "<9> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "<9> ultrafar\n", "_find_paths[31]: advancer id <9>\n", "<9> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]\n", "<9> ultrafar\n", "_find_paths[32]: advancer id <9>\n", "pseudoedge «27->3» added\n", "<9> new keeper for (27, -9223372036854775808) via 3: d_path = 9191.09\n", "<9> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "<9> inside\n", "_find_paths[33]: advancer id <10>\n", "<10> LEFT _new(25) _nearside(3) _farside(4) _apex(4), _wedge_end: 3 4, _funnel: [3, 4]\n", "<10> inside\n", "_find_paths[34]: advancer id <10>\n", "<10> RIGHT _new(2) _nearside(4) _farside(25) _apex(4), _wedge_end: 25 4, _funnel: [25, 4]\n", "<10> inside\n", "_find_paths[35]: advancer id <11>\n", "<11> LEFT _new(2) _nearside(25) _farside(4) _apex(4), _wedge_end: 25 4, _funnel: [25, 4]\n", "<11> inside\n", "_find_paths[36]: advancer id <5>\n", "pseudoedge «23->24» added\n", "<5> new keeper for (23, -9223372036854775808) via 24: d_path = 1791.88\n", "<5> RIGHT _new(2) _nearside(24) _farside(3) _apex(4), _wedge_end: 3 23, _funnel: [3, 24]\n", "<5> infranear\n", "_find_paths[37]: advancer id <12>\n", "<12> LEFT _new(2) _nearside(3) _farside(24) _apex(4), _wedge_end: 3 23, _funnel: [3, 24]\n", "<12> ultrafar\n", "_find_paths[38]: advancer id <2>\n", "pseudoedge «9->11» added\n", "<2> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]\n", "<2> inside\n", "pseudoedge «10->11» added\n", "{2} advancer reached DEAD-END (not portals)\n", "_find_paths[39]: advancer id <4>\n", "<4> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "<4> ultrafar\n", "_find_paths[40]: advancer id <4>\n", "pseudoedge «26->11» added\n", "<4> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<4> ultrafar\n", "_find_paths[41]: advancer id <13>\n", "<13> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "<13> infranear\n", "_find_paths[42]: advancer id <13>\n", "{13} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[43]: advancer id <14>\n", "<14> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<14> infranear\n", "_find_paths[44]: advancer id <10>\n", "pseudoedge «2->4» added\n", "<10> new keeper for (2, 0) via 4: d_path = 1859.24\n", "<10> LEFT _new(22) _nearside(25) _farside(2) _apex(4), _wedge_end: 25 2, _funnel: [25, 2]\n", "<10> inside\n", "_find_paths[45]: advancer id <10>\n", "pseudoedge «22->4» added\n", "<10> new keeper for (22, -9223372036854775808) via 4: d_path = 1686.27\n", "<10> LEFT _new(23) _nearside(22) _farside(2) _apex(4), _wedge_end: 22 2, _funnel: [22, 2]\n", "<10> infranear\n", "_find_paths[46]: advancer id <10>\n", "pseudoedge «23->22» added\n", "<10> new keeper for (23, -9223372036854775808) via 22: d_path = 1749.51\n", "<10> RIGHT _new(3) _nearside(2) _farside(22) _apex(4), _wedge_end: 23 2, _funnel: [22, 2]\n", "<10> ultrafar\n", "_find_paths[47]: advancer id <15>\n", "<15> LEFT _new(3) _nearside(22) _farside(2) _apex(4), _wedge_end: 23 2, _funnel: [22, 2]\n", "<15> infranear\n", "_find_paths[48]: advancer id <11>\n", "<11> RIGHT _new(21) _nearside(4) _farside(2) _apex(4), _wedge_end: 2 4, _funnel: [2, 4]\n", "<11> inside\n", "_find_paths[49]: advancer id <11>\n", "pseudoedge «21->4» added\n", "<11> new keeper for (21, -9223372036854775808) via 4: d_path = 1773.09\n", "<11> RIGHT _new(12) _nearside(21) _farside(2) _apex(4), _wedge_end: 2 21, _funnel: [2, 21]\n", "<11> ultrafar\n", "_find_paths[50]: advancer id <0>\n", "pseudoedge «20->7» added\n", "<0> new keeper for (20, -9223372036854775808) via 7: d_path = 1956.29\n", "<0> RIGHT _new(6) _nearside(20) _farside(7) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "<0> inside\n", "pseudoedge «6->7» added\n", "{0} advancer reached DEAD-END (not portals)\n", "_find_paths[51]: advancer id <5>\n", "pseudoedge «2->23» added\n", "<5> LEFT _new(1) _nearside(3) _farside(24) _apex(4), _wedge_end: 3 2, _funnel: [3, 24]\n", "<5> ultrafar\n", "_find_paths[52]: advancer id <12>\n", "<12> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]\n", "<12> inside\n", "_find_paths[53]: advancer id <12>\n", "pseudoedge «22->23» added\n", "<12> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]\n", "<12> infranear\n", "_find_paths[54]: advancer id <5>\n", "pseudoedge «1->24» added\n", "<5> new keeper for (1, 0) via 24: d_path = 2131.61\n", "<5> RIGHT _new(0) _nearside(23) _farside(1) _apex(24), _wedge_end: 1 2, _funnel: [1, 23]\n", "<5> inside\n", "pseudoedge «0->24» added\n", "<5> new keeper for (0, 1) via 24: d_path = 2516.89\n", "{5} advancer reached DEAD-END (not portals)\n", "_find_paths[55]: advancer id <10>\n", "pseudoedge «3->23» added\n", "<10> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]\n", "<10> inside\n", "_find_paths[56]: advancer id <10>\n", "pseudoedge «24->23» added\n", "<10> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]\n", "<10> infranear\n", "_find_paths[57]: advancer id <15>\n", "<15> LEFT _new(1) _nearside(22) _farside(2) _apex(4), _wedge_end: 3 2, _funnel: [22, 2]\n", "<15> infranear\n", "_find_paths[58]: advancer id <15>\n", "pseudoedge «1->22» added\n", "<15> new keeper for (1, 0) via 22: d_path = 2123.86\n", "<15> RIGHT _new(0) _nearside(2) _farside(22) _apex(4), _wedge_end: 1 2, _funnel: [22, 2]\n", "<15> inside\n", "pseudoedge «0->4» added\n", "<15> new keeper for (0, 1) via 4: d_path = 2441.44\n", "{15} advancer reached DEAD-END (not portals)\n", "_find_paths[59]: advancer id <10>\n", "pseudoedge «25->24» added\n", "{10} advancer revisited triangle\n", "_find_paths[60]: advancer id <12>\n", "pseudoedge «25->22» added\n", "<12> RIGHT _new(4) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 25, _funnel: [2, 22]\n", "<12> infranear\n", "_find_paths[61]: advancer id <16>\n", "<16> LEFT _new(4) _nearside(2) _farside(22) _apex(23), _wedge_end: 2 25, _funnel: [2, 22]\n", "<16> ultrafar\n", "_find_paths[62]: advancer id <12>\n", "pseudoedge «4->22» added\n", "<12> RIGHT _new(21) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 4, _funnel: [2, 22]\n", "<12> infranear\n", "_find_paths[63]: advancer id <16>\n", "{16} advancer revisited triangle\n", "_find_paths[64]: advancer id <9>\n", "pseudoedge «1->3» added\n", "<9> new keeper for (1, 3) via 3: d_path = 2344.26\n", "<9> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "<9> infranear\n", "_find_paths[65]: advancer id <17>\n", "<17> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "<17> ultrafar\n", "_find_paths[66]: advancer id <7>\n", "pseudoedge «17->9» added\n", "{7} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[67]: advancer id <8>\n", "<8> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<8> inside\n", "_find_paths[68]: advancer id <8>\n", "pseudoedge «11->9» added\n", "<8> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]\n", "<8> ultrafar\n", "_find_paths[69]: advancer id <18>\n", "<18> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<18> inside\n", "_find_paths[70]: advancer id <18>\n", "<18> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]\n", "<18> inside\n", "pseudoedge «10->9» added\n", "{18} advancer reached DEAD-END (not portals)\n", "_find_paths[71]: advancer id <12>\n", "pseudoedge «21->22» added\n", "<12> RIGHT _new(12) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 21, _funnel: [2, 22]\n", "<12> ultrafar\n", "_find_paths[72]: advancer id <11>\n", "pseudoedge «12->2» added\n", "<11> new keeper for (12, -9223372036854775808) via 2: d_path = 2546.69\n", "<11> LEFT _new(0) _nearside(2) _farside(12) _apex(2), _wedge_end: 2 12, _funnel: [2, 12]\n", "<11> inside\n", "_find_paths[73]: advancer id <11>\n", "pseudoedge «0->2» added\n", "<11> LEFT _new(1) _nearside(0) _farside(12) _apex(2), _wedge_end: 0 12, _funnel: [0, 12]\n", "<11> infranear\n", "_find_paths[74]: advancer id <12>\n", "pseudoedge «12->2» added\n", "<12> LEFT _new(0) _nearside(2) _farside(12) _apex(2), _wedge_end: 2 12, _funnel: [2, 12]\n", "<12> inside\n", "_find_paths[75]: advancer id <12>\n", "pseudoedge «0->2» added\n", "<12> LEFT _new(1) _nearside(0) _farside(12) _apex(2), _wedge_end: 0 12, _funnel: [0, 12]\n", "<12> infranear\n", "_find_paths[76]: advancer id <8>\n", "pseudoedge «16->11» added\n", "{8} advancer revisited triangle\n", "_find_paths[77]: advancer id <9>\n", "pseudoedge «12->1» added\n", "{9} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[78]: advancer id <17>\n", "<17> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "<17> inside\n", "_find_paths[79]: advancer id <17>\n", "pseudoedge «0->1» added\n", "<17> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "<17> infranear\n", "_find_paths[80]: advancer id <4>\n", "pseudoedge «19->9» added\n", "<4> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "<4> inside\n", "_find_paths[81]: advancer id <4>\n", "pseudoedge «7->9» added\n", "<4> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]\n", "<4> inside\n", "_find_paths[82]: advancer id <4>\n", "pseudoedge «8->9» added\n", "<4> RIGHT _new(6) _nearside(7) _farside(8) _apex(9), _wedge_end: 8 7, _funnel: [8, 7]\n", "<4> ultrafar\n", "_find_paths[83]: advancer id <4>\n", "pseudoedge «6->8» added\n", "<4> RIGHT _new(10) _nearside(6) _farside(8) _apex(8), _wedge_end: 8 6, _funnel: [8, 6]\n", "<4> inside\n", "_find_paths[84]: advancer id <20>\n", "<20> LEFT _new(10) _nearside(8) _farside(6) _apex(8), _wedge_end: 8 6, _funnel: [8, 6]\n", "<20> inside\n", "_find_paths[85]: advancer id <4>\n", "pseudoedge «10->8» added\n", "<4> RIGHT _new(9) _nearside(10) _farside(8) _apex(8), _wedge_end: 8 10, _funnel: [8, 10]\n", "<4> inside\n", "pseudoedge «9->8» added\n", "{4} advancer reached DEAD-END (not portals)\n", "_find_paths[86]: advancer id <20>\n", "<20> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]\n", "<20> inside\n", "_find_paths[87]: advancer id <14>\n", "{14} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[88]: advancer id <19>\n", "<19> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "<19> inside\n", "_find_paths[89]: advancer id <19>\n", "<19> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]\n", "<19> ultrafar\n", "_find_paths[90]: advancer id <11>\n", "pseudoedge «1->0» added\n", "<11> RIGHT _new(27) _nearside(12) _farside(0) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]\n", "<11> ultrafar\n", "_find_paths[91]: advancer id <11>\n", "pseudoedge «27->0» added\n", "<11> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "<11> infranear\n", "_find_paths[92]: advancer id <21>\n", "<21> LEFT _new(27) _nearside(0) _farside(12) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]\n", "<21> infranear\n", "_find_paths[93]: advancer id <21>\n", "{21} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[94]: advancer id <12>\n", "pseudoedge «1->0» added\n", "<12> RIGHT _new(27) _nearside(12) _farside(0) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]\n", "<12> ultrafar\n", "_find_paths[95]: advancer id <12>\n", "pseudoedge «27->0» added\n", "<12> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "<12> infranear\n", "_find_paths[96]: advancer id <22>\n", "<22> LEFT _new(27) _nearside(0) _farside(12) _apex(2), _wedge_end: 1 12, _funnel: [0, 12]\n", "<22> infranear\n", "_find_paths[97]: advancer id <22>\n", "{22} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[98]: advancer id <20>\n", "pseudoedge «11->8» added\n", "{20} advancer revisited triangle\n", "_find_paths[99]: advancer id <17>\n", "pseudoedge «2->0» added\n", "<17> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]\n", "<17> ultrafar\n", "_find_paths[100]: advancer id <11>\n", "pseudoedge «3->1» added\n", "<11> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]\n", "<11> ultrafar\n", "_find_paths[101]: advancer id <11>\n", "pseudoedge «28->1» added\n", "<11> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]\n", "<11> ultrafar\n", "_find_paths[102]: advancer id <23>\n", "<23> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]\n", "<23> infranear\n", "_find_paths[103]: advancer id <19>\n", "pseudoedge «20->7» added\n", "<19> RIGHT _new(6) _nearside(20) _farside(7) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "<19> inside\n", "pseudoedge «6->7» added\n", "{19} advancer reached DEAD-END (not portals)\n", "_find_paths[104]: advancer id <12>\n", "pseudoedge «3->1» added\n", "<12> RIGHT _new(28) _nearside(27) _farside(1) _apex(0), _wedge_end: 3 27, _funnel: [1, 27]\n", "<12> ultrafar\n", "_find_paths[105]: advancer id <12>\n", "pseudoedge «28->1» added\n", "<12> RIGHT _new(14) _nearside(28) _farside(3) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]\n", "<12> ultrafar\n", "_find_paths[106]: advancer id <24>\n", "<24> LEFT _new(14) _nearside(3) _farside(28) _apex(1), _wedge_end: 3 28, _funnel: [3, 28]\n", "<24> infranear\n", "_find_paths[107]: advancer id <17>\n", "pseudoedge «21->0» added\n", "<17> LEFT _new(4) _nearside(21) _farside(2) _apex(0), _wedge_end: 21 2, _funnel: [21, 2]\n", "<17> ultrafar\n", "_find_paths[108]: advancer id <17>\n", "pseudoedge «4->2» added\n", "<17> RIGHT _new(25) _nearside(2) _farside(4) _apex(2), _wedge_end: 4 2, _funnel: [4, 2]\n", "<17> inside\n", "_find_paths[109]: advancer id <17>\n", "pseudoedge «25->2» added\n", "<17> RIGHT _new(3) _nearside(25) _farside(4) _apex(2), _wedge_end: 4 25, _funnel: [4, 25]\n", "<17> infranear\n", "_find_paths[110]: advancer id <26>\n", "<26> LEFT _new(3) _nearside(4) _farside(25) _apex(2), _wedge_end: 4 25, _funnel: [4, 25]\n", "<26> ultrafar\n", "_find_paths[111]: advancer id <25>\n", "<25> LEFT _new(25) _nearside(4) _farside(2) _apex(2), _wedge_end: 4 2, _funnel: [4, 2]\n", "<25> inside\n", "_find_paths[112]: advancer id <25>\n", "<25> LEFT _new(22) _nearside(25) _farside(2) _apex(2), _wedge_end: 25 2, _funnel: [25, 2]\n", "<25> inside\n", "_find_paths[113]: advancer id <25>\n", "pseudoedge «22->2» added\n", "<25> LEFT _new(23) _nearside(22) _farside(2) _apex(2), _wedge_end: 22 2, _funnel: [22, 2]\n", "<25> inside\n", "_find_paths[114]: advancer id <25>\n", "pseudoedge «23->2» added\n", "<25> RIGHT _new(3) _nearside(2) _farside(23) _apex(2), _wedge_end: 23 2, _funnel: [23, 2]\n", "<25> inside\n", "_find_paths[115]: advancer id <27>\n", "<27> LEFT _new(3) _nearside(23) _farside(2) _apex(2), _wedge_end: 23 2, _funnel: [23, 2]\n", "<27> inside\n", "_find_paths[116]: advancer id <25>\n", "pseudoedge «3->2» added\n", "<25> LEFT _new(24) _nearside(23) _farside(3) _apex(2), _wedge_end: 23 3, _funnel: [23, 3]\n", "<25> infranear\n", "_find_paths[117]: advancer id <25>\n", "pseudoedge «24->23» added\n", "<25> LEFT _new(25) _nearside(23) _farside(3) _apex(2), _wedge_end: 24 3, _funnel: [23, 3]\n", "<25> infranear\n", "_find_paths[118]: advancer id <25>\n", "pseudoedge «25->24» added\n", "<25> RIGHT _new(4) _nearside(3) _farside(23) _apex(2), _wedge_end: 25 3, _funnel: [23, 3]\n", "<25> ultrafar\n", "_find_paths[119]: advancer id <28>\n", "<28> LEFT _new(4) _nearside(23) _farside(3) _apex(2), _wedge_end: 25 3, _funnel: [23, 3]\n", "<28> infranear\n", "_find_paths[120]: advancer id <25>\n", "pseudoedge «4->24» added\n", "{25} advancer revisited triangle\n", "_find_paths[121]: advancer id <28>\n", "{28} advancer revisited triangle\n", "_find_paths[122]: advancer id <17>\n", "pseudoedge «3->25» added\n", "{17} advancer revisited triangle\n", "_find_paths[123]: advancer id <26>\n", "<26> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]\n", "<26> inside\n", "_find_paths[124]: advancer id <26>\n", "pseudoedge «24->25» added\n", "<26> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]\n", "<26> infranear\n", "_find_paths[125]: advancer id <26>\n", "pseudoedge «23->24» added\n", "<26> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "<26> infranear\n", "_find_paths[126]: advancer id <29>\n", "<29> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "<29> ultrafar\n", "_find_paths[127]: advancer id <29>\n", "pseudoedge «2->23» added\n", "<29> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]\n", "<29> inside\n", "_find_paths[128]: advancer id <29>\n", "pseudoedge «22->23» added\n", "<29> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]\n", "<29> infranear\n", "_find_paths[129]: advancer id <29>\n", "pseudoedge «25->22» added\n", "{29} advancer revisited triangle\n", "_find_paths[130]: advancer id <11>\n", "pseudoedge «14->3» added\n", "{11} advancer revisited triangle\n", "_find_paths[131]: advancer id <23>\n", "{23} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[132]: advancer id <12>\n", "pseudoedge «14->3» added\n", "{12} advancer revisited triangle\n", "_find_paths[133]: advancer id <24>\n", "{24} advancer reached DEAD-END (root or mesh edge)\n", "PathFinder: loops performed: 133\n", "hookchoices: [2, 3]\n", "best: hook = 3, sector = 1, dist = 1791.29\n", "path: [3, 4, 5, -1]\n", "hook changed from 2 to 3: recalculating loads\n", "hookchoices: [8, 11]\n", "best: hook = 8, sector = 9, dist = 905.15\n", "path: [8, 15, -1]\n", "Σλ = 8 394.8 m(+0) [-1]: 3κ = 4, T = 12" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wfn2" ] }, { "cell_type": "markdown", "id": "13554c48", "metadata": {}, "source": [ "### Log all OptiWindNet modules\n", "\n", "Logging is hierarchical. By specifying the top-level module, all submodules are included." ] }, { "cell_type": "code", "execution_count": 10, "id": "0d8ed10f", "metadata": {}, "outputs": [], "source": [ "# here we use basicConfig to prepend each log message with the source module name\n", "logging.basicConfig(\n", " level=logging.DEBUG,\n", " format=\"%(name)s: %(message)s\",\n", " stream=sys.stdout,\n", ")\n", "logger_own = logging.getLogger('optiwindnet')" ] }, { "cell_type": "code", "execution_count": 11, "id": "6a26c403", "metadata": {}, "outputs": [], "source": [ "wfn3 = WindFarmNetwork.from_yaml(filepath='data/example_location.yaml', cables=4)" ] }, { "cell_type": "code", "execution_count": 12, "id": "9577be03", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "optiwindnet.mesh: PART A\n", "optiwindnet.mesh: PART B\n", "optiwindnet.mesh: PART C\n", "optiwindnet.mesh: is_hole: False, ring: 0, num_vertices: 4\n", "optiwindnet.mesh: ((-0.25564496185965113, 0.07687039890429721), (-0.0964256500979665, -0.015065913370998107), (-0.08974871121763778, -0.0073617531244649795), (-0.15754532138712932, 0.16598185242253038))\n", "optiwindnet.mesh: is_hole: False, ring: 1, num_vertices: 4\n", "optiwindnet.mesh: ((0.24435503814034887, -0.13781886663242596), (-0.010909471361448774, 0.030131826741996243), (-0.021181685023492942, 0.021143639787707592), (0.03916757024101656, -0.18840951891799348))\n", "optiwindnet.mesh: is_hole: True, ring: 0, num_vertices: 4\n", "optiwindnet.mesh: ((0.10285529494569041, 0.11898647491867832), (0.15421636325591126, 0.10614620784112311), (0.15421636325591126, 0.05221708611539121), (0.138808042762845, 0.04708097928436913))\n", "optiwindnet.mesh: PART D\n", "optiwindnet.mesh: PART E\n", "optiwindnet.mesh: PART F\n", "optiwindnet.mesh: convex_hull_A: [5, 11, 9, 7, 0, 1, 3, 4]\n", "optiwindnet.mesh: hull_prunned: [5, 11, 9, 7, 0, 1, 3, 4]\n", "optiwindnet.mesh: hull_prunned_edges: {(0, 1), (0, 7), (5, 11), (3, 4), (7, 9), (4, 5), (9, 11), (1, 3)}\n", "optiwindnet.mesh: PART G\n", "optiwindnet.mesh: hull_concave: [-1, 6, 11, 9, 7, 6, -1, 2, 0, 1, 3, 4, 5]\n", "optiwindnet.mesh: PART H\n", "optiwindnet.mesh: holes\n", "optiwindnet.mesh: s: 22, t: 23, sC: (0.138808042762845, 0.04708097928436913), tC: (0.15421636325591126, 0.05221708611539121)\n", "optiwindnet.mesh: s: 23, t: 24, sC: (0.15421636325591126, 0.05221708611539121), tC: (0.15421636325591126, 0.10614620784112311)\n", "optiwindnet.mesh: s: 24, t: 25, sC: (0.15421636325591126, 0.10614620784112311), tC: (0.10285529494569041, 0.11898647491867832)\n", "optiwindnet.mesh: s: 25, t: 22, sC: (0.10285529494569041, 0.11898647491867832), tC: (0.138808042762845, 0.04708097928436913)\n", "optiwindnet.mesh: {(24, 25), (22, 25), (23, 24), (22, 23)}\n", "optiwindnet.mesh: PART I\n", "optiwindnet.mesh: hull_concave\n", "optiwindnet.mesh: concavities\n", "optiwindnet.mesh: PART J\n", "optiwindnet.mesh: PART K\n", "optiwindnet.mesh: ==== pivot 26 ====\n", "optiwindnet.mesh: del_pivot_u 26 28\n", "optiwindnet.mesh: del_conc 19 12\n", "optiwindnet.mesh: del_pivot_end 26 27\n", "optiwindnet.mesh: del_pivot_u 26 12\n", "optiwindnet.mesh: ==== pivot 27 ====\n", "optiwindnet.mesh: del_pivot_u 27 26\n", "optiwindnet.mesh: ==== pivot 28 ====\n", "optiwindnet.mesh: del_conc 14 17\n", "optiwindnet.mesh: del_pivot_end 28 26\n", "optiwindnet.mesh: del_pivot_u 28 17\n", "optiwindnet.mesh: PART L\n", "optiwindnet.mesh: PART M\n", "optiwindnet.mesh: A_edge: 0–7 length: 1997.762; path: [0, 21, 20, 7]\n", "optiwindnet.mesh: s: 0; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 0, t: 20\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 20; t: 7;\n", "optiwindnet.mesh: a: 21; c: 19; s: 21, t: 7\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 3–-1 length: 1159.045; path: [3, 25, -1]\n", "optiwindnet.mesh: s: 3; b: 25; t: -1;\n", "optiwindnet.mesh: a: 24; c: 22; s: 3, t: -1\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 5–11 length: 1311.176; path: [5, 15, 16, 11]\n", "optiwindnet.mesh: s: 5; b: 15; t: 16;\n", "optiwindnet.mesh: a: 16; c: 14; s: 5, t: 16\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: s: 15; b: 16; t: 11;\n", "optiwindnet.mesh: a: 17; c: 15; s: 15, t: 11\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: A_edge: 2–7 length: 1400.502; path: [2, 21, 20, 7]\n", "optiwindnet.mesh: s: 2; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 20; t: 7;\n", "optiwindnet.mesh: a: 21; c: 19; s: 21, t: 7\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 10–-1 length: 909.253; path: [10, 16, 15, -1]\n", "optiwindnet.mesh: s: 10; b: 16; t: 15;\n", "optiwindnet.mesh: a: 17; c: 15; s: 10, t: 15\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 16; b: 15; t: -1;\n", "optiwindnet.mesh: a: 16; c: 14; s: 16, t: -1\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 4–6 length: 1022.923; path: [4, 21, 20, 6]\n", "optiwindnet.mesh: s: 4; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 4, t: 20\n", "optiwindnet.mesh: (0) 4 21 20 shortcut\n", "optiwindnet.mesh: s: 4; b: 20; t: 6;\n", "optiwindnet.mesh: a: 21; c: 19; s: 4, t: 6\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 1–4 length: 920.305; path: [1, 23, 22, 4]\n", "optiwindnet.mesh: s: 1; b: 23; t: 22;\n", "optiwindnet.mesh: a: 22; c: 24; s: 1, t: 22\n", "optiwindnet.mesh: (0) 1 23 22 shortcut\n", "optiwindnet.mesh: s: 1; b: 22; t: 4;\n", "optiwindnet.mesh: a: 25; c: 23; s: 1, t: 4\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: A_edge: 0–6 length: 1616.066; path: [0, 21, 20, 6]\n", "optiwindnet.mesh: s: 0; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 0, t: 20\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 20; t: 6;\n", "optiwindnet.mesh: a: 21; c: 19; s: 21, t: 6\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 11–-1 length: 985.722; path: [11, 16, 15, -1]\n", "optiwindnet.mesh: s: 11; b: 16; t: 15;\n", "optiwindnet.mesh: a: 17; c: 15; s: 11, t: 15\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 16; b: 15; t: -1;\n", "optiwindnet.mesh: a: 16; c: 14; s: 16, t: -1\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 1–7 length: 1845.557; path: [1, 2, 21, 20, 7]\n", "optiwindnet.mesh: A_edge: 2–6 length: 1018.806; path: [2, 21, 20, 6]\n", "optiwindnet.mesh: s: 2; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 20; t: 6;\n", "optiwindnet.mesh: a: 21; c: 19; s: 21, t: 6\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: A_edge: 5–6 length: 969.949; path: [5, 15, 6]\n", "optiwindnet.mesh: s: 5; b: 15; t: 6;\n", "optiwindnet.mesh: a: 16; c: 14; s: 5, t: 6\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: A_edge: 4–11 length: 1514.511; path: [4, 20, 15, 16, 11]\n", "optiwindnet.mesh: A_edge: 2–11 length: 1511.620; path: [2, 21, 20, 15, 16, 11]\n", "optiwindnet.mesh: s: 2; b: 21; t: 20;\n", "optiwindnet.mesh: a: 12; c: 20; s: 2, t: 20\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 20; t: 15;\n", "optiwindnet.mesh: a: 21; c: 19; s: 21, t: 15\n", "optiwindnet.mesh: (1) 21 20 15 shortcut\n", "optiwindnet.mesh: s: 2; b: 21; t: 15;\n", "optiwindnet.mesh: a: 12; c: 20; s: 2, t: 15\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 15; t: 16;\n", "optiwindnet.mesh: a: 16; c: 14; s: 21, t: 16\n", "optiwindnet.mesh: (1) 21 15 16 shortcut\n", "optiwindnet.mesh: s: 2; b: 21; t: 16;\n", "optiwindnet.mesh: a: 12; c: 20; s: 2, t: 16\n", "optiwindnet.mesh: Non-shortable at 4th test.\n", "optiwindnet.mesh: s: 21; b: 16; t: 11;\n", "optiwindnet.mesh: a: 17; c: 15; s: 21, t: 11\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: A_edge: 2–8 length: 1355.415; path: [2, 21, 20, 6, 8]\n", "optiwindnet.mesh: PART N\n", "optiwindnet.mesh: updating d2root of ⟨-1, 10⟩ (path [-1, 15, 16, 10])\n", "optiwindnet.mesh: s: -1; b: 15; t: 16;\n", "optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: s: 15; b: 16; t: 10;\n", "optiwindnet.mesh: a: 17; c: 15; s: 15, t: 10\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: d2roots[10, -1] updated\n", "optiwindnet.mesh: updating d2root of ⟨-1, 11⟩ (path [-1, 15, 16, 11])\n", "optiwindnet.mesh: s: -1; b: 15; t: 16;\n", "optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: s: 15; b: 16; t: 11;\n", "optiwindnet.mesh: a: 17; c: 15; s: 15, t: 11\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: d2roots[11, -1] updated\n", "optiwindnet.mesh: updating d2root of ⟨-1, 3⟩ (path [-1, 25, 3])\n", "optiwindnet.mesh: s: -1; b: 25; t: 3;\n", "optiwindnet.mesh: a: 24; c: 22; s: -1, t: 3\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: d2roots[3, -1] updated\n", "optiwindnet.mesh: updating d2root of ⟨-1, 9⟩ (path [-1, 15, 16, 10, 9])\n", "optiwindnet.mesh: s: -1; b: 15; t: 16;\n", "optiwindnet.mesh: a: 16; c: 14; s: -1, t: 16\n", "optiwindnet.mesh: Non-shortable at 3rd test.\n", "optiwindnet.mesh: s: 15; b: 16; t: 9;\n", "optiwindnet.mesh: a: 17; c: 15; s: 15, t: 9\n", "optiwindnet.mesh: d2roots[9, -1] updated\n", "optiwindnet.mesh: updating d2root of ⟨-1, 0⟩ (path [-1, 21, 0])\n", "optiwindnet.mesh: s: -1; b: 21; t: 0;\n", "optiwindnet.mesh: a: 12; c: 20; s: -1, t: 0\n", "optiwindnet.mesh: PART O\n", "optiwindnet.mesh: PART P\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <0>\n", "optiwindnet.heuristics.EW_presolver: sr_u <0>, «0~1», tradeoff = -1045.968\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <1>\n", "optiwindnet.heuristics.EW_presolver: sr_u <1>, «1~0», tradeoff = -851.372\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <2>\n", "optiwindnet.heuristics.EW_presolver: sr_u <2>, «2~1», tradeoff = -416.066\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <3>\n", "optiwindnet.heuristics.EW_presolver: sr_u <3>, «3~4», tradeoff = -595.165\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <4>\n", "optiwindnet.heuristics.EW_presolver: sr_u <4>, «4~3», tradeoff = -62.100\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <5>\n", "optiwindnet.heuristics.EW_presolver: 5\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <6>\n", "optiwindnet.heuristics.EW_presolver: sr_u <6>, «6~8», tradeoff = -292.727\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <7>\n", "optiwindnet.heuristics.EW_presolver: sr_u <7>, «7~6», tradeoff = -577.867\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <8>\n", "optiwindnet.heuristics.EW_presolver: sr_u <8>, «8~6», tradeoff = -567.296\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <9>\n", "optiwindnet.heuristics.EW_presolver: sr_u <9>, «9~10», tradeoff = -841.283\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <10>\n", "optiwindnet.heuristics.EW_presolver: sr_u <10>, «10~9», tradeoff = -515.130\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <11>\n", "optiwindnet.heuristics.EW_presolver: sr_u <11>, «11~10», tradeoff = -511.075\n", "optiwindnet.heuristics.EW_presolver: [1]\n", "optiwindnet.heuristics.EW_presolver: «0~1», sr_u: <0>\n", "optiwindnet.heuristics.EW_presolver: «0~1» subroot <1>\n", "optiwindnet.heuristics.EW_presolver: heap top: <1>, «[1, 0]» -851.372\n", "optiwindnet.heuristics.EW_presolver: [2]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {1}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <1>\n", "optiwindnet.heuristics.EW_presolver: sr_u <1>, «1~2», tradeoff = -830.788\n", "optiwindnet.heuristics.EW_presolver: «9~10», sr_u: <9>\n", "optiwindnet.heuristics.EW_presolver: «9~10» subroot <10>\n", "optiwindnet.heuristics.EW_presolver: heap top: <1>, «[1, 2]» -830.788\n", "optiwindnet.heuristics.EW_presolver: [3]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {10}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <10>\n", "optiwindnet.heuristics.EW_presolver: sr_u <10>, «10~8», tradeoff = -494.133\n", "optiwindnet.heuristics.EW_presolver: «1~2», sr_u: <1>\n", "optiwindnet.heuristics.EW_presolver: «1~2» subroot <2>\n", "optiwindnet.heuristics.EW_presolver: heap top: <3>, «[3, 4]» -595.165\n", "optiwindnet.heuristics.EW_presolver: [4]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {2}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <2>\n", "optiwindnet.heuristics.EW_presolver: sr_u <2>, «1~3», tradeoff = -308.157\n", "optiwindnet.heuristics.EW_presolver: «3~4», sr_u: <3>\n", "optiwindnet.heuristics.EW_presolver: «3~4» subroot <4>\n", "optiwindnet.heuristics.EW_presolver: heap top: <7>, «[7, 6]» -577.867\n", "optiwindnet.heuristics.EW_presolver: [5]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {2, 4}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <4>\n", "optiwindnet.heuristics.EW_presolver: 4\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <2>\n", "optiwindnet.heuristics.EW_presolver: 2\n", "optiwindnet.heuristics.EW_presolver: «7~6», sr_u: <7>\n", "optiwindnet.heuristics.EW_presolver: «7~6» subroot <6>\n", "optiwindnet.heuristics.EW_presolver: heap top: <8>, «[8, 6]» -567.296\n", "optiwindnet.heuristics.EW_presolver: [6]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {6}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <6>\n", "optiwindnet.heuristics.EW_presolver: sr_u <6>, «6~8», tradeoff = -292.727\n", "optiwindnet.heuristics.EW_presolver: «8~6», sr_u: <8>\n", "optiwindnet.heuristics.EW_presolver: «8~6» subroot <6>\n", "optiwindnet.heuristics.EW_presolver: heap top: <11>, «[11, 10]» -511.075\n", "optiwindnet.heuristics.EW_presolver: [7]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {10, 6}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <10>\n", "optiwindnet.heuristics.EW_presolver: sr_u <10>, «10~11», tradeoff = -434.606\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <6>\n", "optiwindnet.heuristics.EW_presolver: 6\n", "optiwindnet.heuristics.EW_presolver: «11~10», sr_u: <11>\n", "optiwindnet.heuristics.EW_presolver: «11~10» subroot <10>\n", "optiwindnet.heuristics.EW_presolver: heap top: <10>, «[10, 11]» -434.606\n", "optiwindnet.heuristics.EW_presolver: [8]\n", "optiwindnet.heuristics.EW_presolver: stale_subtrees: {10}\n", "optiwindnet.heuristics.EW_presolver: starting... subroot = <10>\n", "optiwindnet.heuristics.EW_presolver: 10\n", ">PathFinder: \"example_location\" (T = 12)\n", "optiwindnet.pathfinding: >PathFinder: \"example_location\" (T = 12)\n", "optiwindnet.mesh: differences between G and P: [(-1, 10)]\n", "optiwindnet.mesh: in G, not in P: -1–10\n", "optiwindnet.mesh: share 1 neighbors.\n", "pseudoedge «20->-1» added\n", "optiwindnet.pathfinding: pseudoedge «20->-1» added\n", "pseudoedge «6->-1» added\n", "optiwindnet.pathfinding: pseudoedge «6->-1» added\n", "pseudoedge «6->-1» added\n", "optiwindnet.pathfinding: pseudoedge «6->-1» added\n", "pseudoedge «15->-1» added\n", "optiwindnet.pathfinding: pseudoedge «15->-1» added\n", "pseudoedge «15->-1» added\n", "optiwindnet.pathfinding: pseudoedge «15->-1» added\n", "pseudoedge «5->-1» added\n", "optiwindnet.pathfinding: pseudoedge «5->-1» added\n", "pseudoedge «4->-1» added\n", "optiwindnet.pathfinding: pseudoedge «4->-1» added\n", "pseudoedge «4->-1» added\n", "optiwindnet.pathfinding: pseudoedge «4->-1» added\n", "pseudoedge «2->-1» added\n", "optiwindnet.pathfinding: pseudoedge «2->-1» added\n", "pseudoedge «2->-1» added\n", "optiwindnet.pathfinding: pseudoedge «2->-1» added\n", "pseudoedge «21->-1» added\n", "optiwindnet.pathfinding: pseudoedge «21->-1» added\n", "_find_paths[1]: advancer id <0>\n", "optiwindnet.pathfinding: _find_paths[1]: advancer id <0>\n", "<0> RIGHT _new(7) _nearside(6) _farside(20) _apex(-1), _wedge_end: 20 6, _funnel: [20, 6]\n", "optiwindnet.pathfinding: <0> RIGHT _new(7) _nearside(6) _farside(20) _apex(-1), _wedge_end: 20 6, _funnel: [20, 6]\n", "<0> inside\n", "optiwindnet.pathfinding: <0> inside\n", "_find_paths[2]: advancer id <5>\n", "optiwindnet.pathfinding: _find_paths[2]: advancer id <5>\n", "<5> RIGHT _new(12) _nearside(21) _farside(2) _apex(-1), _wedge_end: 2 21, _funnel: [2, 21]\n", "optiwindnet.pathfinding: <5> RIGHT _new(12) _nearside(21) _farside(2) _apex(-1), _wedge_end: 2 21, _funnel: [2, 21]\n", "<5> inside\n", "optiwindnet.pathfinding: <5> inside\n", "_find_paths[3]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[3]: advancer id <1>\n", "<1> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]\n", "optiwindnet.pathfinding: <1> RIGHT _new(16) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 15, _funnel: [6, 15]\n", "<1> infranear\n", "optiwindnet.pathfinding: <1> infranear\n", "_find_paths[4]: advancer id <2>\n", "optiwindnet.pathfinding: _find_paths[4]: advancer id <2>\n", "<2> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]\n", "optiwindnet.pathfinding: <2> LEFT _new(14) _nearside(15) _farside(5) _apex(-1), _wedge_end: 15 5, _funnel: [15, 5]\n", "<2> inside\n", "optiwindnet.pathfinding: <2> inside\n", "_find_paths[5]: advancer id <3>\n", "optiwindnet.pathfinding: _find_paths[5]: advancer id <3>\n", "<3> RIGHT _new(14) _nearside(4) _farside(5) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]\n", "optiwindnet.pathfinding: <3> RIGHT _new(14) _nearside(4) _farside(5) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]\n", "<3> ultrafar\n", "optiwindnet.pathfinding: <3> ultrafar\n", "_find_paths[6]: advancer id <6>\n", "optiwindnet.pathfinding: _find_paths[6]: advancer id <6>\n", "<6> LEFT _new(14) _nearside(5) _farside(4) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]\n", "optiwindnet.pathfinding: <6> LEFT _new(14) _nearside(5) _farside(4) _apex(-1), _wedge_end: 5 4, _funnel: [5, 4]\n", "<6> infranear\n", "optiwindnet.pathfinding: <6> infranear\n", "_find_paths[7]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[7]: advancer id <1>\n", "pseudoedge «16->15» added\n", "optiwindnet.pathfinding: pseudoedge «16->15» added\n", "<1> new keeper for (16, -9223372036854775808) via 15: d_path = 397.67\n", "optiwindnet.pathfinding: <1> new keeper for (16, -9223372036854775808) via 15: d_path = 397.67\n", "<1> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "optiwindnet.pathfinding: <1> RIGHT _new(11) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "<1> infranear\n", "optiwindnet.pathfinding: <1> infranear\n", "_find_paths[8]: advancer id <7>\n", "optiwindnet.pathfinding: _find_paths[8]: advancer id <7>\n", "<7> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "optiwindnet.pathfinding: <7> LEFT _new(11) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 16, _funnel: [6, 15]\n", "<7> ultrafar\n", "optiwindnet.pathfinding: <7> ultrafar\n", "_find_paths[9]: advancer id <2>\n", "optiwindnet.pathfinding: _find_paths[9]: advancer id <2>\n", "pseudoedge «14->-1» added\n", "optiwindnet.pathfinding: pseudoedge «14->-1» added\n", "<2> new keeper for (14, -9223372036854775808) via -1: d_path = 445.53\n", "optiwindnet.pathfinding: <2> new keeper for (14, -9223372036854775808) via -1: d_path = 445.53\n", "<2> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]\n", "optiwindnet.pathfinding: <2> RIGHT _new(4) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]\n", "<2> infranear\n", "optiwindnet.pathfinding: <2> infranear\n", "_find_paths[10]: advancer id <8>\n", "optiwindnet.pathfinding: _find_paths[10]: advancer id <8>\n", "<8> LEFT _new(4) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]\n", "optiwindnet.pathfinding: <8> LEFT _new(4) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 5, _funnel: [14, 5]\n", "<8> ultrafar\n", "optiwindnet.pathfinding: <8> ultrafar\n", "_find_paths[11]: advancer id <3>\n", "optiwindnet.pathfinding: _find_paths[11]: advancer id <3>\n", "pseudoedge «14->5» added\n", "optiwindnet.pathfinding: pseudoedge «14->5» added\n", "<3> RIGHT _new(15) _nearside(14) _farside(5) _apex(5), _wedge_end: 5 14, _funnel: [5, 14]\n", "optiwindnet.pathfinding: <3> RIGHT _new(15) _nearside(14) _farside(5) _apex(5), _wedge_end: 5 14, _funnel: [5, 14]\n", "<3> inside\n", "optiwindnet.pathfinding: <3> inside\n", "_find_paths[12]: advancer id <6>\n", "optiwindnet.pathfinding: _find_paths[12]: advancer id <6>\n", "<6> RIGHT _new(3) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [5, 4]\n", "optiwindnet.pathfinding: <6> RIGHT _new(3) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 4, _funnel: [5, 4]\n", "<6> infranear\n", "optiwindnet.pathfinding: <6> infranear\n", "_find_paths[13]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[13]: advancer id <4>\n", "<4> RIGHT _new(25) _nearside(2) _farside(4) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]\n", "optiwindnet.pathfinding: <4> RIGHT _new(25) _nearside(2) _farside(4) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]\n", "<4> inside\n", "optiwindnet.pathfinding: <4> inside\n", "_find_paths[14]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[14]: advancer id <9>\n", "<9> LEFT _new(25) _nearside(4) _farside(2) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]\n", "optiwindnet.pathfinding: <9> LEFT _new(25) _nearside(4) _farside(2) _apex(-1), _wedge_end: 4 2, _funnel: [4, 2]\n", "<9> inside\n", "optiwindnet.pathfinding: <9> inside\n", "_find_paths[15]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[15]: advancer id <4>\n", "pseudoedge «25->-1» added\n", "optiwindnet.pathfinding: pseudoedge «25->-1» added\n", "<4> new keeper for (25, -9223372036854775808) via -1: d_path = 717.21\n", "optiwindnet.pathfinding: <4> new keeper for (25, -9223372036854775808) via -1: d_path = 717.21\n", "<4> LEFT _new(3) _nearside(4) _farside(25) _apex(-1), _wedge_end: 4 25, _funnel: [4, 25]\n", "optiwindnet.pathfinding: <4> LEFT _new(3) _nearside(4) _farside(25) _apex(-1), _wedge_end: 4 25, _funnel: [4, 25]\n", "<4> ultrafar\n", "optiwindnet.pathfinding: <4> ultrafar\n", "_find_paths[16]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[16]: advancer id <9>\n", "<9> LEFT _new(22) _nearside(25) _farside(2) _apex(-1), _wedge_end: 25 2, _funnel: [25, 2]\n", "optiwindnet.pathfinding: <9> LEFT _new(22) _nearside(25) _farside(2) _apex(-1), _wedge_end: 25 2, _funnel: [25, 2]\n", "<9> inside\n", "optiwindnet.pathfinding: <9> inside\n", "_find_paths[17]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[17]: advancer id <9>\n", "pseudoedge «22->-1» added\n", "optiwindnet.pathfinding: pseudoedge «22->-1» added\n", "<9> new keeper for (22, -9223372036854775808) via -1: d_path = 856.03\n", "optiwindnet.pathfinding: <9> new keeper for (22, -9223372036854775808) via -1: d_path = 856.03\n", "<9> LEFT _new(23) _nearside(22) _farside(2) _apex(-1), _wedge_end: 22 2, _funnel: [22, 2]\n", "optiwindnet.pathfinding: <9> LEFT _new(23) _nearside(22) _farside(2) _apex(-1), _wedge_end: 22 2, _funnel: [22, 2]\n", "<9> infranear\n", "optiwindnet.pathfinding: <9> infranear\n", "_find_paths[18]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[18]: advancer id <9>\n", "pseudoedge «23->22» added\n", "optiwindnet.pathfinding: pseudoedge «23->22» added\n", "<9> new keeper for (23, -9223372036854775808) via 22: d_path = 919.27\n", "optiwindnet.pathfinding: <9> new keeper for (23, -9223372036854775808) via 22: d_path = 919.27\n", "<9> RIGHT _new(3) _nearside(2) _farside(22) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]\n", "optiwindnet.pathfinding: <9> RIGHT _new(3) _nearside(2) _farside(22) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]\n", "<9> ultrafar\n", "optiwindnet.pathfinding: <9> ultrafar\n", "_find_paths[19]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[19]: advancer id <10>\n", "<10> LEFT _new(3) _nearside(22) _farside(2) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]\n", "optiwindnet.pathfinding: <10> LEFT _new(3) _nearside(22) _farside(2) _apex(-1), _wedge_end: 23 2, _funnel: [22, 2]\n", "<10> infranear\n", "optiwindnet.pathfinding: <10> infranear\n", "_find_paths[20]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[20]: advancer id <1>\n", "pseudoedge «11->16» added\n", "optiwindnet.pathfinding: pseudoedge «11->16» added\n", "<1> new keeper for (11, 10) via 16: d_path = 985.72\n", "optiwindnet.pathfinding: <1> new keeper for (11, 10) via 16: d_path = 985.72\n", "<1> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]\n", "optiwindnet.pathfinding: <1> RIGHT _new(10) _nearside(15) _farside(6) _apex(-1), _wedge_end: 6 11, _funnel: [6, 15]\n", "<1> infranear\n", "optiwindnet.pathfinding: <1> infranear\n", "_find_paths[21]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[21]: advancer id <1>\n", "pseudoedge «10->16» added\n", "optiwindnet.pathfinding: pseudoedge «10->16» added\n", "<1> new keeper for (10, 11) via 16: d_path = 909.25\n", "optiwindnet.pathfinding: <1> new keeper for (10, 11) via 16: d_path = 909.25\n", "<1> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]\n", "optiwindnet.pathfinding: <1> LEFT _new(8) _nearside(6) _farside(15) _apex(-1), _wedge_end: 6 10, _funnel: [6, 15]\n", "<1> ultrafar\n", "optiwindnet.pathfinding: <1> ultrafar\n", "_find_paths[22]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[22]: advancer id <1>\n", "pseudoedge «8->15» added\n", "optiwindnet.pathfinding: pseudoedge «8->15» added\n", "<1> new keeper for (8, 6) via 15: d_path = 905.15\n", "optiwindnet.pathfinding: <1> new keeper for (8, 6) via 15: d_path = 905.15\n", "<1> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]\n", "optiwindnet.pathfinding: <1> RIGHT _new(9) _nearside(16) _farside(8) _apex(15), _wedge_end: 8 10, _funnel: [8, 16]\n", "<1> inside\n", "optiwindnet.pathfinding: <1> inside\n", "_find_paths[23]: advancer id <7>\n", "optiwindnet.pathfinding: _find_paths[23]: advancer id <7>\n", "<7> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]\n", "optiwindnet.pathfinding: <7> RIGHT _new(17) _nearside(16) _farside(11) _apex(16), _wedge_end: 11 16, _funnel: [11, 16]\n", "<7> inside\n", "optiwindnet.pathfinding: <7> inside\n", "_find_paths[24]: advancer id <3>\n", "optiwindnet.pathfinding: _find_paths[24]: advancer id <3>\n", "pseudoedge «15->5» added\n", "optiwindnet.pathfinding: pseudoedge «15->5» added\n", "<3> new keeper for (15, -9223372036854775808) via 5: d_path = 1073.46\n", "optiwindnet.pathfinding: <3> new keeper for (15, -9223372036854775808) via 5: d_path = 1073.46\n", "{3} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {3} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[25]: advancer id <0>\n", "optiwindnet.pathfinding: _find_paths[25]: advancer id <0>\n", "pseudoedge «7->-1» added\n", "optiwindnet.pathfinding: pseudoedge «7->-1» added\n", "<0> new keeper for (7, 6) via -1: d_path = 1099.03\n", "optiwindnet.pathfinding: <0> new keeper for (7, 6) via -1: d_path = 1099.03\n", "<0> LEFT _new(19) _nearside(20) _farside(7) _apex(-1), _wedge_end: 20 7, _funnel: [20, 7]\n", "optiwindnet.pathfinding: <0> LEFT _new(19) _nearside(20) _farside(7) _apex(-1), _wedge_end: 20 7, _funnel: [20, 7]\n", "<0> inside\n", "optiwindnet.pathfinding: <0> inside\n", "_find_paths[26]: advancer id <7>\n", "optiwindnet.pathfinding: _find_paths[26]: advancer id <7>\n", "pseudoedge «17->16» added\n", "optiwindnet.pathfinding: pseudoedge «17->16» added\n", "<7> new keeper for (17, -9223372036854775808) via 16: d_path = 1113.60\n", "optiwindnet.pathfinding: <7> new keeper for (17, -9223372036854775808) via 16: d_path = 1113.60\n", "<7> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <7> RIGHT _new(9) _nearside(17) _farside(11) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "<7> ultrafar\n", "optiwindnet.pathfinding: <7> ultrafar\n", "_find_paths[27]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[27]: advancer id <11>\n", "<11> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <11> LEFT _new(9) _nearside(11) _farside(17) _apex(16), _wedge_end: 11 17, _funnel: [11, 17]\n", "<11> infranear\n", "optiwindnet.pathfinding: <11> infranear\n", "_find_paths[28]: advancer id <0>\n", "optiwindnet.pathfinding: _find_paths[28]: advancer id <0>\n", "pseudoedge «19->-1» added\n", "optiwindnet.pathfinding: pseudoedge «19->-1» added\n", "<0> new keeper for (19, -9223372036854775808) via -1: d_path = 1153.92\n", "optiwindnet.pathfinding: <0> new keeper for (19, -9223372036854775808) via -1: d_path = 1153.92\n", "<0> RIGHT _new(9) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]\n", "optiwindnet.pathfinding: <0> RIGHT _new(9) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]\n", "<0> infranear\n", "optiwindnet.pathfinding: <0> infranear\n", "_find_paths[29]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[29]: advancer id <12>\n", "<12> LEFT _new(9) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]\n", "optiwindnet.pathfinding: <12> LEFT _new(9) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 7, _funnel: [19, 7]\n", "<12> ultrafar\n", "optiwindnet.pathfinding: <12> ultrafar\n", "_find_paths[30]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[30]: advancer id <4>\n", "pseudoedge «3->25» added\n", "optiwindnet.pathfinding: pseudoedge «3->25» added\n", "<4> new keeper for (3, 4) via 25: d_path = 1159.04\n", "optiwindnet.pathfinding: <4> new keeper for (3, 4) via 25: d_path = 1159.04\n", "<4> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]\n", "optiwindnet.pathfinding: <4> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]\n", "<4> inside\n", "optiwindnet.pathfinding: <4> inside\n", "_find_paths[31]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[31]: advancer id <4>\n", "pseudoedge «24->25» added\n", "optiwindnet.pathfinding: pseudoedge «24->25» added\n", "<4> new keeper for (24, -9223372036854775808) via 25: d_path = 923.36\n", "optiwindnet.pathfinding: <4> new keeper for (24, -9223372036854775808) via 25: d_path = 923.36\n", "<4> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <4> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]\n", "<4> infranear\n", "optiwindnet.pathfinding: <4> infranear\n", "_find_paths[32]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[32]: advancer id <4>\n", "pseudoedge «23->24» added\n", "optiwindnet.pathfinding: pseudoedge «23->24» added\n", "<4> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <4> RIGHT _new(2) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "<4> infranear\n", "optiwindnet.pathfinding: <4> infranear\n", "_find_paths[33]: advancer id <13>\n", "optiwindnet.pathfinding: _find_paths[33]: advancer id <13>\n", "<13> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <13> LEFT _new(2) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 23, _funnel: [3, 24]\n", "<13> ultrafar\n", "optiwindnet.pathfinding: <13> ultrafar\n", "_find_paths[34]: advancer id <6>\n", "optiwindnet.pathfinding: _find_paths[34]: advancer id <6>\n", "pseudoedge «3->4» added\n", "optiwindnet.pathfinding: pseudoedge «3->4» added\n", "<6> RIGHT _new(28) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]\n", "optiwindnet.pathfinding: <6> RIGHT _new(28) _nearside(4) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]\n", "<6> inside\n", "optiwindnet.pathfinding: <6> inside\n", "_find_paths[35]: advancer id <6>\n", "optiwindnet.pathfinding: _find_paths[35]: advancer id <6>\n", "pseudoedge «28->-1» added\n", "optiwindnet.pathfinding: pseudoedge «28->-1» added\n", "<6> new keeper for (28, -9223372036854775808) via -1: d_path = 7423.95\n", "optiwindnet.pathfinding: <6> new keeper for (28, -9223372036854775808) via -1: d_path = 7423.95\n", "{6} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {6} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[36]: advancer id <14>\n", "optiwindnet.pathfinding: _find_paths[36]: advancer id <14>\n", "<14> LEFT _new(28) _nearside(5) _farside(4) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]\n", "optiwindnet.pathfinding: <14> LEFT _new(28) _nearside(5) _farside(4) _apex(-1), _wedge_end: 14 3, _funnel: [5, 4]\n", "<14> inside\n", "optiwindnet.pathfinding: <14> inside\n", "_find_paths[37]: advancer id <14>\n", "optiwindnet.pathfinding: _find_paths[37]: advancer id <14>\n", "<14> LEFT _new(27) _nearside(28) _farside(4) _apex(-1), _wedge_end: 28 3, _funnel: [28, 4]\n", "optiwindnet.pathfinding: <14> LEFT _new(27) _nearside(28) _farside(4) _apex(-1), _wedge_end: 28 3, _funnel: [28, 4]\n", "<14> ultrafar\n", "optiwindnet.pathfinding: <14> ultrafar\n", "_find_paths[38]: advancer id <14>\n", "optiwindnet.pathfinding: _find_paths[38]: advancer id <14>\n", "pseudoedge «27->3» added\n", "optiwindnet.pathfinding: pseudoedge «27->3» added\n", "<14> new keeper for (27, -9223372036854775808) via 3: d_path = 8589.66\n", "optiwindnet.pathfinding: <14> new keeper for (27, -9223372036854775808) via 3: d_path = 8589.66\n", "<14> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "optiwindnet.pathfinding: <14> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "<14> inside\n", "optiwindnet.pathfinding: <14> inside\n", "_find_paths[39]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[39]: advancer id <15>\n", "<15> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "optiwindnet.pathfinding: <15> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "<15> inside\n", "optiwindnet.pathfinding: <15> inside\n", "_find_paths[40]: advancer id <2>\n", "optiwindnet.pathfinding: _find_paths[40]: advancer id <2>\n", "pseudoedge «4->5» added\n", "optiwindnet.pathfinding: pseudoedge «4->5» added\n", "<2> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]\n", "optiwindnet.pathfinding: <2> RIGHT _new(3) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 4, _funnel: [14, 5]\n", "<2> infranear\n", "optiwindnet.pathfinding: <2> infranear\n", "_find_paths[41]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[41]: advancer id <1>\n", "pseudoedge «9->15» added\n", "optiwindnet.pathfinding: pseudoedge «9->15» added\n", "<1> new keeper for (9, 10) via 15: d_path = 1235.41\n", "optiwindnet.pathfinding: <1> new keeper for (9, 10) via 15: d_path = 1235.41\n", "<1> RIGHT _new(7) _nearside(9) _farside(8) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <1> RIGHT _new(7) _nearside(9) _farside(8) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]\n", "<1> ultrafar\n", "optiwindnet.pathfinding: <1> ultrafar\n", "_find_paths[42]: advancer id <16>\n", "optiwindnet.pathfinding: _find_paths[42]: advancer id <16>\n", "<16> LEFT _new(7) _nearside(8) _farside(9) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <16> LEFT _new(7) _nearside(8) _farside(9) _apex(15), _wedge_end: 8 9, _funnel: [8, 9]\n", "<16> infranear\n", "optiwindnet.pathfinding: <16> infranear\n", "_find_paths[43]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[43]: advancer id <9>\n", "pseudoedge «3->23» added\n", "optiwindnet.pathfinding: pseudoedge «3->23» added\n", "<9> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]\n", "optiwindnet.pathfinding: <9> LEFT _new(24) _nearside(23) _farside(3) _apex(23), _wedge_end: 23 3, _funnel: [23, 3]\n", "<9> inside\n", "optiwindnet.pathfinding: <9> inside\n", "_find_paths[44]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[44]: advancer id <9>\n", "pseudoedge «24->23» added\n", "optiwindnet.pathfinding: pseudoedge «24->23» added\n", "<9> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]\n", "optiwindnet.pathfinding: <9> LEFT _new(25) _nearside(24) _farside(3) _apex(23), _wedge_end: 24 3, _funnel: [24, 3]\n", "<9> infranear\n", "optiwindnet.pathfinding: <9> infranear\n", "_find_paths[45]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[45]: advancer id <10>\n", "<10> RIGHT _new(1) _nearside(2) _farside(22) _apex(-1), _wedge_end: 3 2, _funnel: [22, 2]\n", "optiwindnet.pathfinding: <10> RIGHT _new(1) _nearside(2) _farside(22) _apex(-1), _wedge_end: 3 2, _funnel: [22, 2]\n", "<10> inside\n", "optiwindnet.pathfinding: <10> inside\n", "_find_paths[46]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[46]: advancer id <10>\n", "pseudoedge «1->-1» added\n", "optiwindnet.pathfinding: pseudoedge «1->-1» added\n", "<10> new keeper for (1, 2) via -1: d_path = 1275.84\n", "optiwindnet.pathfinding: <10> new keeper for (1, 2) via -1: d_path = 1275.84\n", "<10> RIGHT _new(27) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]\n", "optiwindnet.pathfinding: <10> RIGHT _new(27) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]\n", "<10> infranear\n", "optiwindnet.pathfinding: <10> infranear\n", "_find_paths[47]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[47]: advancer id <10>\n", "pseudoedge «27->1» added\n", "optiwindnet.pathfinding: pseudoedge «27->1» added\n", "<10> new keeper for (27, -9223372036854775808) via 1: d_path = 8292.63\n", "optiwindnet.pathfinding: <10> new keeper for (27, -9223372036854775808) via 1: d_path = 8292.63\n", "<10> RIGHT _new(28) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 27, _funnel: [22, 1]\n", "optiwindnet.pathfinding: <10> RIGHT _new(28) _nearside(1) _farside(22) _apex(-1), _wedge_end: 3 27, _funnel: [22, 1]\n", "<10> ultrafar\n", "optiwindnet.pathfinding: <10> ultrafar\n", "_find_paths[48]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[48]: advancer id <10>\n", "pseudoedge «28->3» added\n", "optiwindnet.pathfinding: pseudoedge «28->3» added\n", "<10> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "optiwindnet.pathfinding: <10> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "<10> inside\n", "optiwindnet.pathfinding: <10> inside\n", "_find_paths[49]: advancer id <17>\n", "optiwindnet.pathfinding: _find_paths[49]: advancer id <17>\n", "<17> LEFT _new(27) _nearside(22) _farside(1) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]\n", "optiwindnet.pathfinding: <17> LEFT _new(27) _nearside(22) _farside(1) _apex(-1), _wedge_end: 3 1, _funnel: [22, 1]\n", "<17> ultrafar\n", "optiwindnet.pathfinding: <17> ultrafar\n", "_find_paths[50]: advancer id <17>\n", "optiwindnet.pathfinding: _find_paths[50]: advancer id <17>\n", "<17> RIGHT _new(12) _nearside(1) _farside(27) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <17> RIGHT _new(12) _nearside(1) _farside(27) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]\n", "<17> inside\n", "optiwindnet.pathfinding: <17> inside\n", "_find_paths[51]: advancer id <18>\n", "optiwindnet.pathfinding: _find_paths[51]: advancer id <18>\n", "<18> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "optiwindnet.pathfinding: <18> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "<18> inside\n", "optiwindnet.pathfinding: <18> inside\n", "_find_paths[52]: advancer id <19>\n", "optiwindnet.pathfinding: _find_paths[52]: advancer id <19>\n", "<19> LEFT _new(12) _nearside(27) _farside(1) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <19> LEFT _new(12) _nearside(27) _farside(1) _apex(1), _wedge_end: 27 1, _funnel: [27, 1]\n", "<19> inside\n", "optiwindnet.pathfinding: <19> inside\n", "_find_paths[53]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[53]: advancer id <9>\n", "pseudoedge «25->24» added\n", "optiwindnet.pathfinding: pseudoedge «25->24» added\n", "<9> RIGHT _new(4) _nearside(3) _farside(24) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]\n", "optiwindnet.pathfinding: <9> RIGHT _new(4) _nearside(3) _farside(24) _apex(23), _wedge_end: 25 3, _funnel: [24, 3]\n", "<9> ultrafar\n", "optiwindnet.pathfinding: <9> ultrafar\n", "_find_paths[54]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[54]: advancer id <4>\n", "pseudoedge «2->23» added\n", "optiwindnet.pathfinding: pseudoedge «2->23» added\n", "<4> RIGHT _new(1) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 2, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <4> RIGHT _new(1) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 2, _funnel: [3, 24]\n", "<4> infranear\n", "optiwindnet.pathfinding: <4> infranear\n", "_find_paths[55]: advancer id <13>\n", "optiwindnet.pathfinding: _find_paths[55]: advancer id <13>\n", "<13> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]\n", "optiwindnet.pathfinding: <13> RIGHT _new(22) _nearside(23) _farside(2) _apex(23), _wedge_end: 2 23, _funnel: [2, 23]\n", "<13> inside\n", "optiwindnet.pathfinding: <13> inside\n", "_find_paths[56]: advancer id <13>\n", "optiwindnet.pathfinding: _find_paths[56]: advancer id <13>\n", "pseudoedge «22->23» added\n", "optiwindnet.pathfinding: pseudoedge «22->23» added\n", "<13> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]\n", "optiwindnet.pathfinding: <13> RIGHT _new(25) _nearside(22) _farside(2) _apex(23), _wedge_end: 2 22, _funnel: [2, 22]\n", "<13> infranear\n", "optiwindnet.pathfinding: <13> infranear\n", "_find_paths[57]: advancer id <1>\n", "optiwindnet.pathfinding: _find_paths[57]: advancer id <1>\n", "pseudoedge «7->8» added\n", "optiwindnet.pathfinding: pseudoedge «7->8» added\n", "<1> RIGHT _new(6) _nearside(7) _farside(8) _apex(8), _wedge_end: 8 7, _funnel: [8, 7]\n", "optiwindnet.pathfinding: <1> RIGHT _new(6) _nearside(7) _farside(8) _apex(8), _wedge_end: 8 7, _funnel: [8, 7]\n", "<1> inside\n", "optiwindnet.pathfinding: <1> inside\n", "pseudoedge «6->8» added\n", "optiwindnet.pathfinding: pseudoedge «6->8» added\n", "{1} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {1} advancer reached DEAD-END (not portals)\n", "_find_paths[58]: advancer id <16>\n", "optiwindnet.pathfinding: _find_paths[58]: advancer id <16>\n", "<16> RIGHT _new(19) _nearside(9) _farside(8) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <16> RIGHT _new(19) _nearside(9) _farside(8) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]\n", "<16> ultrafar\n", "optiwindnet.pathfinding: <16> ultrafar\n", "_find_paths[59]: advancer id <20>\n", "optiwindnet.pathfinding: _find_paths[59]: advancer id <20>\n", "<20> LEFT _new(19) _nearside(8) _farside(9) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <20> LEFT _new(19) _nearside(8) _farside(9) _apex(15), _wedge_end: 7 9, _funnel: [8, 9]\n", "<20> infranear\n", "optiwindnet.pathfinding: <20> infranear\n", "_find_paths[60]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[60]: advancer id <4>\n", "pseudoedge «1->24» added\n", "optiwindnet.pathfinding: pseudoedge «1->24» added\n", "<4> RIGHT _new(27) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <4> RIGHT _new(27) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]\n", "<4> infranear\n", "optiwindnet.pathfinding: <4> infranear\n", "_find_paths[61]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[61]: advancer id <4>\n", "pseudoedge «27->24» added\n", "optiwindnet.pathfinding: pseudoedge «27->24» added\n", "<4> RIGHT _new(28) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 27, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <4> RIGHT _new(28) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 27, _funnel: [3, 24]\n", "<4> ultrafar\n", "optiwindnet.pathfinding: <4> ultrafar\n", "_find_paths[62]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[62]: advancer id <4>\n", "pseudoedge «28->3» added\n", "optiwindnet.pathfinding: pseudoedge «28->3» added\n", "<4> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "optiwindnet.pathfinding: <4> RIGHT _new(14) _nearside(28) _farside(3) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "<4> inside\n", "optiwindnet.pathfinding: <4> inside\n", "_find_paths[63]: advancer id <21>\n", "optiwindnet.pathfinding: _find_paths[63]: advancer id <21>\n", "<21> LEFT _new(27) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <21> LEFT _new(27) _nearside(3) _farside(24) _apex(25), _wedge_end: 3 1, _funnel: [3, 24]\n", "<21> ultrafar\n", "optiwindnet.pathfinding: <21> ultrafar\n", "_find_paths[64]: advancer id <21>\n", "optiwindnet.pathfinding: _find_paths[64]: advancer id <21>\n", "<21> RIGHT _new(12) _nearside(1) _farside(27) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <21> RIGHT _new(12) _nearside(1) _farside(27) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]\n", "<21> infranear\n", "optiwindnet.pathfinding: <21> infranear\n", "_find_paths[65]: advancer id <22>\n", "optiwindnet.pathfinding: _find_paths[65]: advancer id <22>\n", "<22> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "optiwindnet.pathfinding: <22> LEFT _new(14) _nearside(3) _farside(28) _apex(3), _wedge_end: 3 28, _funnel: [3, 28]\n", "<22> inside\n", "optiwindnet.pathfinding: <22> inside\n", "_find_paths[66]: advancer id <23>\n", "optiwindnet.pathfinding: _find_paths[66]: advancer id <23>\n", "<23> LEFT _new(12) _nearside(27) _farside(1) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <23> LEFT _new(12) _nearside(27) _farside(1) _apex(24), _wedge_end: 27 1, _funnel: [27, 1]\n", "<23> ultrafar\n", "optiwindnet.pathfinding: <23> ultrafar\n", "_find_paths[67]: advancer id <9>\n", "optiwindnet.pathfinding: _find_paths[67]: advancer id <9>\n", "pseudoedge «4->24» added\n", "optiwindnet.pathfinding: pseudoedge «4->24» added\n", "{9} advancer revisited triangle\n", "optiwindnet.pathfinding: {9} advancer revisited triangle\n", "_find_paths[68]: advancer id <13>\n", "optiwindnet.pathfinding: _find_paths[68]: advancer id <13>\n", "pseudoedge «25->22» added\n", "optiwindnet.pathfinding: pseudoedge «25->22» added\n", "{13} advancer revisited triangle\n", "optiwindnet.pathfinding: {13} advancer revisited triangle\n", "_find_paths[69]: advancer id <5>\n", "optiwindnet.pathfinding: _find_paths[69]: advancer id <5>\n", "pseudoedge «12->-1» added\n", "optiwindnet.pathfinding: pseudoedge «12->-1» added\n", "<5> new keeper for (12, -9223372036854775808) via -1: d_path = 1523.09\n", "optiwindnet.pathfinding: <5> new keeper for (12, -9223372036854775808) via -1: d_path = 1523.09\n", "<5> RIGHT _new(0) _nearside(12) _farside(2) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]\n", "optiwindnet.pathfinding: <5> RIGHT _new(0) _nearside(12) _farside(2) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]\n", "<5> inside\n", "optiwindnet.pathfinding: <5> inside\n", "_find_paths[70]: advancer id <5>\n", "optiwindnet.pathfinding: _find_paths[70]: advancer id <5>\n", "pseudoedge «0->-1» added\n", "optiwindnet.pathfinding: pseudoedge «0->-1» added\n", "<5> new keeper for (0, 1) via -1: d_path = 1470.44\n", "optiwindnet.pathfinding: <5> new keeper for (0, 1) via -1: d_path = 1470.44\n", "<5> RIGHT _new(1) _nearside(0) _farside(2) _apex(-1), _wedge_end: 2 0, _funnel: [2, 0]\n", "optiwindnet.pathfinding: <5> RIGHT _new(1) _nearside(0) _farside(2) _apex(-1), _wedge_end: 2 0, _funnel: [2, 0]\n", "<5> ultrafar\n", "optiwindnet.pathfinding: <5> ultrafar\n", "pseudoedge «1->2» added\n", "optiwindnet.pathfinding: pseudoedge «1->2» added\n", "{5} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {5} advancer reached DEAD-END (not portals)\n", "_find_paths[71]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[71]: advancer id <24>\n", "<24> LEFT _new(0) _nearside(2) _farside(12) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]\n", "optiwindnet.pathfinding: <24> LEFT _new(0) _nearside(2) _farside(12) _apex(-1), _wedge_end: 2 12, _funnel: [2, 12]\n", "<24> inside\n", "optiwindnet.pathfinding: <24> inside\n", "_find_paths[72]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[72]: advancer id <24>\n", "<24> LEFT _new(1) _nearside(0) _farside(12) _apex(-1), _wedge_end: 0 12, _funnel: [0, 12]\n", "optiwindnet.pathfinding: <24> LEFT _new(1) _nearside(0) _farside(12) _apex(-1), _wedge_end: 0 12, _funnel: [0, 12]\n", "<24> infranear\n", "optiwindnet.pathfinding: <24> infranear\n", "_find_paths[73]: advancer id <16>\n", "optiwindnet.pathfinding: _find_paths[73]: advancer id <16>\n", "pseudoedge «19->7» added\n", "optiwindnet.pathfinding: pseudoedge «19->7» added\n", "<16> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]\n", "optiwindnet.pathfinding: <16> RIGHT _new(20) _nearside(19) _farside(7) _apex(7), _wedge_end: 7 19, _funnel: [7, 19]\n", "<16> inside\n", "optiwindnet.pathfinding: <16> inside\n", "_find_paths[74]: advancer id <20>\n", "optiwindnet.pathfinding: _find_paths[74]: advancer id <20>\n", "<20> RIGHT _new(26) _nearside(9) _farside(8) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <20> RIGHT _new(26) _nearside(9) _farside(8) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]\n", "<20> infranear\n", "optiwindnet.pathfinding: <20> infranear\n", "_find_paths[75]: advancer id <20>\n", "optiwindnet.pathfinding: _find_paths[75]: advancer id <20>\n", "pseudoedge «26->9» added\n", "optiwindnet.pathfinding: pseudoedge «26->9» added\n", "<20> new keeper for (26, -9223372036854775808) via 9: d_path = 7900.12\n", "optiwindnet.pathfinding: <20> new keeper for (26, -9223372036854775808) via 9: d_path = 7900.12\n", "{20} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {20} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[76]: advancer id <25>\n", "optiwindnet.pathfinding: _find_paths[76]: advancer id <25>\n", "<25> LEFT _new(26) _nearside(8) _farside(9) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]\n", "optiwindnet.pathfinding: <25> LEFT _new(26) _nearside(8) _farside(9) _apex(15), _wedge_end: 19 9, _funnel: [8, 9]\n", "<25> ultrafar\n", "optiwindnet.pathfinding: <25> ultrafar\n", "_find_paths[77]: advancer id <25>\n", "optiwindnet.pathfinding: _find_paths[77]: advancer id <25>\n", "<25> RIGHT _new(17) _nearside(9) _farside(26) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]\n", "optiwindnet.pathfinding: <25> RIGHT _new(17) _nearside(9) _farside(26) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]\n", "<25> inside\n", "optiwindnet.pathfinding: <25> inside\n", "_find_paths[78]: advancer id <26>\n", "optiwindnet.pathfinding: _find_paths[78]: advancer id <26>\n", "<26> LEFT _new(17) _nearside(26) _farside(9) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]\n", "optiwindnet.pathfinding: <26> LEFT _new(17) _nearside(26) _farside(9) _apex(9), _wedge_end: 26 9, _funnel: [26, 9]\n", "<26> inside\n", "optiwindnet.pathfinding: <26> inside\n", "_find_paths[79]: advancer id <14>\n", "optiwindnet.pathfinding: _find_paths[79]: advancer id <14>\n", "pseudoedge «1->3» added\n", "optiwindnet.pathfinding: pseudoedge «1->3» added\n", "<14> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <14> RIGHT _new(12) _nearside(1) _farside(27) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "<14> infranear\n", "optiwindnet.pathfinding: <14> infranear\n", "_find_paths[80]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[80]: advancer id <15>\n", "<15> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]\n", "optiwindnet.pathfinding: <15> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]\n", "<15> inside\n", "optiwindnet.pathfinding: <15> inside\n", "_find_paths[81]: advancer id <27>\n", "optiwindnet.pathfinding: _find_paths[81]: advancer id <27>\n", "<27> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "optiwindnet.pathfinding: <27> LEFT _new(12) _nearside(27) _farside(1) _apex(3), _wedge_end: 27 1, _funnel: [27, 1]\n", "<27> ultrafar\n", "optiwindnet.pathfinding: <27> ultrafar\n", "_find_paths[82]: advancer id <17>\n", "optiwindnet.pathfinding: _find_paths[82]: advancer id <17>\n", "pseudoedge «12->1» added\n", "optiwindnet.pathfinding: pseudoedge «12->1» added\n", "{17} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {17} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[83]: advancer id <19>\n", "optiwindnet.pathfinding: _find_paths[83]: advancer id <19>\n", "<19> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "optiwindnet.pathfinding: <19> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "<19> inside\n", "optiwindnet.pathfinding: <19> inside\n", "_find_paths[84]: advancer id <19>\n", "optiwindnet.pathfinding: _find_paths[84]: advancer id <19>\n", "pseudoedge «0->1» added\n", "optiwindnet.pathfinding: pseudoedge «0->1» added\n", "<19> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <19> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "<19> infranear\n", "optiwindnet.pathfinding: <19> infranear\n", "_find_paths[85]: advancer id <28>\n", "optiwindnet.pathfinding: _find_paths[85]: advancer id <28>\n", "<28> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <28> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "<28> ultrafar\n", "optiwindnet.pathfinding: <28> ultrafar\n", "_find_paths[86]: advancer id <2>\n", "optiwindnet.pathfinding: _find_paths[86]: advancer id <2>\n", "pseudoedge «3->4» added\n", "optiwindnet.pathfinding: pseudoedge «3->4» added\n", "<2> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "optiwindnet.pathfinding: <2> RIGHT _new(28) _nearside(5) _farside(14) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "<2> infranear\n", "optiwindnet.pathfinding: <2> infranear\n", "_find_paths[87]: advancer id <2>\n", "optiwindnet.pathfinding: _find_paths[87]: advancer id <2>\n", "pseudoedge «28->5» added\n", "optiwindnet.pathfinding: pseudoedge «28->5» added\n", "{2} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {2} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[88]: advancer id <29>\n", "optiwindnet.pathfinding: _find_paths[88]: advancer id <29>\n", "<29> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "optiwindnet.pathfinding: <29> LEFT _new(28) _nearside(14) _farside(5) _apex(-1), _wedge_end: 14 3, _funnel: [14, 5]\n", "<29> ultrafar\n", "optiwindnet.pathfinding: <29> ultrafar\n", "_find_paths[89]: advancer id <29>\n", "optiwindnet.pathfinding: _find_paths[89]: advancer id <29>\n", "<29> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]\n", "optiwindnet.pathfinding: <29> LEFT _new(27) _nearside(28) _farside(4) _apex(5), _wedge_end: 28 3, _funnel: [28, 4]\n", "<29> ultrafar\n", "optiwindnet.pathfinding: <29> ultrafar\n", "_find_paths[90]: advancer id <29>\n", "optiwindnet.pathfinding: _find_paths[90]: advancer id <29>\n", "pseudoedge «27->3» added\n", "optiwindnet.pathfinding: pseudoedge «27->3» added\n", "<29> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "optiwindnet.pathfinding: <29> RIGHT _new(1) _nearside(3) _farside(27) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "<29> inside\n", "optiwindnet.pathfinding: <29> inside\n", "_find_paths[91]: advancer id <30>\n", "optiwindnet.pathfinding: _find_paths[91]: advancer id <30>\n", "<30> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "optiwindnet.pathfinding: <30> LEFT _new(1) _nearside(27) _farside(3) _apex(3), _wedge_end: 27 3, _funnel: [27, 3]\n", "<30> inside\n", "optiwindnet.pathfinding: <30> inside\n", "_find_paths[92]: advancer id <7>\n", "optiwindnet.pathfinding: _find_paths[92]: advancer id <7>\n", "pseudoedge «9->11» added\n", "optiwindnet.pathfinding: pseudoedge «9->11» added\n", "<7> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]\n", "optiwindnet.pathfinding: <7> RIGHT _new(10) _nearside(9) _farside(11) _apex(11), _wedge_end: 11 9, _funnel: [11, 9]\n", "<7> inside\n", "optiwindnet.pathfinding: <7> inside\n", "pseudoedge «10->11» added\n", "optiwindnet.pathfinding: pseudoedge «10->11» added\n", "{7} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {7} advancer reached DEAD-END (not portals)\n", "_find_paths[93]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[93]: advancer id <11>\n", "<11> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <11> RIGHT _new(26) _nearside(17) _farside(11) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "<11> ultrafar\n", "optiwindnet.pathfinding: <11> ultrafar\n", "_find_paths[94]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[94]: advancer id <11>\n", "pseudoedge «26->11» added\n", "optiwindnet.pathfinding: pseudoedge «26->11» added\n", "<11> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "optiwindnet.pathfinding: <11> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<11> ultrafar\n", "optiwindnet.pathfinding: <11> ultrafar\n", "_find_paths[95]: advancer id <31>\n", "optiwindnet.pathfinding: _find_paths[95]: advancer id <31>\n", "<31> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <31> LEFT _new(26) _nearside(11) _farside(17) _apex(16), _wedge_end: 9 17, _funnel: [11, 17]\n", "<31> infranear\n", "optiwindnet.pathfinding: <31> infranear\n", "_find_paths[96]: advancer id <31>\n", "optiwindnet.pathfinding: _find_paths[96]: advancer id <31>\n", "{31} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {31} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[97]: advancer id <32>\n", "optiwindnet.pathfinding: _find_paths[97]: advancer id <32>\n", "<32> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "optiwindnet.pathfinding: <32> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<32> infranear\n", "optiwindnet.pathfinding: <32> infranear\n", "_find_paths[98]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[98]: advancer id <15>\n", "pseudoedge «2->3» added\n", "optiwindnet.pathfinding: pseudoedge «2->3» added\n", "<15> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <15> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "<15> inside\n", "optiwindnet.pathfinding: <15> inside\n", "_find_paths[99]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[99]: advancer id <15>\n", "pseudoedge «23->3» added\n", "optiwindnet.pathfinding: pseudoedge «23->3» added\n", "<15> RIGHT _new(22) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 23, _funnel: [2, 23]\n", "optiwindnet.pathfinding: <15> RIGHT _new(22) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 23, _funnel: [2, 23]\n", "<15> infranear\n", "optiwindnet.pathfinding: <15> infranear\n", "_find_paths[100]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[100]: advancer id <15>\n", "pseudoedge «22->23» added\n", "optiwindnet.pathfinding: pseudoedge «22->23» added\n", "<15> RIGHT _new(25) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 22, _funnel: [2, 23]\n", "optiwindnet.pathfinding: <15> RIGHT _new(25) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 22, _funnel: [2, 23]\n", "<15> infranear\n", "optiwindnet.pathfinding: <15> infranear\n", "_find_paths[101]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[101]: advancer id <33>\n", "<33> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <33> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "<33> inside\n", "optiwindnet.pathfinding: <33> inside\n", "_find_paths[102]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[102]: advancer id <33>\n", "<33> LEFT _new(24) _nearside(23) _farside(3) _apex(3), _wedge_end: 23 3, _funnel: [23, 3]\n", "optiwindnet.pathfinding: <33> LEFT _new(24) _nearside(23) _farside(3) _apex(3), _wedge_end: 23 3, _funnel: [23, 3]\n", "<33> inside\n", "optiwindnet.pathfinding: <33> inside\n", "_find_paths[103]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[103]: advancer id <33>\n", "pseudoedge «24->3» added\n", "optiwindnet.pathfinding: pseudoedge «24->3» added\n", "<33> LEFT _new(25) _nearside(24) _farside(3) _apex(3), _wedge_end: 24 3, _funnel: [24, 3]\n", "optiwindnet.pathfinding: <33> LEFT _new(25) _nearside(24) _farside(3) _apex(3), _wedge_end: 24 3, _funnel: [24, 3]\n", "<33> inside\n", "optiwindnet.pathfinding: <33> inside\n", "_find_paths[104]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[104]: advancer id <33>\n", "pseudoedge «25->3» added\n", "optiwindnet.pathfinding: pseudoedge «25->3» added\n", "<33> RIGHT _new(4) _nearside(3) _farside(25) _apex(3), _wedge_end: 25 3, _funnel: [25, 3]\n", "optiwindnet.pathfinding: <33> RIGHT _new(4) _nearside(3) _farside(25) _apex(3), _wedge_end: 25 3, _funnel: [25, 3]\n", "<33> inside\n", "optiwindnet.pathfinding: <33> inside\n", "_find_paths[105]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[105]: advancer id <33>\n", "pseudoedge «4->3» added\n", "optiwindnet.pathfinding: pseudoedge «4->3» added\n", "<33> RIGHT _new(2) _nearside(4) _farside(25) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]\n", "optiwindnet.pathfinding: <33> RIGHT _new(2) _nearside(4) _farside(25) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]\n", "<33> ultrafar\n", "optiwindnet.pathfinding: <33> ultrafar\n", "_find_paths[106]: advancer id <34>\n", "optiwindnet.pathfinding: _find_paths[106]: advancer id <34>\n", "<34> LEFT _new(2) _nearside(25) _farside(4) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]\n", "optiwindnet.pathfinding: <34> LEFT _new(2) _nearside(25) _farside(4) _apex(3), _wedge_end: 25 4, _funnel: [25, 4]\n", "<34> infranear\n", "optiwindnet.pathfinding: <34> infranear\n", "_find_paths[107]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[107]: advancer id <24>\n", "pseudoedge «1->0» added\n", "optiwindnet.pathfinding: pseudoedge «1->0» added\n", "<24> RIGHT _new(27) _nearside(12) _farside(0) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]\n", "optiwindnet.pathfinding: <24> RIGHT _new(27) _nearside(12) _farside(0) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]\n", "<24> ultrafar\n", "optiwindnet.pathfinding: <24> ultrafar\n", "_find_paths[108]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[108]: advancer id <24>\n", "pseudoedge «27->0» added\n", "optiwindnet.pathfinding: pseudoedge «27->0» added\n", "<24> new keeper for (27, -9223372036854775808) via 0: d_path = 8243.27\n", "optiwindnet.pathfinding: <24> new keeper for (27, -9223372036854775808) via 0: d_path = 8243.27\n", "<24> RIGHT _new(3) _nearside(27) _farside(1) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "optiwindnet.pathfinding: <24> RIGHT _new(3) _nearside(27) _farside(1) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "<24> ultrafar\n", "optiwindnet.pathfinding: <24> ultrafar\n", "_find_paths[109]: advancer id <35>\n", "optiwindnet.pathfinding: _find_paths[109]: advancer id <35>\n", "<35> LEFT _new(27) _nearside(0) _farside(12) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]\n", "optiwindnet.pathfinding: <35> LEFT _new(27) _nearside(0) _farside(12) _apex(-1), _wedge_end: 1 12, _funnel: [0, 12]\n", "<35> infranear\n", "optiwindnet.pathfinding: <35> infranear\n", "_find_paths[110]: advancer id <35>\n", "optiwindnet.pathfinding: _find_paths[110]: advancer id <35>\n", "{35} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {35} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[111]: advancer id <36>\n", "optiwindnet.pathfinding: _find_paths[111]: advancer id <36>\n", "<36> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "optiwindnet.pathfinding: <36> LEFT _new(3) _nearside(1) _farside(27) _apex(0), _wedge_end: 1 27, _funnel: [1, 27]\n", "<36> infranear\n", "optiwindnet.pathfinding: <36> infranear\n", "_find_paths[112]: advancer id <15>\n", "optiwindnet.pathfinding: _find_paths[112]: advancer id <15>\n", "pseudoedge «25->22» added\n", "optiwindnet.pathfinding: pseudoedge «25->22» added\n", "<15> RIGHT _new(4) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]\n", "optiwindnet.pathfinding: <15> RIGHT _new(4) _nearside(23) _farside(2) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]\n", "<15> infranear\n", "optiwindnet.pathfinding: <15> infranear\n", "_find_paths[113]: advancer id <37>\n", "optiwindnet.pathfinding: _find_paths[113]: advancer id <37>\n", "<37> LEFT _new(4) _nearside(2) _farside(23) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]\n", "optiwindnet.pathfinding: <37> LEFT _new(4) _nearside(2) _farside(23) _apex(3), _wedge_end: 2 25, _funnel: [2, 23]\n", "<37> ultrafar\n", "optiwindnet.pathfinding: <37> ultrafar\n", "_find_paths[114]: advancer id <21>\n", "optiwindnet.pathfinding: _find_paths[114]: advancer id <21>\n", "pseudoedge «12->1» added\n", "optiwindnet.pathfinding: pseudoedge «12->1» added\n", "{21} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {21} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[115]: advancer id <23>\n", "optiwindnet.pathfinding: _find_paths[115]: advancer id <23>\n", "<23> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "optiwindnet.pathfinding: <23> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "<23> inside\n", "optiwindnet.pathfinding: <23> inside\n", "_find_paths[116]: advancer id <23>\n", "optiwindnet.pathfinding: _find_paths[116]: advancer id <23>\n", "pseudoedge «0->1» added\n", "optiwindnet.pathfinding: pseudoedge «0->1» added\n", "<23> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <23> RIGHT _new(2) _nearside(0) _farside(12) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "<23> infranear\n", "optiwindnet.pathfinding: <23> infranear\n", "_find_paths[117]: advancer id <38>\n", "optiwindnet.pathfinding: _find_paths[117]: advancer id <38>\n", "<38> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <38> LEFT _new(2) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 0, _funnel: [12, 0]\n", "<38> ultrafar\n", "optiwindnet.pathfinding: <38> ultrafar\n", "_find_paths[118]: advancer id <0>\n", "optiwindnet.pathfinding: _find_paths[118]: advancer id <0>\n", "pseudoedge «9->7» added\n", "optiwindnet.pathfinding: pseudoedge «9->7» added\n", "<0> RIGHT _new(26) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]\n", "optiwindnet.pathfinding: <0> RIGHT _new(26) _nearside(7) _farside(19) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]\n", "<0> infranear\n", "optiwindnet.pathfinding: <0> infranear\n", "_find_paths[119]: advancer id <0>\n", "optiwindnet.pathfinding: _find_paths[119]: advancer id <0>\n", "pseudoedge «26->7» added\n", "optiwindnet.pathfinding: pseudoedge «26->7» added\n", "{0} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {0} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[120]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[120]: advancer id <12>\n", "<12> RIGHT _new(8) _nearside(7) _farside(9) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]\n", "optiwindnet.pathfinding: <12> RIGHT _new(8) _nearside(7) _farside(9) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]\n", "<12> inside\n", "optiwindnet.pathfinding: <12> inside\n", "_find_paths[121]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[121]: advancer id <12>\n", "pseudoedge «8->7» added\n", "optiwindnet.pathfinding: pseudoedge «8->7» added\n", "<12> LEFT _new(10) _nearside(9) _farside(8) _apex(7), _wedge_end: 9 8, _funnel: [9, 8]\n", "optiwindnet.pathfinding: <12> LEFT _new(10) _nearside(9) _farside(8) _apex(7), _wedge_end: 9 8, _funnel: [9, 8]\n", "<12> ultrafar\n", "optiwindnet.pathfinding: <12> ultrafar\n", "_find_paths[122]: advancer id <39>\n", "optiwindnet.pathfinding: _find_paths[122]: advancer id <39>\n", "<39> LEFT _new(26) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]\n", "optiwindnet.pathfinding: <39> LEFT _new(26) _nearside(19) _farside(7) _apex(-1), _wedge_end: 19 9, _funnel: [19, 7]\n", "<39> ultrafar\n", "optiwindnet.pathfinding: <39> ultrafar\n", "_find_paths[123]: advancer id <39>\n", "optiwindnet.pathfinding: _find_paths[123]: advancer id <39>\n", "<39> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]\n", "optiwindnet.pathfinding: <39> RIGHT _new(17) _nearside(9) _farside(26) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]\n", "<39> infranear\n", "optiwindnet.pathfinding: <39> infranear\n", "_find_paths[124]: advancer id <40>\n", "optiwindnet.pathfinding: _find_paths[124]: advancer id <40>\n", "<40> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]\n", "optiwindnet.pathfinding: <40> LEFT _new(8) _nearside(9) _farside(7) _apex(7), _wedge_end: 9 7, _funnel: [9, 7]\n", "<40> inside\n", "optiwindnet.pathfinding: <40> inside\n", "_find_paths[125]: advancer id <40>\n", "optiwindnet.pathfinding: _find_paths[125]: advancer id <40>\n", "<40> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]\n", "optiwindnet.pathfinding: <40> RIGHT _new(6) _nearside(7) _farside(8) _apex(7), _wedge_end: 8 7, _funnel: [8, 7]\n", "<40> inside\n", "optiwindnet.pathfinding: <40> inside\n", "pseudoedge «6->7» added\n", "optiwindnet.pathfinding: pseudoedge «6->7» added\n", "{40} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {40} advancer reached DEAD-END (not portals)\n", "_find_paths[126]: advancer id <41>\n", "optiwindnet.pathfinding: _find_paths[126]: advancer id <41>\n", "<41> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]\n", "optiwindnet.pathfinding: <41> LEFT _new(17) _nearside(26) _farside(9) _apex(7), _wedge_end: 26 9, _funnel: [26, 9]\n", "<41> ultrafar\n", "optiwindnet.pathfinding: <41> ultrafar\n", "_find_paths[127]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[127]: advancer id <12>\n", "pseudoedge «10->8» added\n", "optiwindnet.pathfinding: pseudoedge «10->8» added\n", "<12> RIGHT _new(6) _nearside(8) _farside(10) _apex(8), _wedge_end: 10 8, _funnel: [10, 8]\n", "optiwindnet.pathfinding: <12> RIGHT _new(6) _nearside(8) _farside(10) _apex(8), _wedge_end: 10 8, _funnel: [10, 8]\n", "<12> inside\n", "optiwindnet.pathfinding: <12> inside\n", "_find_paths[128]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[128]: advancer id <12>\n", "pseudoedge «6->8» added\n", "optiwindnet.pathfinding: pseudoedge «6->8» added\n", "<12> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]\n", "optiwindnet.pathfinding: <12> LEFT _new(11) _nearside(10) _farside(6) _apex(8), _wedge_end: 10 6, _funnel: [10, 6]\n", "<12> inside\n", "optiwindnet.pathfinding: <12> inside\n", "_find_paths[129]: advancer id <37>\n", "optiwindnet.pathfinding: _find_paths[129]: advancer id <37>\n", "pseudoedge «4->22» added\n", "optiwindnet.pathfinding: pseudoedge «4->22» added\n", "<37> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]\n", "optiwindnet.pathfinding: <37> LEFT _new(3) _nearside(4) _farside(25) _apex(22), _wedge_end: 4 25, _funnel: [4, 25]\n", "<37> ultrafar\n", "optiwindnet.pathfinding: <37> ultrafar\n", "_find_paths[130]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[130]: advancer id <33>\n", "pseudoedge «2->25» added\n", "optiwindnet.pathfinding: pseudoedge «2->25» added\n", "<33> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]\n", "optiwindnet.pathfinding: <33> LEFT _new(22) _nearside(25) _farside(2) _apex(25), _wedge_end: 25 2, _funnel: [25, 2]\n", "<33> inside\n", "optiwindnet.pathfinding: <33> inside\n", "_find_paths[131]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[131]: advancer id <33>\n", "pseudoedge «22->25» added\n", "optiwindnet.pathfinding: pseudoedge «22->25» added\n", "<33> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]\n", "optiwindnet.pathfinding: <33> LEFT _new(23) _nearside(22) _farside(2) _apex(25), _wedge_end: 22 2, _funnel: [22, 2]\n", "<33> infranear\n", "optiwindnet.pathfinding: <33> infranear\n", "_find_paths[132]: advancer id <33>\n", "optiwindnet.pathfinding: _find_paths[132]: advancer id <33>\n", "pseudoedge «23->22» added\n", "optiwindnet.pathfinding: pseudoedge «23->22» added\n", "{33} advancer revisited triangle\n", "optiwindnet.pathfinding: {33} advancer revisited triangle\n", "_find_paths[133]: advancer id <25>\n", "optiwindnet.pathfinding: _find_paths[133]: advancer id <25>\n", "pseudoedge «17->9» added\n", "optiwindnet.pathfinding: pseudoedge «17->9» added\n", "{25} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {25} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[134]: advancer id <26>\n", "optiwindnet.pathfinding: _find_paths[134]: advancer id <26>\n", "<26> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "optiwindnet.pathfinding: <26> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<26> inside\n", "optiwindnet.pathfinding: <26> inside\n", "_find_paths[135]: advancer id <26>\n", "optiwindnet.pathfinding: _find_paths[135]: advancer id <26>\n", "pseudoedge «11->9» added\n", "optiwindnet.pathfinding: pseudoedge «11->9» added\n", "<26> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]\n", "optiwindnet.pathfinding: <26> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]\n", "<26> ultrafar\n", "optiwindnet.pathfinding: <26> ultrafar\n", "_find_paths[136]: advancer id <42>\n", "optiwindnet.pathfinding: _find_paths[136]: advancer id <42>\n", "<42> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "optiwindnet.pathfinding: <42> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<42> inside\n", "optiwindnet.pathfinding: <42> inside\n", "_find_paths[137]: advancer id <42>\n", "optiwindnet.pathfinding: _find_paths[137]: advancer id <42>\n", "<42> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]\n", "optiwindnet.pathfinding: <42> RIGHT _new(10) _nearside(9) _farside(11) _apex(9), _wedge_end: 11 9, _funnel: [11, 9]\n", "<42> inside\n", "optiwindnet.pathfinding: <42> inside\n", "pseudoedge «10->9» added\n", "optiwindnet.pathfinding: pseudoedge «10->9» added\n", "{42} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {42} advancer reached DEAD-END (not portals)\n", "_find_paths[138]: advancer id <14>\n", "optiwindnet.pathfinding: _find_paths[138]: advancer id <14>\n", "pseudoedge «12->1» added\n", "optiwindnet.pathfinding: pseudoedge «12->1» added\n", "{14} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {14} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[139]: advancer id <27>\n", "optiwindnet.pathfinding: _find_paths[139]: advancer id <27>\n", "<27> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "optiwindnet.pathfinding: <27> RIGHT _new(0) _nearside(1) _farside(12) _apex(1), _wedge_end: 12 1, _funnel: [12, 1]\n", "<27> inside\n", "optiwindnet.pathfinding: <27> inside\n", "_find_paths[140]: advancer id <16>\n", "optiwindnet.pathfinding: _find_paths[140]: advancer id <16>\n", "pseudoedge «20->7» added\n", "optiwindnet.pathfinding: pseudoedge «20->7» added\n", "<16> new keeper for (20, -9223372036854775808) via 7: d_path = 2269.46\n", "optiwindnet.pathfinding: <16> new keeper for (20, -9223372036854775808) via 7: d_path = 2269.46\n", "<16> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "optiwindnet.pathfinding: <16> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "<16> inside\n", "optiwindnet.pathfinding: <16> inside\n", "_find_paths[141]: advancer id <19>\n", "optiwindnet.pathfinding: _find_paths[141]: advancer id <19>\n", "pseudoedge «2->0» added\n", "optiwindnet.pathfinding: pseudoedge «2->0» added\n", "<19> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <19> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]\n", "<19> ultrafar\n", "optiwindnet.pathfinding: <19> ultrafar\n", "_find_paths[142]: advancer id <28>\n", "optiwindnet.pathfinding: _find_paths[142]: advancer id <28>\n", "<28> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]\n", "optiwindnet.pathfinding: <28> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]\n", "<28> inside\n", "optiwindnet.pathfinding: <28> inside\n", "pseudoedge «1->0» added\n", "optiwindnet.pathfinding: pseudoedge «1->0» added\n", "{28} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {28} advancer reached DEAD-END (not portals)\n", "_find_paths[143]: advancer id <30>\n", "optiwindnet.pathfinding: _find_paths[143]: advancer id <30>\n", "pseudoedge «1->3» added\n", "optiwindnet.pathfinding: pseudoedge «1->3» added\n", "<30> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]\n", "optiwindnet.pathfinding: <30> LEFT _new(2) _nearside(1) _farside(3) _apex(3), _wedge_end: 1 3, _funnel: [1, 3]\n", "<30> inside\n", "optiwindnet.pathfinding: <30> inside\n", "_find_paths[144]: advancer id <37>\n", "optiwindnet.pathfinding: _find_paths[144]: advancer id <37>\n", "pseudoedge «3->25» added\n", "optiwindnet.pathfinding: pseudoedge «3->25» added\n", "<37> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]\n", "optiwindnet.pathfinding: <37> RIGHT _new(24) _nearside(25) _farside(3) _apex(25), _wedge_end: 3 25, _funnel: [3, 25]\n", "<37> inside\n", "optiwindnet.pathfinding: <37> inside\n", "_find_paths[145]: advancer id <37>\n", "optiwindnet.pathfinding: _find_paths[145]: advancer id <37>\n", "pseudoedge «24->25» added\n", "optiwindnet.pathfinding: pseudoedge «24->25» added\n", "<37> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]\n", "optiwindnet.pathfinding: <37> RIGHT _new(23) _nearside(24) _farside(3) _apex(25), _wedge_end: 3 24, _funnel: [3, 24]\n", "<37> infranear\n", "optiwindnet.pathfinding: <37> infranear\n", "_find_paths[146]: advancer id <37>\n", "optiwindnet.pathfinding: _find_paths[146]: advancer id <37>\n", "pseudoedge «23->24» added\n", "optiwindnet.pathfinding: pseudoedge «23->24» added\n", "{37} advancer revisited triangle\n", "optiwindnet.pathfinding: {37} advancer revisited triangle\n", "_find_paths[147]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[147]: advancer id <24>\n", "pseudoedge «3->1» added\n", "optiwindnet.pathfinding: pseudoedge «3->1» added\n", "<24> LEFT _new(2) _nearside(1) _farside(3) _apex(1), _wedge_end: 1 3, _funnel: [1, 3]\n", "optiwindnet.pathfinding: <24> LEFT _new(2) _nearside(1) _farside(3) _apex(1), _wedge_end: 1 3, _funnel: [1, 3]\n", "<24> inside\n", "optiwindnet.pathfinding: <24> inside\n", "_find_paths[148]: advancer id <24>\n", "optiwindnet.pathfinding: _find_paths[148]: advancer id <24>\n", "pseudoedge «2->1» added\n", "optiwindnet.pathfinding: pseudoedge «2->1» added\n", "<24> RIGHT _new(23) _nearside(3) _farside(2) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <24> RIGHT _new(23) _nearside(3) _farside(2) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]\n", "<24> inside\n", "optiwindnet.pathfinding: <24> inside\n", "_find_paths[149]: advancer id <43>\n", "optiwindnet.pathfinding: _find_paths[149]: advancer id <43>\n", "<43> LEFT _new(23) _nearside(2) _farside(3) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <43> LEFT _new(23) _nearside(2) _farside(3) _apex(1), _wedge_end: 2 3, _funnel: [2, 3]\n", "<43> inside\n", "optiwindnet.pathfinding: <43> inside\n", "_find_paths[150]: advancer id <30>\n", "optiwindnet.pathfinding: _find_paths[150]: advancer id <30>\n", "pseudoedge «2->3» added\n", "optiwindnet.pathfinding: pseudoedge «2->3» added\n", "<30> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <30> RIGHT _new(23) _nearside(3) _farside(2) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "<30> inside\n", "optiwindnet.pathfinding: <30> inside\n", "_find_paths[151]: advancer id <44>\n", "optiwindnet.pathfinding: _find_paths[151]: advancer id <44>\n", "<44> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "optiwindnet.pathfinding: <44> LEFT _new(23) _nearside(2) _farside(3) _apex(3), _wedge_end: 2 3, _funnel: [2, 3]\n", "<44> inside\n", "optiwindnet.pathfinding: <44> inside\n", "_find_paths[152]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[152]: advancer id <12>\n", "pseudoedge «11->8» added\n", "optiwindnet.pathfinding: pseudoedge «11->8» added\n", "<12> RIGHT _new(16) _nearside(6) _farside(11) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]\n", "optiwindnet.pathfinding: <12> RIGHT _new(16) _nearside(6) _farside(11) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]\n", "<12> inside\n", "optiwindnet.pathfinding: <12> inside\n", "_find_paths[153]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[153]: advancer id <12>\n", "pseudoedge «16->8» added\n", "optiwindnet.pathfinding: pseudoedge «16->8» added\n", "<12> RIGHT _new(17) _nearside(16) _farside(11) _apex(8), _wedge_end: 11 16, _funnel: [11, 16]\n", "optiwindnet.pathfinding: <12> RIGHT _new(17) _nearside(16) _farside(11) _apex(8), _wedge_end: 11 16, _funnel: [11, 16]\n", "<12> inside\n", "optiwindnet.pathfinding: <12> inside\n", "_find_paths[154]: advancer id <45>\n", "optiwindnet.pathfinding: _find_paths[154]: advancer id <45>\n", "<45> LEFT _new(16) _nearside(11) _farside(6) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]\n", "optiwindnet.pathfinding: <45> LEFT _new(16) _nearside(11) _farside(6) _apex(8), _wedge_end: 11 6, _funnel: [11, 6]\n", "<45> inside\n", "optiwindnet.pathfinding: <45> inside\n", "_find_paths[155]: advancer id <45>\n", "optiwindnet.pathfinding: _find_paths[155]: advancer id <45>\n", "<45> LEFT _new(15) _nearside(16) _farside(6) _apex(8), _wedge_end: 16 6, _funnel: [16, 6]\n", "optiwindnet.pathfinding: <45> LEFT _new(15) _nearside(16) _farside(6) _apex(8), _wedge_end: 16 6, _funnel: [16, 6]\n", "<45> inside\n", "optiwindnet.pathfinding: <45> inside\n", "_find_paths[156]: advancer id <23>\n", "optiwindnet.pathfinding: _find_paths[156]: advancer id <23>\n", "pseudoedge «2->0» added\n", "optiwindnet.pathfinding: pseudoedge «2->0» added\n", "<23> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]\n", "optiwindnet.pathfinding: <23> LEFT _new(21) _nearside(12) _farside(0) _apex(1), _wedge_end: 12 2, _funnel: [12, 0]\n", "<23> ultrafar\n", "optiwindnet.pathfinding: <23> ultrafar\n", "_find_paths[157]: advancer id <38>\n", "optiwindnet.pathfinding: _find_paths[157]: advancer id <38>\n", "<38> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]\n", "optiwindnet.pathfinding: <38> RIGHT _new(1) _nearside(0) _farside(2) _apex(0), _wedge_end: 2 0, _funnel: [2, 0]\n", "<38> inside\n", "optiwindnet.pathfinding: <38> inside\n", "pseudoedge «1->0» added\n", "optiwindnet.pathfinding: pseudoedge «1->0» added\n", "{38} advancer reached DEAD-END (not portals)\n", "optiwindnet.pathfinding: {38} advancer reached DEAD-END (not portals)\n", "_find_paths[158]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[158]: advancer id <4>\n", "pseudoedge «14->3» added\n", "optiwindnet.pathfinding: pseudoedge «14->3» added\n", "<4> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]\n", "optiwindnet.pathfinding: <4> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]\n", "<4> inside\n", "optiwindnet.pathfinding: <4> inside\n", "_find_paths[159]: advancer id <4>\n", "optiwindnet.pathfinding: _find_paths[159]: advancer id <4>\n", "pseudoedge «4->3» added\n", "optiwindnet.pathfinding: pseudoedge «4->3» added\n", "<4> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "optiwindnet.pathfinding: <4> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "<4> ultrafar\n", "optiwindnet.pathfinding: <4> ultrafar\n", "_find_paths[160]: advancer id <46>\n", "optiwindnet.pathfinding: _find_paths[160]: advancer id <46>\n", "<46> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "optiwindnet.pathfinding: <46> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "<46> infranear\n", "optiwindnet.pathfinding: <46> infranear\n", "_find_paths[161]: advancer id <46>\n", "optiwindnet.pathfinding: _find_paths[161]: advancer id <46>\n", "pseudoedge «5->4» added\n", "optiwindnet.pathfinding: pseudoedge «5->4» added\n", "<46> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]\n", "optiwindnet.pathfinding: <46> RIGHT _new(15) _nearside(14) _farside(4) _apex(3), _wedge_end: 5 14, _funnel: [4, 14]\n", "<46> ultrafar\n", "optiwindnet.pathfinding: <46> ultrafar\n", "_find_paths[162]: advancer id <22>\n", "optiwindnet.pathfinding: _find_paths[162]: advancer id <22>\n", "{22} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {22} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[163]: advancer id <12>\n", "optiwindnet.pathfinding: _find_paths[163]: advancer id <12>\n", "pseudoedge «17->8» added\n", "optiwindnet.pathfinding: pseudoedge «17->8» added\n", "<12> RIGHT _new(9) _nearside(17) _farside(11) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <12> RIGHT _new(9) _nearside(17) _farside(11) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]\n", "<12> ultrafar\n", "optiwindnet.pathfinding: <12> ultrafar\n", "_find_paths[164]: advancer id <47>\n", "optiwindnet.pathfinding: _find_paths[164]: advancer id <47>\n", "<47> LEFT _new(9) _nearside(11) _farside(17) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <47> LEFT _new(9) _nearside(11) _farside(17) _apex(8), _wedge_end: 11 17, _funnel: [11, 17]\n", "<47> infranear\n", "optiwindnet.pathfinding: <47> infranear\n", "_find_paths[165]: advancer id <26>\n", "optiwindnet.pathfinding: _find_paths[165]: advancer id <26>\n", "pseudoedge «16->11» added\n", "optiwindnet.pathfinding: pseudoedge «16->11» added\n", "{26} advancer revisited triangle\n", "optiwindnet.pathfinding: {26} advancer revisited triangle\n", "_find_paths[166]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[166]: advancer id <10>\n", "pseudoedge «14->3» added\n", "optiwindnet.pathfinding: pseudoedge «14->3» added\n", "<10> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]\n", "optiwindnet.pathfinding: <10> LEFT _new(4) _nearside(3) _farside(14) _apex(3), _wedge_end: 3 14, _funnel: [3, 14]\n", "<10> inside\n", "optiwindnet.pathfinding: <10> inside\n", "_find_paths[167]: advancer id <10>\n", "optiwindnet.pathfinding: _find_paths[167]: advancer id <10>\n", "pseudoedge «4->3» added\n", "optiwindnet.pathfinding: pseudoedge «4->3» added\n", "<10> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "optiwindnet.pathfinding: <10> RIGHT _new(5) _nearside(14) _farside(4) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "<10> ultrafar\n", "optiwindnet.pathfinding: <10> ultrafar\n", "_find_paths[168]: advancer id <48>\n", "optiwindnet.pathfinding: _find_paths[168]: advancer id <48>\n", "<48> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "optiwindnet.pathfinding: <48> LEFT _new(5) _nearside(4) _farside(14) _apex(3), _wedge_end: 4 14, _funnel: [4, 14]\n", "<48> infranear\n", "optiwindnet.pathfinding: <48> infranear\n", "_find_paths[169]: advancer id <18>\n", "optiwindnet.pathfinding: _find_paths[169]: advancer id <18>\n", "{18} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {18} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[170]: advancer id <19>\n", "optiwindnet.pathfinding: _find_paths[170]: advancer id <19>\n", "pseudoedge «21->0» added\n", "optiwindnet.pathfinding: pseudoedge «21->0» added\n", "<19> new keeper for (21, -9223372036854775808) via 0: d_path = 2839.14\n", "optiwindnet.pathfinding: <19> new keeper for (21, -9223372036854775808) via 0: d_path = 2839.14\n", "{19} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {19} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[171]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[171]: advancer id <11>\n", "pseudoedge «19->9» added\n", "optiwindnet.pathfinding: pseudoedge «19->9» added\n", "<11> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "optiwindnet.pathfinding: <11> RIGHT _new(7) _nearside(19) _farside(9) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "<11> inside\n", "optiwindnet.pathfinding: <11> inside\n", "_find_paths[172]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[172]: advancer id <11>\n", "pseudoedge «7->9» added\n", "optiwindnet.pathfinding: pseudoedge «7->9» added\n", "<11> RIGHT _new(8) _nearside(7) _farside(9) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]\n", "optiwindnet.pathfinding: <11> RIGHT _new(8) _nearside(7) _farside(9) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]\n", "<11> inside\n", "optiwindnet.pathfinding: <11> inside\n", "_find_paths[173]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[173]: advancer id <11>\n", "pseudoedge «8->9» added\n", "optiwindnet.pathfinding: pseudoedge «8->9» added\n", "<11> LEFT _new(10) _nearside(9) _farside(8) _apex(9), _wedge_end: 9 8, _funnel: [9, 8]\n", "optiwindnet.pathfinding: <11> LEFT _new(10) _nearside(9) _farside(8) _apex(9), _wedge_end: 9 8, _funnel: [9, 8]\n", "<11> inside\n", "optiwindnet.pathfinding: <11> inside\n", "_find_paths[174]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[174]: advancer id <11>\n", "pseudoedge «10->9» added\n", "optiwindnet.pathfinding: pseudoedge «10->9» added\n", "<11> RIGHT _new(6) _nearside(8) _farside(10) _apex(9), _wedge_end: 10 8, _funnel: [10, 8]\n", "optiwindnet.pathfinding: <11> RIGHT _new(6) _nearside(8) _farside(10) _apex(9), _wedge_end: 10 8, _funnel: [10, 8]\n", "<11> inside\n", "optiwindnet.pathfinding: <11> inside\n", "_find_paths[175]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[175]: advancer id <11>\n", "pseudoedge «6->9» added\n", "optiwindnet.pathfinding: pseudoedge «6->9» added\n", "<11> LEFT _new(11) _nearside(10) _farside(6) _apex(9), _wedge_end: 10 6, _funnel: [10, 6]\n", "optiwindnet.pathfinding: <11> LEFT _new(11) _nearside(10) _farside(6) _apex(9), _wedge_end: 10 6, _funnel: [10, 6]\n", "<11> infranear\n", "optiwindnet.pathfinding: <11> infranear\n", "_find_paths[176]: advancer id <11>\n", "optiwindnet.pathfinding: _find_paths[176]: advancer id <11>\n", "pseudoedge «11->10» added\n", "optiwindnet.pathfinding: pseudoedge «11->10» added\n", "{11} advancer revisited triangle\n", "optiwindnet.pathfinding: {11} advancer revisited triangle\n", "_find_paths[177]: advancer id <50>\n", "optiwindnet.pathfinding: _find_paths[177]: advancer id <50>\n", "<50> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]\n", "optiwindnet.pathfinding: <50> LEFT _new(8) _nearside(9) _farside(7) _apex(9), _wedge_end: 9 7, _funnel: [9, 7]\n", "<50> inside\n", "optiwindnet.pathfinding: <50> inside\n", "_find_paths[178]: advancer id <32>\n", "optiwindnet.pathfinding: _find_paths[178]: advancer id <32>\n", "{32} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {32} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[179]: advancer id <49>\n", "optiwindnet.pathfinding: _find_paths[179]: advancer id <49>\n", "<49> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "optiwindnet.pathfinding: <49> LEFT _new(7) _nearside(9) _farside(19) _apex(9), _wedge_end: 9 19, _funnel: [9, 19]\n", "<49> inside\n", "optiwindnet.pathfinding: <49> inside\n", "_find_paths[180]: advancer id <49>\n", "optiwindnet.pathfinding: _find_paths[180]: advancer id <49>\n", "<49> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]\n", "optiwindnet.pathfinding: <49> RIGHT _new(20) _nearside(19) _farside(7) _apex(9), _wedge_end: 7 19, _funnel: [7, 19]\n", "<49> ultrafar\n", "optiwindnet.pathfinding: <49> ultrafar\n", "_find_paths[181]: advancer id <23>\n", "optiwindnet.pathfinding: _find_paths[181]: advancer id <23>\n", "pseudoedge «21->0» added\n", "optiwindnet.pathfinding: pseudoedge «21->0» added\n", "{23} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {23} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[182]: advancer id <39>\n", "optiwindnet.pathfinding: _find_paths[182]: advancer id <39>\n", "pseudoedge «17->9» added\n", "optiwindnet.pathfinding: pseudoedge «17->9» added\n", "{39} advancer reached DEAD-END (root or mesh edge)\n", "optiwindnet.pathfinding: {39} advancer reached DEAD-END (root or mesh edge)\n", "_find_paths[183]: advancer id <41>\n", "optiwindnet.pathfinding: _find_paths[183]: advancer id <41>\n", "<41> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "optiwindnet.pathfinding: <41> RIGHT _new(11) _nearside(9) _farside(17) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<41> inside\n", "optiwindnet.pathfinding: <41> inside\n", "_find_paths[184]: advancer id <41>\n", "optiwindnet.pathfinding: _find_paths[184]: advancer id <41>\n", "pseudoedge «11->9» added\n", "optiwindnet.pathfinding: pseudoedge «11->9» added\n", "<41> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]\n", "optiwindnet.pathfinding: <41> LEFT _new(16) _nearside(17) _farside(11) _apex(9), _wedge_end: 17 11, _funnel: [17, 11]\n", "<41> ultrafar\n", "optiwindnet.pathfinding: <41> ultrafar\n", "_find_paths[185]: advancer id <51>\n", "optiwindnet.pathfinding: _find_paths[185]: advancer id <51>\n", "<51> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "optiwindnet.pathfinding: <51> LEFT _new(11) _nearside(17) _farside(9) _apex(9), _wedge_end: 17 9, _funnel: [17, 9]\n", "<51> inside\n", "optiwindnet.pathfinding: <51> inside\n", "_find_paths[186]: advancer id <47>\n", "optiwindnet.pathfinding: _find_paths[186]: advancer id <47>\n", "pseudoedge «9->11» added\n", "optiwindnet.pathfinding: pseudoedge «9->11» added\n", "<47> RIGHT _new(26) _nearside(17) _farside(11) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <47> RIGHT _new(26) _nearside(17) _farside(11) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]\n", "<47> ultrafar\n", "optiwindnet.pathfinding: <47> ultrafar\n", "_find_paths[187]: advancer id <47>\n", "optiwindnet.pathfinding: _find_paths[187]: advancer id <47>\n", "pseudoedge «26->11» added\n", "optiwindnet.pathfinding: pseudoedge «26->11» added\n", "<47> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "optiwindnet.pathfinding: <47> RIGHT _new(19) _nearside(26) _farside(9) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<47> ultrafar\n", "optiwindnet.pathfinding: <47> ultrafar\n", "_find_paths[188]: advancer id <52>\n", "optiwindnet.pathfinding: _find_paths[188]: advancer id <52>\n", "<52> LEFT _new(26) _nearside(11) _farside(17) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]\n", "optiwindnet.pathfinding: <52> LEFT _new(26) _nearside(11) _farside(17) _apex(8), _wedge_end: 9 17, _funnel: [11, 17]\n", "<52> infranear\n", "optiwindnet.pathfinding: <52> infranear\n", "_find_paths[189]: advancer id <53>\n", "optiwindnet.pathfinding: _find_paths[189]: advancer id <53>\n", "<53> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "optiwindnet.pathfinding: <53> LEFT _new(19) _nearside(9) _farside(26) _apex(11), _wedge_end: 9 26, _funnel: [9, 26]\n", "<53> infranear\n", "optiwindnet.pathfinding: <53> infranear\n", "_find_paths[190]: advancer id <41>\n", "optiwindnet.pathfinding: _find_paths[190]: advancer id <41>\n", "pseudoedge «16->11» added\n", "optiwindnet.pathfinding: pseudoedge «16->11» added\n", "<41> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]\n", "optiwindnet.pathfinding: <41> RIGHT _new(6) _nearside(11) _farside(16) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]\n", "<41> inside\n", "optiwindnet.pathfinding: <41> inside\n", "_find_paths[191]: advancer id <54>\n", "optiwindnet.pathfinding: _find_paths[191]: advancer id <54>\n", "<54> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]\n", "optiwindnet.pathfinding: <54> LEFT _new(6) _nearside(16) _farside(11) _apex(11), _wedge_end: 16 11, _funnel: [16, 11]\n", "<54> inside\n", "optiwindnet.pathfinding: <54> inside\n", "_find_paths[192]: advancer id <49>\n", "optiwindnet.pathfinding: _find_paths[192]: advancer id <49>\n", "pseudoedge «20->7» added\n", "optiwindnet.pathfinding: pseudoedge «20->7» added\n", "<49> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "optiwindnet.pathfinding: <49> LEFT _new(6) _nearside(7) _farside(20) _apex(7), _wedge_end: 7 20, _funnel: [7, 20]\n", "<49> inside\n", "optiwindnet.pathfinding: <49> inside\n", "_find_paths[193]: advancer id <41>\n", "optiwindnet.pathfinding: _find_paths[193]: advancer id <41>\n", "pseudoedge «6->11» added\n", "optiwindnet.pathfinding: pseudoedge «6->11» added\n", "<41> LEFT _new(15) _nearside(16) _farside(6) _apex(11), _wedge_end: 16 6, _funnel: [16, 6]\n", "optiwindnet.pathfinding: <41> LEFT _new(15) _nearside(16) _farside(6) _apex(11), _wedge_end: 16 6, _funnel: [16, 6]\n", "<41> infranear\n", "optiwindnet.pathfinding: <41> infranear\n", "_find_paths[194]: advancer id <54>\n", "optiwindnet.pathfinding: _find_paths[194]: advancer id <54>\n", "<54> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]\n", "optiwindnet.pathfinding: <54> RIGHT _new(10) _nearside(11) _farside(6) _apex(11), _wedge_end: 6 11, _funnel: [6, 11]\n", "<54> inside\n", "optiwindnet.pathfinding: <54> inside\n", "_find_paths[195]: advancer id <54>\n", "optiwindnet.pathfinding: _find_paths[195]: advancer id <54>\n", "pseudoedge «10->11» added\n", "optiwindnet.pathfinding: pseudoedge «10->11» added\n", "<54> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]\n", "optiwindnet.pathfinding: <54> LEFT _new(8) _nearside(6) _farside(10) _apex(11), _wedge_end: 6 10, _funnel: [6, 10]\n", "<54> inside\n", "optiwindnet.pathfinding: <54> inside\n", "_find_paths[196]: advancer id <54>\n", "optiwindnet.pathfinding: _find_paths[196]: advancer id <54>\n", "pseudoedge «8->11» added\n", "optiwindnet.pathfinding: pseudoedge «8->11» added\n", "<54> RIGHT _new(9) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 10, _funnel: [8, 10]\n", "optiwindnet.pathfinding: <54> RIGHT _new(9) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 10, _funnel: [8, 10]\n", "<54> infranear\n", "optiwindnet.pathfinding: <54> infranear\n", "_find_paths[197]: advancer id <54>\n", "optiwindnet.pathfinding: _find_paths[197]: advancer id <54>\n", "pseudoedge «9->10» added\n", "optiwindnet.pathfinding: pseudoedge «9->10» added\n", "<54> RIGHT _new(7) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]\n", "optiwindnet.pathfinding: <54> RIGHT _new(7) _nearside(10) _farside(8) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]\n", "<54> ultrafar\n", "optiwindnet.pathfinding: <54> ultrafar\n", "_find_paths[198]: advancer id <55>\n", "optiwindnet.pathfinding: _find_paths[198]: advancer id <55>\n", "<55> LEFT _new(7) _nearside(8) _farside(10) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]\n", "optiwindnet.pathfinding: <55> LEFT _new(7) _nearside(8) _farside(10) _apex(11), _wedge_end: 8 9, _funnel: [8, 10]\n", "<55> infranear\n", "optiwindnet.pathfinding: <55> infranear\n", "_find_paths[199]: advancer id <55>\n", "optiwindnet.pathfinding: _find_paths[199]: advancer id <55>\n", "pseudoedge «7->8» added\n", "optiwindnet.pathfinding: pseudoedge «7->8» added\n", "{55} advancer revisited triangle\n", "optiwindnet.pathfinding: {55} advancer revisited triangle\n", "_find_paths[200]: advancer id <47>\n", "optiwindnet.pathfinding: _find_paths[200]: advancer id <47>\n", "pseudoedge «19->9» added\n", "optiwindnet.pathfinding: pseudoedge «19->9» added\n", "{47} advancer revisited triangle\n", "optiwindnet.pathfinding: {47} advancer revisited triangle\n", "PathFinder: loops performed: 200\n", "optiwindnet.pathfinding: PathFinder: loops performed: 200\n", "hookchoices: [9, 10, 11]\n", "optiwindnet.pathfinding: hookchoices: [9, 10, 11]\n", "best: hook = 10, sector = 11, dist = 909.25\n", "optiwindnet.pathfinding: best: hook = 10, sector = 11, dist = 909.25\n", "path: [10, 16, 15, -1]\n", "optiwindnet.pathfinding: path: [10, 16, 15, -1]\n", "Σλ = 6 575.7 m(+2) [-1]: 5κ = 4, T = 12" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wfn3" ] }, { "cell_type": "markdown", "id": "03126789", "metadata": {}, "source": [ "Set logging level to `WARNING`, so that we can see only the effect of the `verbose` flag." ] }, { "cell_type": "code", "execution_count": 14, "id": "953c1baf", "metadata": {}, "outputs": [], "source": [ "logger_own.setLevel(logging.WARNING)\n", "logger_pathfinding.setLevel(logging.WARNING)" ] }, { "cell_type": "markdown", "id": "fbb343ad", "metadata": {}, "source": [ "## Verbose (non-Python code)" ] }, { "cell_type": "markdown", "id": "261f2131-6323-4ad9-82bf-a576d157d428", "metadata": {}, "source": [ "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." ] }, { "cell_type": "markdown", "id": "914b2c57", "metadata": {}, "source": [ "Verbose is a flag for printing/hiding the MILP solver log (Default is `verbose=False`)." ] }, { "cell_type": "code", "execution_count": 15, "id": "f143f9af", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using warm start: the model is initialized with the provided solution S.\n", "\n", "\n", "\n", "Starting CP-SAT solver v9.15.6755\n", "Starting CP-SAT solver v9.15.6755\n", "Parameters: max_time_in_seconds: 2 log_search_progress: true relative_gap_limit: 0.001\n", "Parameters: max_time_in_seconds: 2 log_search_progress: true relative_gap_limit: 0.001\n", "Setting number of workers to 8\n", "Setting number of workers to 8\n", "\n", "\n", "Initial optimization model '': (model_fingerprint: 0x9b89b60649d6e071)\n", "#Variables: 156 (#bools: 78 in floating point objective) (132 primary variables)\n", " - 78 Booleans in [0,1]\n", " - 66 in [0,3]\n", " - 12 in [0,4]\n", "#kAtMostOne: 44 (#literals: 112)\n", "#kLinear1: 156 (#enforced: 156)\n", "#kLinearN: 39 (#terms: 390)\n", "\n", "Initial optimization model '': (model_fingerprint: 0x9b89b60649d6e071)\n", "#Variables: 156 (#bools: 78 in floating point objective) (132 primary variables)\n", " - 78 Booleans in [0,1]\n", " - 66 in [0,3]\n", " - 12 in [0,4]\n", "#kAtMostOne: 44 (#literals: 112)\n", "#kLinear1: 156 (#enforced: 156)\n", "#kLinearN: 39 (#terms: 390)\n", "Starting presolve at 0.00s\n", "\n", "Starting presolve at 0.00s\n", "The solution hint is complete and is feasible.\n", "The solution hint is complete and is feasible.\n", "[Scaling] Floating point objective has 78 terms with magnitude in [336.61, 1997.76] average = 854.916\n", "[Scaling] Floating point objective has 78 terms with magnitude in [336.61, 1997.76] average = 854.916\n", "[Scaling] Objective coefficient relative error: 8.90318e-09\n", "[Scaling] Objective worst-case absolute error: 7.72954e-05\n", "[Scaling] Objective scaling factor: 131072\n", "[Scaling] Objective coefficient relative error: 8.90318e-09\n", "[Scaling] Objective worst-case absolute error: 7.72954e-05\n", "[Scaling] Objective scaling factor: 131072\n", " 5.48e-05s 0.00e+00d [DetectDominanceRelations] 5.48e-05s 0.00e+00d [DetectDominanceRelations] \n", "\n", " 8.01e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1 \n", " 8.01e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1 \n", " 1.34e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=56 \n", " 1.34e-05s 0.00e+00d [ExtractEncodingFromLinear] #potential_supersets=56 \n", " 2.60e-05s 0.00e+00d [DetectDuplicateColumns] \n", " 2.60e-05s 0.00e+00d [DetectDuplicateColumns] \n", " 3.30e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 3.30e-05s 0.00e+00d [DetectDuplicateConstraints] \n", "[Symmetry] Graph for symmetry has 578 nodes and 1'030 arcs.\n", "[Symmetry] Graph for symmetry has 578 nodes and 1'030 arcs.\n", "[Symmetry] Symmetry computation done. time: 0.000110708 dtime: 0.00010345\n", "[Symmetry] Symmetry computation done. time: 0.000110708 dtime: 0.00010345\n", " 6.25e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] 6.25e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", "\n", " 9.21e-04s 1.99e-04d [Probe] #probed=156 9.21e-04s 1.99e-04d [Probe] #probed=156 \n", "\n", " 8.18e-05s 1.43e-05d [MaxClique] Merged 44 constraints with 112 literals into 28 constraints with 80 literals\n", " 8.18e-05s 1.43e-05d [MaxClique] Merged 44 constraints with 112 literals into 28 constraints with 80 literals\n", " 5.01e-05s 0.00e+00d [DetectDominanceRelations] 5.01e-05s 0.00e+00d [DetectDominanceRelations] \n", "\n", " 4.39e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 4.39e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 4.35e-05s 0.00e+00d [ProcessAtMostOneAndLinear] \n", " 2.58e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 4.35e-05s 0.00e+00d [ProcessAtMostOneAndLinear] \n", " 2.21e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", " 5.35e-05s 1.35e-06d [DetectDominatedLinearConstraints] #relevant_constraints=27 #num_inclusions=13 \n", " 2.58e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 2.21e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", " 5.35e-05s 1.35e-06d [DetectDominatedLinearConstraints] #relevant_constraints=27 #num_inclusions=13 \n", " 4.02e-06s 0.00e+00d [DetectDifferentVariables] \n", " 4.02e-06s 0.00e+00d [DetectDifferentVariables] \n", " 9.22e-05s 4.20e-06d [ProcessSetPPC] #relevant_constraints=42 #num_inclusions=40 \n", " 9.22e-05s 4.20e-06d [ProcessSetPPC] #relevant_constraints=42 #num_inclusions=40 \n", " 4.07e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28 \n", " 4.07e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28 \n", " 7.34e-05s 0.00e+00d [DetectEncodedComplexDomains] \n", " 7.34e-05s 0.00e+00d [DetectEncodedComplexDomains] \n", " 6.59e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints] \n", " 6.59e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints] \n", " 2.55e-05s 1.53e-05d [FindBigAtMostOneAndLinearOverlap] \n", " 1.64e-05s 1.64e-05d [FindBigVerticalLinearOverlap] \n", " 2.55e-05s 1.53e-05d [FindBigAtMostOneAndLinearOverlap] \n", " 1.64e-05s 1.64e-05d [FindBigVerticalLinearOverlap] \n", " 6.68e-06s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23 \n", " 6.68e-06s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23 \n", " 4.07e-06s 0.00e+00d [MergeClauses] \n", " 4.07e-06s 0.00e+00d [MergeClauses] \n", " 4.97e-05s 0.00e+00d [DetectDominanceRelations] 4.97e-05s 0.00e+00d [DetectDominanceRelations] \n", "\n", " 3.82e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 3.82e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 3.84e-05s 0.00e+00d [DetectDominanceRelations] \n", " 3.20e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 3.84e-05s 0.00e+00d [DetectDominanceRelations] \n", " 3.20e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 1.17e-05s 0.00e+00d [DetectDuplicateColumns] \n", " 1.17e-05s 0.00e+00d [DetectDuplicateColumns] \n", " 1.84e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 1.84e-05s 0.00e+00d [DetectDuplicateConstraints] \n", "[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.\n", "[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.\n", "[Symmetry] Symmetry computation done. time: 6.4681e-05 dtime: 9.639e-05\n", "[Symmetry] Symmetry computation done. time: 6.4681e-05 dtime: 9.639e-05\n", "[SAT presolve] num removable Booleans: 0 / 78\n", "[SAT presolve] num trivial clauses: 0\n", "[SAT presolve] num removable Booleans: 0 / 78\n", "[SAT presolve] num trivial clauses: 0\n", "[SAT presolve] [0s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", "[SAT presolve] [0s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", "[SAT presolve] [4.2437e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", "[SAT presolve] [4.2437e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", "[SAT presolve] [5.2889e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", "[SAT presolve] [5.2889e-05s] clauses:17 literals:34 vars:34 one_side_vars:34 simple_definition:0 singleton_clauses:0\n", " 2.45e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] 2.45e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", "\n", " 7.16e-04s 1.82e-04d [Probe] #probed=156 7.16e-04s 1.82e-04d [Probe] #probed=156 \n", "\n", " 3.79e-05s 1.39e-05d [MaxClique] \n", " 3.79e-05s 1.39e-05d [MaxClique] \n", " 4.50e-05s 0.00e+00d [DetectDominanceRelations] 4.50e-05s 0.00e+00d [DetectDominanceRelations] \n", "\n", " 5.27e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 5.27e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 2.46e-05s 0.00e+00d [ProcessAtMostOneAndLinear] \n", " 2.46e-05s 0.00e+00d [ProcessAtMostOneAndLinear] \n", " 2.08e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 2.08e-05s 0.00e+00d [DetectDuplicateConstraints] \n", " 2.91e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", " 2.91e-05s 0.00e+00d [DetectDuplicateConstraintsWithDifferentEnforcements] \n", " 3.86e-05s 1.01e-06d [DetectDominatedLinearConstraints] #relevant_constraints=26 #num_inclusions=12 \n", " 4.01e-06s 0.00e+00d [DetectDifferentVariables] \n", " 2.23e-05s 5.64e-07d [ProcessSetPPC] #relevant_constraints=41 \n", " 3.05e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28 \n", " 3.86e-05s 1.01e-06d [DetectDominatedLinearConstraints] #relevant_constraints=26 #num_inclusions=12 \n", " 4.01e-06s 0.00e+00d [DetectDifferentVariables] \n", " 2.23e-05s 5.64e-07d [ProcessSetPPC] #relevant_constraints=41 \n", " 3.05e-05s 0.00e+00d [TransformClausesToExactlyOne] #num_amos=28 \n", " 9.55e-05s 0.00e+00d [DetectEncodedComplexDomains] \n", " 8.13e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints] \n", " 3.17e-05s 1.49e-05d [FindBigAtMostOneAndLinearOverlap] \n", " 2.32e-05s 1.64e-05d [FindBigVerticalLinearOverlap] \n", " 1.06e-05s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23 \n", " 4.34e-06s 0.00e+00d [MergeClauses] \n", " 7.78e-05s 0.00e+00d [DetectDominanceRelations] \n", " 6.36e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 1.83e-06s 0.00e+00d [MergeNoOverlap] \n", " 1.38e-06s 0.00e+00d [MergeNoOverlap2D] \n", " 5.30e-05s 0.00e+00d [ExpandObjective] #entries=456 #tight_variables=78 #tight_constraints=12 \n", "\n", "Presolve summary:\n", " - 0 affine relations were detected.\n", " - rule 'TODO linear inclusion: superset is equality' was applied 25 times.\n", " - rule 'at_most_one: transformed into max clique' was applied 1 time.\n", " - rule 'deductions: 156 stored' was applied 1 time.\n", " - rule 'exactly_one: simplified objective' was applied 12 times.\n", " - rule 'linear: positive equal one' was applied 12 times.\n", " - rule 'objective: shifted cost with exactly ones' was applied 12 times.\n", " - rule 'presolve: 0 unused variables removed.' was applied 1 time.\n", " - rule 'presolve: iteration' was applied 2 times.\n", " - rule 'setppc: exactly_one included in linear' was applied 12 times.\n", " - rule 'setppc: reduced linear coefficients' was applied 11 times.\n", " - rule 'setppc: removed trivial linear constraint' was applied 1 time.\n", " - rule 'variables: detect fully reified value encoding' was applied 78 times.\n", " - rule 'variables: detect half reified value encoding' was applied 156 times.\n", "\n", "Presolved optimization model '': (model_fingerprint: 0x251463254fec44bb)\n", "#Variables: 156 (#bools: 66 in objective) (132 primary variables)\n", " - 78 Booleans in [0,1]\n", " - 66 in [0,3]\n", " - 12 in [0,4]\n", "#kAtMostOne: 11 (#literals: 46)\n", "#kBoolAnd: 17 (#enforced: 17) (#literals: 34)\n", "#kExactlyOne: 12 (#literals: 78)\n", "#kLinear1: 156 (#enforced: 156)\n", "#kLinearN: 26 (#terms: 234)\n", "[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.\n", "[Symmetry] Symmetry computation done. time: 9.8533e-05 dtime: 9.636e-05\n", "\n", "Preloading model.\n", "#Bound 0.01s best:inf next:[5258.15779,30400.5387] initial_domain\n", "#1 0.01s best:6575.68001 next:[5258.15779,6575.68] complete_hint\n", "#Model 0.02s var:156/156 constraints:222/222\n", "\n", "Starting search at 0.02s with 8 workers.\n", "6 full problem subsolvers: [core, default_lp, max_lp, no_lp, quick_restart, reduced_costs]\n", "2 first solution subsolvers: [fj, fs_random_no_lp]\n", "9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]\n", "3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]\n", "\n", " 9.55e-05s 0.00e+00d [DetectEncodedComplexDomains] \n", " 8.13e-06s 0.00e+00d [FindAlmostIdenticalLinearConstraints] \n", " 3.17e-05s 1.49e-05d [FindBigAtMostOneAndLinearOverlap] \n", " 2.32e-05s 1.64e-05d [FindBigVerticalLinearOverlap] \n", " 1.06e-05s 1.11e-06d [FindBigHorizontalLinearOverlap] #linears=23 \n", " 4.34e-06s 0.00e+00d [MergeClauses] \n", " 7.78e-05s 0.00e+00d [DetectDominanceRelations] \n", " 6.36e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n", " 1.83e-06s 0.00e+00d [MergeNoOverlap] \n", " 1.38e-06s 0.00e+00d [MergeNoOverlap2D] \n", " 5.30e-05s 0.00e+00d [ExpandObjective] #entries=456 #tight_variables=78 #tight_constraints=12 \n", "\n", "Presolve summary:\n", " - 0 affine relations were detected.\n", " - rule 'TODO linear inclusion: superset is equality' was applied 25 times.\n", " - rule 'at_most_one: transformed into max clique' was applied 1 time.\n", " - rule 'deductions: 156 stored' was applied 1 time.\n", " - rule 'exactly_one: simplified objective' was applied 12 times.\n", " - rule 'linear: positive equal one' was applied 12 times.\n", " - rule 'objective: shifted cost with exactly ones' was applied 12 times.\n", " - rule 'presolve: 0 unused variables removed.' was applied 1 time.\n", " - rule 'presolve: iteration' was applied 2 times.\n", " - rule 'setppc: exactly_one included in linear' was applied 12 times.\n", " - rule 'setppc: reduced linear coefficients' was applied 11 times.\n", " - rule 'setppc: removed trivial linear constraint' was applied 1 time.\n", " - rule 'variables: detect fully reified value encoding' was applied 78 times.\n", " - rule 'variables: detect half reified value encoding' was applied 156 times.\n", "\n", "Presolved optimization model '': (model_fingerprint: 0x251463254fec44bb)\n", "#Variables: 156 (#bools: 66 in objective) (132 primary variables)\n", " - 78 Booleans in [0,1]\n", " - 66 in [0,3]\n", " - 12 in [0,4]\n", "#kAtMostOne: 11 (#literals: 46)\n", "#kBoolAnd: 17 (#enforced: 17) (#literals: 34)\n", "#kExactlyOne: 12 (#literals: 78)\n", "#kLinear1: 156 (#enforced: 156)\n", "#kLinearN: 26 (#terms: 234)\n", "[Symmetry] Graph for symmetry has 545 nodes and 888 arcs.\n", "[Symmetry] Symmetry computation done. time: 9.8533e-05 dtime: 9.636e-05\n", "\n", "Preloading model.\n", "#Bound 0.01s best:inf next:[5258.15779,30400.5387] initial_domain\n", "#1 0.01s best:6575.68001 next:[5258.15779,6575.68] complete_hint\n", "#Model 0.02s var:156/156 constraints:222/222\n", "\n", "Starting search at 0.02s with 8 workers.\n", "6 full problem subsolvers: [core, default_lp, max_lp, no_lp, quick_restart, reduced_costs]\n", "2 first solution subsolvers: [fj, fs_random_no_lp]\n", "9 interleaved subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, ls, rins/rens, rnd_cst_lns, rnd_var_lns]\n", "3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]\n", "\n", "#Bound 0.02s best:6575.68001 next:[5378.2497,6575.68] am1_presolve (num_literals=66 num_am1=3 increase=15740687 work_done=247)\n", "#Bound 0.02s best:6575.68001 next:[5378.2497,6575.68] am1_presolve (num_literals=66 num_am1=3 increase=15740687 work_done=247)\n", "#Bound 0.02s best:6575.68001 next:[5444.84348,6575.68] default_lp\n", "#Bound 0.02s best:6575.68001 next:[5444.84348,6575.68] default_lp\n", "#Bound 0.02s best:6575.68001 next:[5605.6098,6575.68] default_lp\n", "#Bound 0.02s best:6575.68001 next:[5605.6098,6575.68] default_lp\n", "#Bound 0.02s best:6575.68001 next:[5665.48068,6575.68] default_lp\n", "#Bound 0.03s best:6575.68001 next:[5767.87956,6575.68] default_lp\n", "#Bound 0.03s best:6575.68001 next:[6097.49603,6575.68] max_lp\n", "#Model 0.03s var:144/156 constraints:208/222\n", "#Bound 0.02s best:6575.68001 next:[5665.48068,6575.68] default_lp\n", "#Bound 0.03s best:6575.68001 next:[5767.87956,6575.68] default_lp\n", "#Bound 0.03s best:6575.68001 next:[6097.49603,6575.68] max_lp\n", "#Model 0.03s var:144/156 constraints:208/222\n", "#2 0.03s best:6564.76533 next:[6097.49603,6564.76532] graph_var_lns (d=5.00e-01 s=8 t=0.10 p=0.00 stall=0 h=base) [hint]\n", "#2 0.03s best:6564.76533 next:[6097.49603,6564.76532] graph_var_lns (d=5.00e-01 s=8 t=0.10 p=0.00 stall=0 h=base) [hint]\n", "#Bound 0.03s best:6564.76533 next:[6356.62878,6564.76532] max_lp\n", "#Bound 0.03s best:6564.76533 next:[6356.62878,6564.76532] max_lp\n", "#Model 0.03s var:134/156 constraints:197/222\n", "#Model 0.03s var:134/156 constraints:197/222\n", "#Model 0.04s var:89/156 constraints:141/222#Model 0.04s var:89/156 constraints:141/222\n", "\n", "#Model 0.04s var:85/156 constraints:136/222\n", "#Model 0.04s var:85/156 constraints:136/222\n", "#Done 0.04s no_lp#Done 0.04s no_lp\n", "\n", "#Done 0.04s core\n", "#Done 0.04s core\n", "\n", "\n", "Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime\n", " 'core': 1 [ 22.05ms, 22.05ms] 22.05ms 0.00ns 22.05ms 2 [189.53us, 2.24ms] 1.21ms 1.03ms 2.43ms\n", " 'default_lp': 1 [ 22.13ms, 22.13ms] 22.13ms 0.00ns 22.13ms 1 [ 1.66ms, 1.66ms] 1.66ms 0.00ns 1.66ms\n", " 'feasibility_pump': 1 [546.68us, 546.68us] 546.68us 0.00ns 546.68us 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " '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\n", " 'graph_arc_lns': 1 [ 1.54ms, 1.54ms] 1.54ms 0.00ns 1.54ms 1 [256.00ns, 256.00ns] 256.00ns 0.00ns 256.00ns\n", " 'graph_cst_lns': 1 [ Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime\n", " 'core': 1 [ 22.05ms, 22.05ms] 22.05ms 0.00ns 22.05ms 2 [189.53us, 2.24ms] 1.21ms 1.03ms 2.43ms\n", " 'default_lp': 1 [ 22.13ms, 22.13ms] 22.13ms 0.00ns 22.13ms 1 [ 1.66ms, 1.66ms] 1.66ms 0.00ns 1.66ms\n", " 'feasibility_pump': 1 [546.68us, 546.68us] 546.68us 0.00ns 546.68us 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'fj': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " '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\n", " 'graph_arc_lns': 1 [ 1.54ms, 1.54ms] 1.54ms 0.00ns 1.54ms 1 [256.00ns, 256.00ns] 256.00ns 0.00ns 256.00ns\n", " 'graph_cst_lns': 1 [ 1.65ms, 1.65ms] 1.65ms 0.00ns 1.65ms 1 [345.00ns, 345.00ns] 345.00ns 0.00ns 345.00ns\n", " 'graph_dec_lns': 1 [ 1.24ms, 1.24ms] 1.24ms 0.00ns 1.24ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'graph_var_lns': 1 [ 3.39ms, 3.39ms] 3.39ms 0.00ns 3.39ms 1 [671.00ns, 671.00ns] 671.00ns 0.00ns 671.00ns\n", " 'ls': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'max_lp': 1 [ 18.08ms, 18.08ms] 18.08ms 0.00ns 18.08ms 1 [ 1.64ms, 1.64ms] 1.64ms 0.00ns 1.64ms\n", " 'no_lp': 1 [ 17.53ms, 17.53ms] 17.53ms 0.00ns 17.53ms 2 [254.01us, 1.77ms] 1.01ms 758.25us 2.02ms\n", " 'quick_restart': 1 [ 17.07ms, 17.07ms] 17.07ms 0.00ns 17.07ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'reduced_costs': 1 [ 16.85ms, 16.85ms] 16.85ms 0.00ns 16.85ms 2 [271.56us, 922.57us] 597.06us 325.50us 1.19ms\n", " 'rins/rens': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'rnd_cst_lns': 1 [ 3.40ms, 3.40ms] 3.40ms 0.00ns 3.40ms 1 [231.00ns, 231.00ns] 231.00ns 0.00ns 231.00ns\n", " 'rnd_var_lns': 1 [ 5.03ms, 5.03ms] 5.03ms 0.00ns 5.03ms 1 [ 10.00ns, 10.00ns] 10.00ns 0.00ns 10.00ns\n", "\n", "Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag\n", " 'core': 86 175 2'155 1 380 588 7'542 22'510\n", " 'default_lp': 78 11 191 0 161 172 798 2'686\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0 0\n", " 'max_lp': 78 0 156 0 156 156 626 2'214\n", " 'no_lp': 78 170 922 1 334 548 6'711 18'145\n", " 'quick_restart': 78 7 184 0 157 164 759 2'576\n", " 'reduced_costs': 78 5 187 0 157 162 757 2'699\n", "\n", " 1.65ms, 1.65ms] 1.65ms 0.00ns 1.65ms 1 [345.00ns, 345.00ns] 345.00ns 0.00ns 345.00ns\n", " 'graph_dec_lns': 1 [ 1.24ms, 1.24ms] 1.24ms 0.00ns 1.24ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'graph_var_lns': 1 [ 3.39ms, 3.39ms] 3.39ms 0.00ns 3.39ms 1 [671.00ns, 671.00ns] 671.00ns 0.00ns 671.00ns\n", " 'ls': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'max_lp': 1 [ 18.08ms, 18.08ms] 18.08ms 0.00ns 18.08ms 1 [ 1.64ms, 1.64ms] 1.64ms 0.00ns 1.64ms\n", " 'no_lp': 1 [ 17.53ms, 17.53ms] 17.53ms 0.00ns 17.53ms 2 [254.01us, 1.77ms] 1.01ms 758.25us 2.02ms\n", " 'quick_restart': 1 [ 17.07ms, 17.07ms] 17.07ms 0.00ns 17.07ms 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'reduced_costs': 1 [ 16.85ms, 16.85ms] 16.85ms 0.00SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses\n", " 'core': 36 0 86 50 92 59 12\n", " 'default_lp': 36 0 78 42 82 15 3\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 78 78 34 12 0\n", " 'no_lp': 56 0 78 22 322 40 14\n", " 'quick_restart': 6 0 78 72 346 13 4\n", " 'reduced_costs': 9 0 78 69 346 13 3\n", "\n", "SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed\n", " 'core': 118 681 155 2'586 0 61\n", " 'default_lp': 7 29 15 65 0 4\n", " 'fs_random_no_lp': 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0\n", " 'no_lp': 62 196 448 1'148 0 87\n", " 'quick_restart': 5 40 20 88 0 2\n", " 'reduced_costs': 5 32 16 71 0 1\n", "\n", "Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts\n", " 'core': 31 144 0 0 0 0 0\n", " 'default_lp': 0 0 0 0 0 0 0\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0 0\n", " 'no_lp': 93 378 2 4 45 45 4\n", " 'quick_restart': 0 0 0 0 0 0 0\n", " 'reduced_costs': 0 0 0 0 0 0 0\n", "\n", "ns 16.85ms 2 [271.56us, 922.57us] 597.06us 325.50us 1.19ms\n", " 'rins/rens': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns\n", " 'rnd_cst_lns': 1 [ 3.40ms, 3.40ms] 3.40ms 0.00ns 3.40ms 1 [231.00ns, 231.00ns] 231.00ns 0.00ns 231.00ns\n", " 'rnd_var_lns': 1 [ 5.03ms, 5.03ms] 5.03ms 0.00ns 5.03ms 1 [ 10.00ns, 10.00ns] 10.00ns 0.00ns 10.00ns\n", "\n", "Search stats Bools Conflicts Branches Restarts BacktrackToRoot Backtrack BoolPropag IntegerPropag\n", " 'core': 86 175 2'155 1 380 588 7'542 22'510\n", " 'default_lp': 78 11 191 0 161 172 798 2'686\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0 0\n", " 'max_lp': 78 0 156 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\n", " 'core': 49 0 3 48 6 0 13 0 0 2 0 0 0 226 175\n", " 'default_lp': 0 0 0 4 0 0 0 0 0 0 0 0 0 7 11\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 'no_lp': 3 0 0 81 1 6 6 4 1 1 0 0 0 94 170\n", " 'quick_restart': 0 0 0 2 0 0 0 0 0 0 0 0 0 13 7\n", " 'reduced_costs': 0 0 0 1 0 0 0 0 0 0 0 0 0 6 5\n", "\n", "Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.\n", " 'default_lp': 1 204 119 35 0 0\n", " 'max_lp': 1 98 68 3 0 0\n", " 'quick_restart': 1 184 61 29 0 0\n", " 'reduced_costs': 1 187 71 18 5 0\n", "\n", "Lp dimension Final dimension of first component\n", " 'default_lp': 112 rows, 145 columns, 496 entries\n", " 'max_lp': 350 rows, 156 columns, 1713 entries\n", " 'quick_restart': 134 rows, 145 columns, 440 entries\n", " 'reduced_costs': 150 rows, 156 columns, 492 entries\n", "\n", "Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling\n", " 'default_lp': 0 0 34 0 80 0\n", " 'max_lp': 0 0 3 0 106 0\n", " 'quick_restart': 0 0 26 0 0 0\n", " 'reduced_costs': 0 0 21 0 0 0\n", "\n", "Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call\n", " 'default_lp': 369 1 308 0 256 0 7 119/270\n", " 'max_lp': 368 0 0 0 0 0 0 68/137\n", " 'quick_restart': 311 0 35 0 35 0 0 61/96\n", " 'reduced_costs': 371 0 77 0 57 0 0 71/114\n", "\n", "Lp Cut quick_restart default_lp max_lp reduced_costs\n", " CG_FF: - 4 3 -\n", " CG_K: - 1 2 -\n", " CG_KL: - 1 - -\n", " CG_R: - 4 2 -\n", " CG_RB: - 10 10 -\n", " CG_RBP: - 4 3 -\n", " IB: 61 51 - 71\n", " MIR_1_FF: - 1 - -\n", " MIR_1_K: - 3 - -\n", " MIR_1_KL: - 1 - -\n", " MIR_2_FF: - 2 - -\n", " MIR_2_K: - 6 3 -\n", " MIR_2_KL: - 5 3 -\n", " MIR_2_RB: - 2 - -\n", " MIR_2_RBP: - 2 - -\n", " MIR_3_FF: - 1 1 -\n", " MIR_3_K: - 4 3 -\n", " MIR_3_KL: - 4 3 -\n", " MIR_3_RB: - 1 7 -\n", " MIR_3_RBP: - 2 1 -\n", " MIR_4_FF: - 1 - -\n", " MIR_4_K: - 1 2 -\n", " MIR_4_KL: - 1 2 -\n", " MIR_4_RB: - - 3 -\n", " MIR_5_FF: - - 1 -\n", " MIR_5_K: - 2 2 -\n", " MIR_5_KL: - 1 2 -\n", " MIR_5_RB: - 1 3 -\n", " MIR_6_FF: - - 4 -\n", " MIR_6_K: - - 1 -\n", " MIR_6_KL: - - 3 -\n", " MIR_6_RB: - - 1 -\n", " ZERO_HALF_FF: - - 2 -\n", " ZERO_HALF_K: - 1 - -\n", " ZERO_HALF_R: - 2 1 -\n", "\n", "LNS stats Improv/Calls Closed Difficulty TimeLimit\n", " 'graph_arc_lns': 0/1 100% 7.07e-01 0.10\n", " 'graph_cst_lns': 0/1 100% 7.07e-01 0.10\n", " 'graph_dec_lns': 0/0 0% 5.00e-01 0.10\n", " 'graph_var_lns': 1/1 100% 7.07e-01 0.10\n", " 'rins/rens': 0/0 0% 5.00e-01 0.10\n", " 'rnd_cst_lns': 0/1 100% 7.07e-01 0.10\n", " 'rnd_var_lns': 0/1 100% 7.07e-01 0.10\n", "\n", "Solutions (2) Num Rank\n", " 'complete_hint': 2 [0,1]\n", " 'graph_var_lns': 2 [1,2]\n", "\n", "Objective bounds Num\n", " 'am1_presolve': 1\n", " 'default_lp': 4\n", " 'initial_domain': 1\n", " 'max_lp': 2\n", "\n", "Solution repositories Added Queried Synchro\n", " 'alternative_path': 1 0 1\n", " 'best_solutions': 4 5 4\n", " 'fj solution hints': 0 0 0\n", " 'lp solutions': 0 0 0\n", " 'pump': 0 0\n", "\n", "Improving bounds shared Num Sym\n", " 'core': 4 0\n", " 'default_lp': 62 0\n", " 'no_lp': 35 0\n", "\n", " 156 156 626 2'214\n", " 'no_lp': 78 170 922 1 334 548 6'711 18'145\n", " 'quick_restart': 78 7 184 0 157 164 759 2'576\n", " 'reduced_costs': 78 5 187 0 157 162 757 2'699\n", "\n", "SAT formula Fixed Equiv Total VarLeft BinaryClauses PermanentClauses TemporaryClauses\n", " 'core': 36 0 86 50 92 59 12\n", " 'default_lp': 36 0 78 42 82 15 3\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 78 78 34 12 0\n", " 'no_lp': 56 0 78 22 322 40 Clauses shared #Exported #Imported #BinaryRead #BinaryTotal\n", " 'core': 3 0 196 201\n", " 'default_lp': 1 0 195 201\n", " 'max_lp': 0 0 0 201\n", " 'no_lp': 197 0 200 201\n", " 'quick_restart': 0 0 181 201\n", " 'reduced_costs': 0 0 181 201\n", "\n", "LRAT_status: NA\n", "[Scaling] scaled_objective_bound: 6564.77 corrected_bound: 6564.77 delta: -4.08329e-06\n", " 14\n", " 'quick_restart': 6 0 78 72 346 13 4\n", " 'reduced_costs': 9 0 78 69 346 13 3\n", "\n", "SAT stats ClassicMinim LitRemoved LitRemovedBinary LitLearned LitForgotten Subsumed\n", " 'core': 118 681 155 2'586 0 61\n", " 'default_lp': 7 29 15 65 0 4\n", " 'fs_random_no_lp': 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0\n", " 'no_lp': 62 196 448 1'148 0 87\n", " 'quick_restart': 5 40 20 88 0 2\n", " 'reduced_costs': 5 32 16 71 0 1\n", "\n", "Vivification Clauses Decisions LitTrue Subsumed LitRemoved DecisionReused Conflicts\n", " 'core': 31 144 0 0 0 0 0\n", " 'default_lp': 0 0 0 0 0 0 0\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0 0\n", " 'no_lp': 93 378 2 4 45 45 4\n", " 'quick_restart': 0 0 0 0 0 0 0\n", " 'reduced_costs': 0 0 0 0 0 0 0\n", "\n", "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\n", " 'core': 49 0 3 48 6 0 13 0 0 2 0 0 0 226 175\n", " 'default_lp': 0 0 0 4 0 0 0 0 0 0 0 0 0 7 11\n", " 'fs_random_no_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 'max_lp': 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 'no_lp': 3 0 0 81 1 6 6 4 1 1 0 0 0 94 170\n", " 'quick_restart': 0 0 0 2 0 0 0 0 0 0 0 0 0 13 7\n", " 'reduced_costs': 0 0 0 1 0 0 0 0 0 0 0 0 0 6 5\n", "\n", "Lp stats Component Iterations AddedCuts OPTIMAL DUAL_F. DUAL_U.\n", " 'default_lp': 1 204 119 35 0 0\n", " 'max_lp': 1 98 68 3 0 0\n", " 'quick_restart': 1 184 61 29 0 0\n", " 'reduced_costs': 1 187 71 18 5 0\n", "\n", "Lp dimension Final dimension of first component\n", " 'default_lp': 112 rows, 145 columns, 496 entries\n", " 'max_lp': 350 rows, 156 columns, 1713 entries\n", " 'quick_restart': 134 rows, 145 columns, 440 entries\n", " 'reduced_costs': 150 rows, 156 columns, 492 entries\n", "\n", "Lp debug CutPropag CutEqPropag Adjust Overflow Bad BadScaling\n", " 'default_lp': 0 0 34 0 80 0\n", " 'max_lp': 0 0 3 0 106 0\n", " 'quick_restart': 0 0 26 0 0 0\n", " 'reduced_costs': 0 0 21 0 0 0\n", "\n", "Lp pool Constraints Updates Simplif Merged Shortened Split Strengthened Cuts/Call\n", " 'default_lp': 369 1 308 0 256 0 7 119/270\n", " 'max_lp': 368 0 0 0 0 0 0 68/137\n", " 'quick_restart': 311 0 35 0 35 0 0 61/96\n", " 'reduced_costs': 371 0 77 0 57 0 0 71/114\n", "\n", "Lp Cut quick_restart default_lp max_lp reduced_costs\n", " CG_FF: - 4 3 -\n", " CG_K: - 1 2 -\n", " CG_KL: - 1 - -\n", " CG_R: - 4 2 -\n", " CG_RB: - 10 10 -\n", " CG_RBP: - 4 3 -\n", " IB: 61 51 - 71\n", " MIR_1_FF: - 1 - -\n", " MIR_1_K: - 3 - -\n", " MIR_1_KL: - 1 - -\n", " MIR_2_FF: - 2 - -\n", " MIR_2_K: - 6 3 -\n", " MIR_2_KL: - 5 3 -\n", " MIR_2_RB: - 2 - -\n", " MIR_2_RBP: - 2 - -\n", " MIR_3_FF: - 1 1 -\n", " MIR_3_K: - 4 3 -\n", " MIR_3_KL: - 4 3 -\n", " MIR_3_RB: - 1 7 -\n", " MIR_3_RBP: - 2 1 -\n", " MIR_4_FF: - 1 - -\n", " MIR_4_K: - 1 2 -\n", " MIR_4_KL: - 1 2 -\n", " MIR_4_RB: - - 3 -\n", " MIR_5_FF: - - 1 -\n", " MIR_5_K: - 2 2 -\n", " MIR_5_KL: - 1 2 -\n", " MIR_5_RB: - 1 3 -\n", " MIR_6_FF: - - 4 -\n", " MIR_6_K: - - 1 -\n", " MIR_6_KL: - - 3 -\n", " MIR_6_RB: - - 1 -\n", " ZERO_HALF_FF: - - 2 -\n", " ZERO_HALF_K: - 1 - -\n", " ZERO_HALF_R: - 2 1 -\n", "\n", "LNS stats Improv/Calls Closed Difficulty TimeLimit\n", " 'graph_arc_lns': 0/1 100% 7.07e-01 0.10\n", " 'graph_cst_lns': 0/1 100% 7.07e-01 0.10\n", " 'graph_dec_lns': 0/0 0% 5.00e-01 0.10\n", " 'graph_var_lns': 1/1 100% 7.07e-01 0.10\n", " 'rins/rens': 0/0 0% 5.00e-01 0.10\n", " 'rnd_cst_lns': 0/1 100% 7.07e-01 0.10\n", " 'rnd_var_lns': 0/1 100% 7.07e-01 0.10\n", "\n", "Solutions (2) Num Rank\n", " 'complete_hint': 2 [0,1]\n", " 'graph_var_lns': 2 [1,2]\n", "\n", "Objective bounds Num\n", " 'am1_presolve': 1\n", " 'default_lp': 4\n", " 'initial_domain': 1\n", " 'max_lp': 2\n", "\n", "Solution repositories Added Queried Synchro\n", " 'alternative_path': 1 0 1\n", " 'best_solutions': 4 5 4\n", " 'fj solution hints': 0 0 0\n", " 'lp solutions': 0 0 0\n", " 'pump': 0 0\n", "\n", "Improving bounds shared Num Sym\n", " 'core': 4 0\n", " 'default_lp': 62 0\n", " 'no_lp': 35 0\n", "\n", "Clauses shared #Exported #Imported #BinaryRead #BinaryTotal\n", " 'core': 3 0 196 201\n", " 'default_lp': 1 0 195 201\n", " 'max_lp': 0 0 0 201\n", " 'no_lp': 197 0 200 201\n", " 'quick_restart': 0 0 181 201\n", " 'reduced_costs': 0 0 181 201\n", "\n", "LRAT_status: NA\n", "[Scaling] scaled_objective_bound: 6564.77 corrected_bound: 6564.77 delta: -4.08329e-06\n", "CpSolverResponse summary:\n", "status: OPTIMAL\n", "objective: 6564.765329507452\n", "best_bound: 6564.765329507452\n", "integers: 0\n", "booleans: 0\n", "conflicts: 0\n", "branches: 0\n", "propagations: 0\n", "integer_propagations: 0\n", "restarts: 0\n", "lp_iterations: 0\n", "walltime: 0.0412346\n", "usertime: 0.0412347\n", "deterministic_time: 0.00942359\n", "gap_integral: 0.0175847\n", "solution_fingerprint: 0x17860e0bc9d9a4b9\n", "\n", "CpSolverResponse summary:\n", "status: OPTIMAL\n", "objective: 6564.765329507452\n", "best_bound: 6564.765329507452\n", "integers: 0\n", "booleans: 0\n", "conflicts: 0\n", "branches: 0\n", "propagations: 0\n", "integer_propagations: 0\n", "restarts: 0\n", "lp_iterations: 0\n", "walltime: 0.0412346\n", "usertime: 0.0412347\n", "deterministic_time: 0.00942359\n", "gap_integral: 0.0175847\n", "solution_fingerprint: 0x17860e0bc9d9a4b9\n", "\n" ] } ], "source": [ "res3 = wfn3.optimize(\n", " router=MILPRouter(\n", " solver_name='ortools',\n", " time_limit=2,\n", " mip_gap=0.001,\n", " verbose=True,\n", " ),\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "id": "7d153994", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "Σλ = 6 564.8 m(+2) [-1]: 5κ = 4, T = 12" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wfn3" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }