Playing Victoria 3 with scripts and excel tables¶
This project extracts Victoria 3 game definitions into human-readable tables and figures.
But visualizing game concepts is only the beginning: the true purpose is to:
- build a mathematical model
- translate your game objectives into mathematical language
- solve for an optimal solution that guides your gameplay.
And you not only get to see how, but also get to see why:
- the marginal value of each building level
- the bottlenecks in your supply chain
- the trade-offs between different production strategies,
all without even installing the game.
-
Build an analysis
Set up the package, then choose a guide for parsing game data, modeling an economy, or tracing supply chains.
-
Explore the results
Preview every generated table and figure, download the complete files, and open the script that produced each result.
What the project covers¶
- Parse game data — Buildings, goods, production methods, technologies, population needs, and state-region resources become pandas DataFrames.
- Model an economy — Translate building levels into goods flows, employment, wealth, GDP, and nominal or market prices.
- Optimize production — Express objectives and constraints in a reusable
Scenario, then solve them with SciPy's linear programming tools. - Trace supply chains — Visualize upstream dependencies, attribute value added, inspect bottlenecks, and compare scenario sweeps.
Install¶
Python 3.13 is required. Parsing fresh data also requires a local Victoria 3 installation; although analyses based on the committed tables can be explored without one.
A supply chain at a glance¶
The same public API can produce an aggregated recipe graph or a realized graph
from a solved scenario. This example is generated by
examples/supply_chain_compare.py.
flowchart LR
n0(("aeroplanes"))
n1(("automobiles ★"))
n2(("clippers"))
n3(("clothes"))
n4(("coal"))
n5(("copper"))
n6(("dye"))
n7(("electricity"))
n8(("engines"))
n9(("explosives"))
n10(("fabric"))
n11(("fertilizer"))
n12(("fish"))
n13(("fruit"))
n14(("furniture"))
n15(("glass"))
n16(("grain"))
n17(("hardwood"))
n18(("iron"))
n19(("lead"))
n20(("liquor"))
n21(("meat"))
n22(("oil"))
n23(("paper"))
n24(("porcelain"))
n25(("rubber"))
n26(("services"))
n27(("silk"))
n28(("steamers"))
n29(("steel"))
n30(("sugar"))
n31(("sulfur"))
n32(("tanks"))
n33(("tools"))
n34(("transportation"))
n35(("wood"))
n36["building_automotive_industry<br/>lvl=0"]
n37["building_automotive_industry<br/>lvl=0"]
n38["building_automotive_industry<br/>lvl=0"]
n39["building_automotive_industry<br/>lvl=0"]
n40["building_automotive_industry<br/>lvl=0"]
n41["building_automotive_industry<br/>lvl=0"]
n42["building_automotive_industry<br/>lvl=20 | active"]
n43["building_automotive_industry<br/>lvl=0"]
n44["building_chemical_plant<br/>lvl=0"]
n45["building_chemical_plant<br/>lvl=0"]
n46["building_chemical_plant<br/>lvl=0.03524 | active"]
n47["building_coal_mine<br/>lvl=0"]
n48["building_coal_mine<br/>lvl=0"]
n49["building_coal_mine<br/>lvl=0.4393 | active"]
n50["building_copper_mine<br/>lvl=0"]
n51["building_copper_mine<br/>lvl=0"]
n52["building_copper_mine<br/>lvl=0.3686 | active"]
n53["building_cossack_host<br/>lvl=0"]
n54["building_cossack_host<br/>lvl=0"]
n55["building_cotton_plantation<br/>lvl=0"]
n56["building_cotton_plantation<br/>lvl=0"]
n57["building_cotton_plantation<br/>lvl=0"]
n58["building_dye_plantation<br/>lvl=0"]
n59["building_explosives_factory<br/>lvl=0"]
n60["building_explosives_factory<br/>lvl=0.1379 | active"]
n61["building_explosives_factory<br/>lvl=0"]
n62["building_fishing_wharf<br/>lvl=0"]
n63["building_fishing_wharf<br/>lvl=0"]
n64["building_fishing_wharf<br/>lvl=0"]
n65["building_glassworks<br/>lvl=0"]
n66["building_glassworks<br/>lvl=0"]
n67["building_glassworks<br/>lvl=0"]
n68["building_glassworks<br/>lvl=0"]
n69["building_glassworks<br/>lvl=0"]
n70["building_glassworks<br/>lvl=0"]
n71["building_iron_mine<br/>lvl=0"]
n72["building_iron_mine<br/>lvl=0"]
n73["building_iron_mine<br/>lvl=1.186 | active"]
n74["building_lead_mine<br/>lvl=0"]
n75["building_lead_mine<br/>lvl=0"]
n76["building_lead_mine<br/>lvl=0"]
n77["building_livestock_ranch<br/>lvl=0"]
n78["building_livestock_ranch<br/>lvl=0"]
n79["building_livestock_ranch<br/>lvl=0"]
n80["building_logging_camp<br/>lvl=0"]
n81["building_logging_camp<br/>lvl=0"]
n82["building_logging_camp<br/>lvl=0"]
n83["building_logging_camp<br/>lvl=0.01241 | active"]
n84["building_logging_camp<br/>lvl=0"]
n85["building_logging_camp<br/>lvl=0"]
n86["building_motor_industry<br/>lvl=2.48 | active"]
n87["building_motor_industry<br/>lvl=0"]
n88["building_motor_industry<br/>lvl=0"]
n89["building_oil_rig<br/>lvl=0"]
n90["building_oil_rig<br/>lvl=0"]
n91["building_oil_rig<br/>lvl=5.084 | active"]
n92["building_paper_mill<br/>lvl=0"]
n93["building_paper_mill<br/>lvl=0.04136 | active"]
n94["building_paper_mill<br/>lvl=0"]
n95["building_power_plant<br/>lvl=0"]
n96["building_power_plant<br/>lvl=0"]
n97["building_power_plant<br/>lvl=1.908 | active"]
n98["building_railway<br/>lvl=1.551 | active"]
n99["building_railway<br/>lvl=0"]
n100["building_railway<br/>lvl=0"]
n101["building_railway<br/>lvl=0"]
n102["building_rice_farm<br/>lvl=0"]
n103["building_rice_farm<br/>lvl=0"]
n104["building_rice_farm<br/>lvl=0"]
n105["building_rice_farm<br/>lvl=0"]
n106["building_rice_farm<br/>lvl=0"]
n107["building_rice_farm<br/>lvl=0"]
n108["building_rubber_plantation<br/>lvl=0"]
n109["building_rubber_plantation<br/>lvl=3.254 | active"]
n110["building_rubber_plantation<br/>lvl=0"]
n111["building_rye_farm<br/>lvl=0"]
n112["building_rye_farm<br/>lvl=0"]
n113["building_rye_farm<br/>lvl=0"]
n114["building_rye_farm<br/>lvl=0"]
n115["building_rye_farm<br/>lvl=0"]
n116["building_rye_farm<br/>lvl=0"]
n117["building_shipyard<br/>lvl=0"]
n118["building_shipyard<br/>lvl=0"]
n119["building_shipyard<br/>lvl=0"]
n120["building_shipyard<br/>lvl=0"]
n121["building_steel_mill<br/>lvl=0"]
n122["building_steel_mill<br/>lvl=1.057 | active"]
n123["building_steel_mill<br/>lvl=0"]
n124["building_sulfur_mine<br/>lvl=0"]
n125["building_sulfur_mine<br/>lvl=0"]
n126["building_sulfur_mine<br/>lvl=0.07442 | active"]
n127["building_synthetics_plant<br/>lvl=0.00517 | active"]
n128["building_synthetics_plant<br/>lvl=0"]
n129["building_tooling_workshop<br/>lvl=1.151 | active"]
n130["building_tooling_workshop<br/>lvl=0"]
n131["building_tooling_workshop<br/>lvl=0"]
n132["building_urban_center<br/>lvl=0"]
n133["building_urban_center<br/>lvl=0"]
n134["building_urban_center<br/>lvl=0"]
n4 -.->|"1.474"| n52
n4 -->|"r=15"| n62
n4 -->|"r=15"| n63
n4 -->|"r=15"| n64
n4 -.->|"4.744"| n73
n4 -.->|"r=4"| n76
n4 -.->|"r=5"| n77
n4 -.->|"r=5"| n78
n4 -.->|"r=5"| n79
n4 -.->|"r=10"| n88
n4 -.->|"0.4136"| n93
n4 -.->|"r=5"| n94
n4 -.->|"r=15"| n95
n4 -.->|"r=5"| n96
n4 -.->|"r=2"| n102
n4 -.->|"r=2"| n105
n4 -.->|"r=1"| n112
n4 -.->|"r=1"| n115
n4 -->|"r=10"| n120
n4 -.->|"r=30"| n121
n4 -.->|"42.27"| n122
n4 -.->|"r=35"| n123
n4 -.->|"0.2977"| n126
n4 -.->|"r=15"| n131
n5 -->|"r=1"| n36
n5 -->|"r=1"| n38
n5 -->|"r=1"| n40
n5 -->|"r=1"| n41
n5 -->|"20"| n42
n5 -->|"r=1"| n62
n5 -->|"r=1"| n63
n5 -->|"r=1"| n64
n5 -.->|"2.48"| n86
n5 -.->|"r=4"| n95
n5 -.->|"r=2"| n96
n5 -.->|"9.542"| n97
n5 -.->|"1.151"| n129
n5 -.->|"r=1"| n132
n5 -.->|"r=1"| n133
n5 -.->|"r=1"| n134
n6 -.->|"r=10"| n65
n6 -.->|"r=10"| n66
n6 -.->|"r=10"| n67
n6 -.->|"r=5"| n68
n6 -.->|"r=10"| n92
n6 -.->|"0.4136"| n93
n6 -.->|"r=10"| n94
n7 -->|"r=5"| n36
n7 -->|"r=5"| n38
n7 -->|"r=5"| n40
n7 -->|"r=5"| n41
n7 -->|"100"| n42
n7 -.->|"2.758"| n60
n7 -->|"r=6"| n62
n7 -->|"r=4"| n63
n7 -->|"r=4"| n64
n7 -.->|"r=1"| n77
n7 -.->|"r=1"| n78
n7 -.->|"r=5"| n80
n7 -.->|"r=5"| n81
n7 -.->|"r=5"| n82
n7 -.->|"0.06204"| n83
n7 -.->|"r=5"| n84
n7 -.->|"r=5"| n85
n7 -.->|"12.4"| n86
n7 -.->|"r=10"| n101
n7 -->|"r=30"| n117
n7 -.->|"r=30"| n121
n7 -.->|"31.7"| n122
n7 -.->|"r=30"| n123
n7 -.->|"5.753"| n129
n7 -.->|"r=4"| n132
n7 -.->|"r=4"| n133
n7 -.->|"r=4"| n134
n8 -->|"r=10"| n36
n8 -->|"r=10"| n37
n8 -->|"r=10"| n38
n8 -->|"r=10"| n39
n8 -->|"r=10"| n40
n8 -->|"r=10"| n41
n8 -->|"200"| n42
n8 -->|"r=10"| n43
n8 -.->|"0.4393"| n49
n8 -.->|"0.3686"| n52
n8 -->|"r=5"| n55
n8 -->|"r=5"| n56
n8 -->|"r=5"| n57
n8 -.->|"r=5"| n58
n8 -.->|"r=2"| n65
n8 -.->|"r=2"| n67
n8 -.->|"r=2"| n68
n8 -.->|"r=2"| n69
n8 -.->|"1.186"| n73
n8 -.->|"r=1"| n76
n8 -.->|"r=1"| n80
n8 -.->|"r=1"| n81
n8 -.->|"r=1"| n82
n8 -.->|"0.01241"| n83
n8 -.->|"r=1"| n84
n8 -.->|"r=1"| n85
n8 -.->|"r=10"| n89
n8 -.->|"r=10"| n90
n8 -.->|"50.84"| n91
n8 -.->|"r=6"| n95
n8 -.->|"r=4"| n96
n8 -.->|"19.08"| n97
n8 -.->|"9.306"| n98
n8 -.->|"r=6"| n99
n8 -.->|"r=6"| n100
n8 -.->|"r=6"| n101
n8 -.->|"r=5"| n108
n8 -.->|"16.27"| n109
n8 -.->|"r=5"| n110
n8 -.->|"r=1"| n111
n8 -.->|"r=1"| n114
n8 -->|"r=10"| n117
n8 -->|"r=5"| n119
n8 -->|"r=10"| n120
n8 -.->|"0.07442"| n126
n9 -.->|"r=10"| n47
n9 -.->|"r=10"| n48
n9 -.->|"4.393"| n49
n9 -.->|"r=10"| n50
n9 -.->|"r=10"| n51
n9 -.->|"3.686"| n52
n9 -.->|"r=10"| n71
n9 -.->|"r=10"| n72
n9 -.->|"11.86"| n73
n9 -.->|"r=10"| n74
n9 -.->|"r=10"| n75
n9 -.->|"r=10"| n76
n9 -.->|"r=10"| n124
n9 -.->|"r=10"| n125
n9 -.->|"0.7442"| n126
n10 -->|"r=4"| n36
n10 -->|"r=4"| n37
n10 -->|"r=4"| n40
n10 -->|"r=4"| n41
n10 -->|"r=20"| n118
n10 -->|"r=20"| n119
n11 -.->|"r=30"| n59
n11 -.->|"6.894"| n60
n11 -.->|"r=40"| n61
n11 -.->|"r=30"| n102
n11 -.->|"r=30"| n103
n11 -.->|"r=30"| n104
n11 -.->|"r=30"| n105
n11 -.->|"r=30"| n106
n11 -.->|"r=30"| n107
n11 -.->|"r=15"| n111
n11 -.->|"r=15"| n112
n11 -.->|"r=15"| n113
n11 -.->|"r=15"| n114
n11 -.->|"r=15"| n115
n11 -.->|"r=15"| n116
n11 -.->|"0.1551"| n127
n11 -.->|"r=30"| n128
n15 -.->|"r=2"| n132
n15 -.->|"r=2"| n133
n15 -.->|"r=2"| n134
n16 -.->|"r=15"| n77
n16 -.->|"r=15"| n78
n16 -.->|"r=15"| n79
n17 -->|"r=4"| n36
n17 -->|"r=4"| n37
n17 -->|"r=4"| n40
n17 -->|"r=4"| n41
n17 -->|"r=20"| n119
n18 -.->|"r=10"| n44
n18 -.->|"r=30"| n45
n18 -.->|"1.057"| n46
n18 -.->|"r=1"| n77
n18 -.->|"r=1"| n78
n18 -.->|"r=1"| n79
n18 -.->|"r=100"| n121
n18 -.->|"105.7"| n122
n18 -.->|"r=100"| n123
n19 -.->|"r=35"| n65
n19 -.->|"r=35"| n66
n19 -.->|"r=30"| n68
n19 -.->|"r=30"| n69
n19 -.->|"r=30"| n70
n22 -->|"r=10"| n36
n22 -->|"r=5"| n37
n22 -->|"r=10"| n38
n22 -->|"r=5"| n39
n22 -->|"r=15"| n40
n22 -->|"r=15"| n41
n22 -->|"300"| n42
n22 -->|"r=10"| n43
n22 -.->|"0.7049"| n46
n22 -.->|"r=5"| n47
n22 -.->|"r=5"| n48
n22 -.->|"2.196"| n49
n22 -.->|"r=5"| n50
n22 -.->|"r=5"| n51
n22 -.->|"1.843"| n52
n22 -.->|"r=5"| n65
n22 -.->|"r=5"| n67
n22 -.->|"r=25"| n68
n22 -.->|"r=25"| n69
n22 -.->|"r=20"| n70
n22 -.->|"r=5"| n71
n22 -.->|"r=5"| n72
n22 -.->|"5.929"| n73
n22 -.->|"r=5"| n74
n22 -.->|"r=5"| n75
n22 -.->|"r=5"| n76
n22 -.->|"r=4"| n80
n22 -.->|"r=4"| n81
n22 -.->|"r=4"| n82
n22 -.->|"0.04964"| n83
n22 -.->|"r=4"| n84
n22 -.->|"r=4"| n85
n22 -.->|"136.4"| n86
n22 -.->|"r=50"| n87
n22 -.->|"r=50"| n88
n22 -.->|"38.17"| n97
n22 -.->|"12.41"| n98
n22 -.->|"r=8"| n99
n22 -.->|"r=8"| n100
n22 -.->|"r=2"| n111
n22 -.->|"r=2"| n114
n22 -.->|"r=5"| n124
n22 -.->|"r=5"| n125
n22 -.->|"0.3721"| n126
n22 -.->|"10.35"| n129
n23 -.->|"r=10"| n59
n23 -.->|"4.136"| n60
n23 -.->|"r=20"| n61
n25 -->|"r=5"| n36
n25 -->|"r=5"| n37
n25 -->|"r=5"| n38
n25 -->|"r=5"| n39
n25 -->|"r=10"| n40
n25 -->|"r=10"| n41
n25 -->|"200"| n42
n25 -->|"r=10"| n43
n25 -.->|"11.51"| n129
n25 -.->|"r=10"| n130
n25 -.->|"r=10"| n131
n28 -->|"r=5"| n62
n28 -->|"r=5"| n63
n28 -->|"r=5"| n64
n29 -->|"r=5"| n38
n29 -->|"r=5"| n39
n29 -->|"r=5"| n41
n29 -.->|"124"| n86
n29 -.->|"r=50"| n87
n29 -.->|"r=50"| n88
n29 -.->|"r=5"| n99
n29 -.->|"r=5"| n101
n29 -->|"r=30"| n117
n29 -->|"r=30"| n120
n29 -.->|"34.52"| n129
n29 -.->|"r=30"| n130
n29 -.->|"r=30"| n131
n29 -.->|"r=1"| n132
n29 -.->|"r=1"| n133
n29 -.->|"r=1"| n134
n31 -.->|"r=30"| n44
n31 -.->|"r=30"| n45
n31 -.->|"1.41"| n46
n31 -.->|"r=30"| n59
n31 -.->|"5.515"| n60
n31 -.->|"r=40"| n61
n31 -.->|"r=10"| n92
n31 -.->|"0.4136"| n93
n31 -.->|"r=10"| n94
n31 -.->|"0.1034"| n127
n31 -.->|"r=20"| n128
n33 -->|"r=4"| n36
n33 -->|"r=4"| n38
n33 -->|"r=4"| n40
n33 -->|"r=4"| n41
n33 -->|"80"| n42
n33 -.->|"r=15"| n47
n33 -.->|"r=15"| n48
n33 -.->|"6.589"| n49
n33 -.->|"r=15"| n50
n33 -.->|"r=15"| n51
n33 -.->|"5.529"| n52
n33 -.->|"r=2"| n65
n33 -.->|"r=2"| n67
n33 -.->|"r=2"| n68
n33 -.->|"r=2"| n69
n33 -.->|"r=15"| n71
n33 -.->|"r=15"| n72
n33 -.->|"17.79"| n73
n33 -.->|"r=15"| n74
n33 -.->|"r=15"| n75
n33 -.->|"r=15"| n76
n33 -.->|"r=5"| n77
n33 -.->|"r=5"| n78
n33 -.->|"r=5"| n79
n33 -.->|"r=10"| n80
n33 -.->|"r=10"| n81
n33 -.->|"r=10"| n82
n33 -.->|"0.1241"| n83
n33 -.->|"r=10"| n84
n33 -.->|"r=10"| n85
n33 -.->|"9.919"| n86
n33 -.->|"r=5"| n88
n33 -.->|"0.2068"| n93
n33 -.->|"r=5"| n94
n33 -.->|"r=4"| n102
n33 -.->|"r=4"| n103
n33 -.->|"r=4"| n105
n33 -.->|"r=4"| n106
n33 -.->|"r=2"| n112
n33 -.->|"r=2"| n113
n33 -.->|"r=2"| n115
n33 -.->|"r=2"| n116
n33 -.->|"5.284"| n122
n33 -.->|"r=5"| n123
n33 -.->|"r=15"| n124
n33 -.->|"r=15"| n125
n33 -.->|"1.116"| n126
n34 -.->|"r=5"| n47
n34 -.->|"2.196"| n49
n34 -.->|"r=5"| n50
n34 -.->|"1.843"| n52
n34 -->|"r=5"| n56
n34 -->|"r=7"| n62
n34 -->|"r=5"| n63
n34 -.->|"r=5"| n71
n34 -.->|"5.929"| n73
n34 -.->|"r=5"| n74
n34 -.->|"r=5"| n76
n34 -.->|"r=1"| n77
n34 -.->|"r=8"| n80
n34 -.->|"r=5"| n81
n34 -.->|"0.09927"| n83
n34 -.->|"r=5"| n84
n34 -.->|"r=5"| n89
n34 -.->|"50.84"| n91
n34 -.->|"16.27"| n109
n34 -.->|"r=5"| n124
n34 -.->|"0.3721"| n126
n35 -.->|"r=30"| n67
n35 -.->|"r=30"| n92
n35 -.->|"1.241"| n93
n35 -.->|"r=30"| n94
n35 -.->|"r=8"| n100
n35 -->|"r=40"| n118
n35 -->|"r=20"| n119
n35 -.->|"r=10"| n128
n36 -->|"r=10"| n0
n36 -->|"r=20"| n1
n37 -->|"r=10"| n0
n37 -->|"r=20"| n1
n38 -->|"r=10"| n1
n38 -->|"r=20"| n32
n39 -->|"r=10"| n1
n39 -->|"r=20"| n32
n40 -->|"r=10"| n0
n40 -->|"r=40"| n1
n41 -->|"r=10"| n0
n41 -->|"r=20"| n1
n41 -->|"r=20"| n32
n42 -->|"1000"| n1
n43 -->|"r=50"| n1
n44 -.->|"r=90"| n11
n45 -.->|"r=140"| n11
n46 -.->|"7.049"| n11
n47 -.->|"r=115"| n4
n48 -.->|"r=115"| n4
n49 -.->|"49.2"| n4
n50 -.->|"r=90"| n5
n51 -.->|"r=90"| n5
n52 -.->|"33.17"| n5
n53 -->|"r=0.25"| n3
n53 -->|"r=3"| n10
n53 -->|"r=0.25"| n14
n53 -->|"r=5"| n16
n53 -->|"r=0.25"| n20
n53 -->|"r=4"| n21
n53 -->|"r=0.25"| n26
n53 -->|"r=0.5"| n35
n54 -->|"r=0.25"| n3
n54 -->|"r=3"| n10
n54 -->|"r=0.25"| n14
n54 -->|"r=5"| n16
n54 -->|"r=0.25"| n20
n54 -->|"r=4"| n21
n54 -->|"r=0.25"| n26
n54 -->|"r=0.5"| n35
n55 -->|"r=100"| n10
n56 -->|"r=100"| n10
n57 -->|"r=90"| n10
n58 -.->|"r=60"| n6
n59 -.->|"r=80"| n9
n60 -.->|"20.68"| n9
n61 -.->|"r=110"| n9
n62 -->|"r=100"| n12
n63 -->|"r=100"| n12
n64 -->|"r=100"| n12
n65 -.->|"r=40"| n15
n65 -->|"r=30"| n24
n66 -.->|"r=40"| n15
n66 -->|"r=30"| n24
n67 -.->|"r=10"| n15
n67 -->|"r=30"| n24
n68 -.->|"r=90"| n15
n68 -->|"r=10"| n24
n69 -.->|"r=100"| n15
n70 -.->|"r=100"| n15
n71 -.->|"r=90"| n18
n72 -.->|"r=90"| n18
n73 -.->|"106.7"| n18
n74 -.->|"r=90"| n19
n75 -.->|"r=90"| n19
n76 -.->|"r=90"| n19
n77 -->|"r=25"| n10
n77 -.->|"r=5"| n11
n77 -->|"r=35"| n21
n78 -->|"r=25"| n10
n78 -.->|"r=5"| n11
n78 -->|"r=35"| n21
n79 -->|"r=25"| n10
n79 -.->|"r=5"| n11
n79 -->|"r=35"| n21
n80 -->|"r=20"| n17
n80 -.->|"r=60"| n35
n81 -->|"r=20"| n17
n81 -.->|"r=60"| n35
n82 -->|"r=20"| n17
n82 -.->|"r=60"| n35
n83 -.->|"1.241"| n35
n84 -.->|"r=100"| n35
n85 -.->|"r=100"| n35
n86 -.->|"297.6"| n8
n87 -.->|"r=120"| n8
n88 -.->|"r=120"| n8
n89 -.->|"r=100"| n22
n90 -.->|"r=100"| n22
n91 -.->|"508.4"| n22
n92 -.->|"r=100"| n23
n93 -.->|"4.136"| n23
n94 -.->|"r=100"| n23
n95 -.->|"r=50"| n7
n96 -.->|"r=25"| n7
n97 -.->|"152.7"| n7
n98 -.->|"77.55"| n34
n99 -.->|"r=65"| n34
n100 -.->|"r=60"| n34
n101 -.->|"r=60"| n34
n102 -->|"r=15"| n13
n102 -.->|"r=80"| n16
n102 -->|"r=2"| n30
n103 -->|"r=15"| n13
n103 -.->|"r=80"| n16
n103 -->|"r=2"| n30
n104 -->|"r=15"| n13
n104 -.->|"r=80"| n16
n104 -->|"r=2"| n30
n105 -.->|"r=100"| n16
n106 -.->|"r=100"| n16
n107 -.->|"r=100"| n16
n108 -.->|"r=65"| n25
n109 -.->|"211.5"| n25
n110 -.->|"r=50"| n25
n111 -.->|"r=50"| n16
n111 -->|"r=10"| n20
n112 -.->|"r=50"| n16
n112 -->|"r=10"| n20
n113 -.->|"r=50"| n16
n113 -->|"r=10"| n20
n114 -.->|"r=55"| n16
n114 -->|"r=4"| n30
n115 -.->|"r=55"| n16
n115 -->|"r=4"| n30
n116 -.->|"r=55"| n16
n116 -->|"r=4"| n30
n117 -->|"r=80"| n28
n118 -->|"r=40"| n2
n119 -->|"r=70"| n2
n120 -->|"r=65"| n28
n121 -.->|"r=150"| n29
n122 -.->|"158.5"| n29
n123 -.->|"r=150"| n29
n124 -.->|"r=100"| n31
n125 -.->|"r=100"| n31
n126 -.->|"7.442"| n31
n127 -.->|"0.4136"| n6
n128 -.->|"r=70"| n6
n128 -->|"r=30"| n27
n129 -.->|"126.6"| n33
n130 -.->|"r=110"| n33
n131 -.->|"r=110"| n33
n132 -->|"r=40"| n26
n132 -.->|"r=2"| n34
n133 -->|"r=40"| n26
n133 -.->|"r=2"| n34
n134 -->|"r=40"| n26
n134 -.->|"r=2"| n34
class n4,n5,n6,n7,n8,n9,n11,n15,n16,n18,n19,n22,n23,n25,n29,n31,n33,n34,n35,n44,n45,n46,n47,n48,n49,n50,n51,n52,n58,n59,n60,n61,n65,n66,n67,n68,n69,n70,n71,n72,n73,n74,n75,n76,n77,n78,n79,n80,n81,n82,n83,n84,n85,n86,n87,n88,n89,n90,n91,n92,n93,n94,n95,n96,n97,n98,n99,n100,n101,n102,n103,n104,n105,n106,n107,n108,n109,n110,n111,n112,n113,n114,n115,n116,n121,n122,n123,n124,n125,n126,n127,n128,n129,n130,n131,n132,n133,n134 cyclic
class n47,n48,n49,n50,n51,n52,n62,n63,n64,n71,n72,n73,n74,n75,n76,n80,n81,n82,n83,n84,n85,n89,n90,n91,n108,n109,n110,n124,n125,n126 resource
class n42,n46,n49,n52,n60,n73,n83,n86,n91,n93,n97,n98,n109,n122,n126,n127,n129 active
classDef cyclic stroke:#d97706,stroke-width:2px
classDef resource fill:#dcfce7,stroke:#15803d
classDef active fill:#dbeafe,stroke:#1d4ed8