Files
LithosAnanake/docs/fig_feedback_loops.svg

423 lines
26 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: feedback_loops Pages: 1 -->
<svg width="2265pt" height="375pt"
viewBox="0.00 0.00 2265.44 375.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 371)">
<title>feedback_loops</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-371 2261.44,-371 2261.44,4 -4,4"/>
<text text-anchor="middle" x="1128.72" y="-350.2" font-family="Helvetica Bold" font-size="16.00">StarForth Feedback Loops: Interactions and Classifications</text>
<!-- exec_event -->
<g id="node1" class="node">
<title>exec_event</title>
<ellipse fill="yellow" stroke="black" cx="59.4" cy="-126" rx="59.29" ry="26.74"/>
<text text-anchor="middle" x="59.4" y="-129.8" font-family="Helvetica,sans-Serif" font-size="14.00">Execution</text>
<text text-anchor="middle" x="59.4" y="-114.8" font-family="Helvetica,sans-Serif" font-size="14.00">Event</text>
</g>
<!-- loop1 -->
<g id="node2" class="node">
<title>loop1</title>
<polygon fill="#ffcdd2" stroke="black" points="277.29,-272.5 156.29,-272.5 156.29,-219.5 277.29,-219.5 277.29,-272.5"/>
<text text-anchor="middle" x="216.79" y="-257.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #1:</text>
<text text-anchor="middle" x="216.79" y="-242.3" font-family="Helvetica,sans-Serif" font-size="14.00">Execution Heat</text>
<text text-anchor="middle" x="216.79" y="-227.3" font-family="Helvetica,sans-Serif" font-size="14.00">Tracking</text>
</g>
<!-- exec_event&#45;&gt;loop1 -->
<g id="edge1" class="edge">
<title>exec_event&#45;&gt;loop1</title>
<path fill="none" stroke="black" d="M85.32,-150.39C99.84,-164.1 118.78,-181.19 136.79,-195 145.14,-201.4 154.29,-207.8 163.31,-213.81"/>
<polygon fill="black" stroke="black" points="161.6,-216.88 171.88,-219.43 165.44,-211.02 161.6,-216.88"/>
</g>
<!-- loop2 -->
<g id="node6" class="node">
<title>loop2</title>
<polygon fill="#e0e0e0" stroke="black" points="277.79,-152.5 155.79,-152.5 155.79,-99.5 277.79,-99.5 277.79,-152.5"/>
<text text-anchor="middle" x="216.79" y="-137.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #2:</text>
<text text-anchor="middle" x="216.79" y="-122.3" font-family="Helvetica,sans-Serif" font-size="14.00">Rolling Window</text>
<text text-anchor="middle" x="216.79" y="-107.3" font-family="Helvetica,sans-Serif" font-size="14.00">History</text>
</g>
<!-- exec_event&#45;&gt;loop2 -->
<g id="edge6" class="edge">
<title>exec_event&#45;&gt;loop2</title>
<path fill="none" stroke="black" d="M119.15,-126C127.73,-126 136.65,-126 145.44,-126"/>
<polygon fill="black" stroke="black" points="145.67,-129.5 155.67,-126 145.67,-122.5 145.67,-129.5"/>
</g>
<!-- loop4 -->
<g id="node12" class="node">
<title>loop4</title>
<polygon fill="#ffcdd2" stroke="black" points="258.79,-81.5 174.79,-81.5 174.79,-28.5 258.79,-28.5 258.79,-81.5"/>
<text text-anchor="middle" x="216.79" y="-66.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #4:</text>
<text text-anchor="middle" x="216.79" y="-51.3" font-family="Helvetica,sans-Serif" font-size="14.00">Pipelining</text>
<text text-anchor="middle" x="216.79" y="-36.3" font-family="Helvetica,sans-Serif" font-size="14.00">Metrics</text>
</g>
<!-- exec_event&#45;&gt;loop4 -->
<g id="edge13" class="edge">
<title>exec_event&#45;&gt;loop4</title>
<path fill="none" stroke="black" d="M102.04,-106.97C121.53,-98.07 144.91,-87.39 165.39,-78.03"/>
<polygon fill="black" stroke="black" points="166.93,-81.17 174.57,-73.83 164.02,-74.81 166.93,-81.17"/>
</g>
<!-- freq_inc -->
<g id="node3" class="node">
<title>freq_inc</title>
<polygon fill="none" stroke="black" points="402.79,-276 314.79,-276 314.79,-238 402.79,-238 402.79,-276"/>
<text text-anchor="middle" x="358.79" y="-260.8" font-family="Helvetica,sans-Serif" font-size="14.00">Frequency</text>
<text text-anchor="middle" x="358.79" y="-245.8" font-family="Helvetica,sans-Serif" font-size="14.00">Increment</text>
</g>
<!-- loop1&#45;&gt;freq_inc -->
<g id="edge2" class="edge">
<title>loop1&#45;&gt;freq_inc</title>
<path fill="none" stroke="black" d="M277.57,-250.7C286.55,-251.4 295.75,-252.13 304.57,-252.82"/>
<polygon fill="black" stroke="black" points="304.48,-256.32 314.72,-253.62 305.03,-249.34 304.48,-256.32"/>
</g>
<!-- cache_rank -->
<g id="node4" class="node">
<title>cache_rank</title>
<polygon fill="none" stroke="black" points="516.29,-247 448.29,-247 448.29,-209 516.29,-209 516.29,-247"/>
<text text-anchor="middle" x="482.29" y="-231.8" font-family="Helvetica,sans-Serif" font-size="14.00">Cache</text>
<text text-anchor="middle" x="482.29" y="-216.8" font-family="Helvetica,sans-Serif" font-size="14.00">Rank ↑</text>
</g>
<!-- freq_inc&#45;&gt;cache_rank -->
<g id="edge3" class="edge">
<title>freq_inc&#45;&gt;cache_rank</title>
<path fill="none" stroke="black" d="M402.97,-246.69C414.47,-243.95 426.89,-240.98 438.38,-238.24"/>
<polygon fill="black" stroke="black" points="439.27,-241.63 448.19,-235.9 437.65,-234.82 439.27,-241.63"/>
</g>
<!-- loop3 -->
<g id="node9" class="node">
<title>loop3</title>
<polygon fill="#c8e6c9" stroke="black" points="1772.44,-341 1665.44,-341 1665.44,-303 1772.44,-303 1772.44,-341"/>
<text text-anchor="middle" x="1718.94" y="-325.8" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #3:</text>
<text text-anchor="middle" x="1718.94" y="-310.8" font-family="Helvetica,sans-Serif" font-size="14.00">Linear Decay</text>
</g>
<!-- freq_inc&#45;&gt;loop3 -->
<g id="edge9" class="edge">
<title>freq_inc&#45;&gt;loop3</title>
<path fill="none" stroke="black" d="M382.8,-276.31C406.08,-293.85 443.89,-317 481.29,-317 481.29,-317 481.29,-317 1532.44,-317 1573.19,-317 1618.97,-318.22 1654.85,-319.46"/>
<polygon fill="black" stroke="black" points="1655.06,-322.97 1665.17,-319.82 1655.3,-315.97 1655.06,-322.97"/>
</g>
<!-- lookup_fast -->
<g id="node5" class="node">
<title>lookup_fast</title>
<polygon fill="none" stroke="black" points="658.29,-244 581.29,-244 581.29,-206 658.29,-206 658.29,-244"/>
<text text-anchor="middle" x="619.79" y="-228.8" font-family="Helvetica,sans-Serif" font-size="14.00">Lookup</text>
<text text-anchor="middle" x="619.79" y="-213.8" font-family="Helvetica,sans-Serif" font-size="14.00">Speed ↑</text>
</g>
<!-- cache_rank&#45;&gt;lookup_fast -->
<g id="edge4" class="edge">
<title>cache_rank&#45;&gt;lookup_fast</title>
<path fill="none" stroke="black" d="M516.44,-227.27C532.89,-226.9 553.06,-226.46 571.14,-226.06"/>
<polygon fill="black" stroke="black" points="571.29,-229.55 581.21,-225.83 571.13,-222.55 571.29,-229.55"/>
</g>
<!-- lookup_fast&#45;&gt;exec_event -->
<g id="edge5" class="edge">
<title>lookup_fast&#45;&gt;exec_event</title>
<path fill="none" stroke="red" stroke-width="2" d="M581.59,-205.96C554.93,-194.07 517.8,-181 483.29,-181 215.79,-181 215.79,-181 215.79,-181 177.28,-181 136.31,-165.8 106.12,-151.38"/>
<polygon fill="red" stroke="red" stroke-width="2" points="107.63,-148.22 97.11,-146.95 104.54,-154.5 107.63,-148.22"/>
<text text-anchor="middle" x="358.79" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00">positive</text>
<text text-anchor="middle" x="358.79" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">feedback</text>
</g>
<!-- record -->
<g id="node7" class="node">
<title>record</title>
<polygon fill="none" stroke="black" points="391.79,-145 325.79,-145 325.79,-107 391.79,-107 391.79,-145"/>
<text text-anchor="middle" x="358.79" y="-129.8" font-family="Helvetica,sans-Serif" font-size="14.00">Record</text>
<text text-anchor="middle" x="358.79" y="-114.8" font-family="Helvetica,sans-Serif" font-size="14.00">History</text>
</g>
<!-- loop2&#45;&gt;record -->
<g id="edge7" class="edge">
<title>loop2&#45;&gt;record</title>
<path fill="none" stroke="black" d="M277.98,-126C290.59,-126 303.63,-126 315.43,-126"/>
<polygon fill="black" stroke="black" points="315.43,-129.5 325.43,-126 315.43,-122.5 315.43,-129.5"/>
</g>
<!-- history_db -->
<g id="node8" class="node">
<title>history_db</title>
<polygon fill="none" stroke="black" points="522.79,-145 441.79,-145 441.79,-107 522.79,-107 522.79,-145"/>
<text text-anchor="middle" x="482.29" y="-129.8" font-family="Helvetica,sans-Serif" font-size="14.00">Historical</text>
<text text-anchor="middle" x="482.29" y="-114.8" font-family="Helvetica,sans-Serif" font-size="14.00">Data</text>
</g>
<!-- record&#45;&gt;history_db -->
<g id="edge8" class="edge">
<title>record&#45;&gt;history_db</title>
<path fill="none" stroke="black" d="M392.03,-126C404.14,-126 418.19,-126 431.51,-126"/>
<polygon fill="black" stroke="black" points="431.52,-129.5 441.52,-126 431.52,-122.5 431.52,-129.5"/>
</g>
<!-- loop5 -->
<g id="node16" class="node">
<title>loop5</title>
<polygon fill="#c8e6c9" stroke="black" points="677.79,-183.5 561.79,-183.5 561.79,-130.5 677.79,-130.5 677.79,-183.5"/>
<text text-anchor="middle" x="619.79" y="-168.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #5:</text>
<text text-anchor="middle" x="619.79" y="-153.3" font-family="Helvetica,sans-Serif" font-size="14.00">Window Width</text>
<text text-anchor="middle" x="619.79" y="-138.3" font-family="Helvetica,sans-Serif" font-size="14.00">Inference</text>
</g>
<!-- history_db&#45;&gt;loop5 -->
<g id="edge18" class="edge">
<title>history_db&#45;&gt;loop5</title>
<path fill="none" stroke="black" d="M522.85,-135.05C531.93,-137.13 541.83,-139.39 551.72,-141.65"/>
<polygon fill="black" stroke="black" points="551.04,-145.09 561.57,-143.91 552.6,-138.26 551.04,-145.09"/>
</g>
<!-- loop6 -->
<g id="node20" class="node">
<title>loop6</title>
<polygon fill="#c8e6c9" stroke="black" points="1769.94,-112.5 1667.94,-112.5 1667.94,-59.5 1769.94,-59.5 1769.94,-112.5"/>
<text text-anchor="middle" x="1718.94" y="-97.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #6:</text>
<text text-anchor="middle" x="1718.94" y="-82.3" font-family="Helvetica,sans-Serif" font-size="14.00">Decay Slope</text>
<text text-anchor="middle" x="1718.94" y="-67.3" font-family="Helvetica,sans-Serif" font-size="14.00">Inference</text>
</g>
<!-- history_db&#45;&gt;loop6 -->
<g id="edge23" class="edge">
<title>history_db&#45;&gt;loop6</title>
<path fill="none" stroke="black" d="M522.62,-106.97C549.15,-95.85 585.3,-84 618.79,-84 618.79,-84 618.79,-84 1532.44,-84 1574.06,-84 1620.94,-84.51 1657.15,-85.01"/>
<polygon fill="black" stroke="black" points="1657.5,-88.52 1667.55,-85.16 1657.6,-81.52 1657.5,-88.52"/>
</g>
<!-- decay_apply -->
<g id="node10" class="node">
<title>decay_apply</title>
<polygon fill="none" stroke="black" points="1903.44,-341 1809.44,-341 1809.44,-303 1903.44,-303 1903.44,-341"/>
<text text-anchor="middle" x="1856.44" y="-325.8" font-family="Helvetica,sans-Serif" font-size="14.00">Decay</text>
<text text-anchor="middle" x="1856.44" y="-310.8" font-family="Helvetica,sans-Serif" font-size="14.00">Application</text>
</g>
<!-- loop3&#45;&gt;decay_apply -->
<g id="edge10" class="edge">
<title>loop3&#45;&gt;decay_apply</title>
<path fill="none" stroke="black" d="M1772.71,-322C1781.37,-322 1790.36,-322 1799.1,-322"/>
<polygon fill="black" stroke="black" points="1799.19,-325.5 1809.19,-322 1799.19,-318.5 1799.19,-325.5"/>
</g>
<!-- freq_reduce -->
<g id="node11" class="node">
<title>freq_reduce</title>
<polygon fill="none" stroke="black" points="2099.44,-312 2011.44,-312 2011.44,-274 2099.44,-274 2099.44,-312"/>
<text text-anchor="middle" x="2055.44" y="-296.8" font-family="Helvetica,sans-Serif" font-size="14.00">Frequency</text>
<text text-anchor="middle" x="2055.44" y="-281.8" font-family="Helvetica,sans-Serif" font-size="14.00">Reduction</text>
</g>
<!-- decay_apply&#45;&gt;freq_reduce -->
<g id="edge11" class="edge">
<title>decay_apply&#45;&gt;freq_reduce</title>
<path fill="none" stroke="black" d="M1903.62,-315.2C1932.85,-310.9 1970.72,-305.32 2001.21,-300.84"/>
<polygon fill="black" stroke="black" points="2001.85,-304.28 2011.24,-299.36 2000.83,-297.35 2001.85,-304.28"/>
</g>
<!-- freq_reduce&#45;&gt;freq_inc -->
<g id="edge12" class="edge">
<title>freq_reduce&#45;&gt;freq_inc</title>
<path fill="none" stroke="blue" stroke-width="2" d="M2011.11,-286.75C1971.27,-281.56 1910.5,-275 1857.44,-275 481.29,-275 481.29,-275 481.29,-275 458.75,-275 434.11,-271.93 412.95,-268.33"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="413.32,-264.84 402.86,-266.53 412.09,-271.73 413.32,-264.84"/>
<text text-anchor="middle" x="1105.79" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00">negative</text>
<text text-anchor="middle" x="1105.79" y="-278" font-family="Helvetica,sans-Serif" font-size="10.00">feedback</text>
</g>
<!-- trans_rec -->
<g id="node13" class="node">
<title>trans_rec</title>
<polygon fill="none" stroke="black" points="400.79,-78 316.79,-78 316.79,-40 400.79,-40 400.79,-78"/>
<text text-anchor="middle" x="358.79" y="-62.8" font-family="Helvetica,sans-Serif" font-size="14.00">Transition</text>
<text text-anchor="middle" x="358.79" y="-47.8" font-family="Helvetica,sans-Serif" font-size="14.00">Record</text>
</g>
<!-- loop4&#45;&gt;trans_rec -->
<g id="edge14" class="edge">
<title>loop4&#45;&gt;trans_rec</title>
<path fill="none" stroke="black" d="M259.04,-56.18C273.86,-56.6 290.76,-57.08 306.34,-57.53"/>
<polygon fill="black" stroke="black" points="306.26,-61.03 316.36,-57.82 306.46,-54.03 306.26,-61.03"/>
</g>
<!-- pred_improve -->
<g id="node14" class="node">
<title>pred_improve</title>
<polygon fill="none" stroke="black" points="524.79,-72 439.79,-72 439.79,-34 524.79,-34 524.79,-72"/>
<text text-anchor="middle" x="482.29" y="-56.8" font-family="Helvetica,sans-Serif" font-size="14.00">Prediction</text>
<text text-anchor="middle" x="482.29" y="-41.8" font-family="Helvetica,sans-Serif" font-size="14.00">Improve</text>
</g>
<!-- trans_rec&#45;&gt;pred_improve -->
<g id="edge15" class="edge">
<title>trans_rec&#45;&gt;pred_improve</title>
<path fill="none" stroke="black" d="M400.93,-56.97C410.13,-56.51 420,-56.03 429.57,-55.55"/>
<polygon fill="black" stroke="black" points="429.97,-59.04 439.79,-55.05 429.63,-52.05 429.97,-59.04"/>
</g>
<!-- prefetch_hit -->
<g id="node15" class="node">
<title>prefetch_hit</title>
<polygon fill="none" stroke="black" points="656.79,-38 582.79,-38 582.79,0 656.79,0 656.79,-38"/>
<text text-anchor="middle" x="619.79" y="-22.8" font-family="Helvetica,sans-Serif" font-size="14.00">Prefetch</text>
<text text-anchor="middle" x="619.79" y="-7.8" font-family="Helvetica,sans-Serif" font-size="14.00">Hit ↑</text>
</g>
<!-- pred_improve&#45;&gt;prefetch_hit -->
<g id="edge16" class="edge">
<title>pred_improve&#45;&gt;prefetch_hit</title>
<path fill="none" stroke="black" d="M525.05,-42.52C540.11,-38.74 557.18,-34.46 572.59,-30.59"/>
<polygon fill="black" stroke="black" points="573.59,-33.95 582.44,-28.12 571.89,-27.16 573.59,-33.95"/>
</g>
<!-- prefetch_hit&#45;&gt;exec_event -->
<g id="edge17" class="edge">
<title>prefetch_hit&#45;&gt;exec_event</title>
<path fill="none" stroke="red" stroke-width="2" d="M582.75,-11.16C555.56,-5.93 517.26,0 483.29,0 215.79,0 215.79,0 215.79,0 157.43,0 108.74,-54.28 82.16,-91.59"/>
<polygon fill="red" stroke="red" stroke-width="2" points="79.02,-89.98 76.2,-100.2 84.77,-93.97 79.02,-89.98"/>
<text text-anchor="middle" x="358.79" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">positive</text>
<text text-anchor="middle" x="358.79" y="-3" font-family="Helvetica,sans-Serif" font-size="10.00">feedback</text>
</g>
<!-- var_detect -->
<g id="node17" class="node">
<title>var_detect</title>
<polygon fill="none" stroke="black" points="797.79,-176 714.79,-176 714.79,-138 797.79,-138 797.79,-176"/>
<text text-anchor="middle" x="756.29" y="-160.8" font-family="Helvetica,sans-Serif" font-size="14.00">Variance</text>
<text text-anchor="middle" x="756.29" y="-145.8" font-family="Helvetica,sans-Serif" font-size="14.00">Detection</text>
</g>
<!-- loop5&#45;&gt;var_detect -->
<g id="edge19" class="edge">
<title>loop5&#45;&gt;var_detect</title>
<path fill="none" stroke="black" d="M677.83,-157C686.59,-157 695.58,-157 704.2,-157"/>
<polygon fill="black" stroke="black" points="704.48,-160.5 714.48,-157 704.48,-153.5 704.48,-160.5"/>
</g>
<!-- window_shrink -->
<g id="node18" class="node">
<title>window_shrink</title>
<polygon fill="none" stroke="black" points="935.79,-150 864.79,-150 864.79,-112 935.79,-112 935.79,-150"/>
<text text-anchor="middle" x="900.29" y="-134.8" font-family="Helvetica,sans-Serif" font-size="14.00">Window</text>
<text text-anchor="middle" x="900.29" y="-119.8" font-family="Helvetica,sans-Serif" font-size="14.00">Shrink</text>
</g>
<!-- var_detect&#45;&gt;window_shrink -->
<g id="edge20" class="edge">
<title>var_detect&#45;&gt;window_shrink</title>
<path fill="none" stroke="black" d="M797.99,-149.55C815.61,-146.32 836.29,-142.54 854.36,-139.23"/>
<polygon fill="black" stroke="black" points="855.17,-142.64 864.37,-137.39 853.91,-135.75 855.17,-142.64"/>
<text text-anchor="middle" x="831.29" y="-148" font-family="Helvetica,sans-Serif" font-size="10.00">if σ² ↑</text>
</g>
<!-- var_reduce -->
<g id="node19" class="node">
<title>var_reduce</title>
<polygon fill="none" stroke="black" points="1064.79,-178 972.79,-178 972.79,-142 1064.79,-142 1064.79,-178"/>
<text text-anchor="middle" x="1018.79" y="-156.3" font-family="Helvetica,sans-Serif" font-size="14.00">Variance ↓</text>
</g>
<!-- window_shrink&#45;&gt;var_reduce -->
<g id="edge21" class="edge">
<title>window_shrink&#45;&gt;var_reduce</title>
<path fill="none" stroke="black" d="M935.93,-139.62C944.4,-141.73 953.68,-144.04 962.84,-146.32"/>
<polygon fill="black" stroke="black" points="962.15,-149.76 972.7,-148.78 963.84,-142.96 962.15,-149.76"/>
</g>
<!-- var_reduce&#45;&gt;var_detect -->
<g id="edge22" class="edge">
<title>var_reduce&#45;&gt;var_detect</title>
<path fill="none" stroke="blue" stroke-width="2" d="M972.46,-160.66C931.51,-161.1 869.61,-161.38 815.79,-160 813.26,-159.94 810.66,-159.85 808.04,-159.76"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="808.01,-156.26 797.88,-159.35 807.73,-163.25 808.01,-156.26"/>
<text text-anchor="middle" x="900.29" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">negative</text>
<text text-anchor="middle" x="900.29" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">feedback</text>
</g>
<!-- loop7 -->
<g id="node24" class="node">
<title>loop7</title>
<polygon fill="#e1bee7" stroke="black" points="1282.27,-143.17 1282.27,-176.83 1243.81,-200.62 1189.42,-200.62 1150.96,-176.83 1150.96,-143.17 1189.42,-119.38 1243.81,-119.38 1282.27,-143.17"/>
<polygon fill="none" stroke="black" points="1286.26,-140.94 1286.26,-179.06 1244.94,-204.63 1188.29,-204.63 1146.97,-179.06 1146.97,-140.94 1188.29,-115.37 1244.94,-115.37 1286.26,-140.94"/>
<text text-anchor="middle" x="1216.62" y="-171.3" font-family="Helvetica,sans-Serif" font-size="14.00">Loop #7:</text>
<text text-anchor="middle" x="1216.62" y="-156.3" font-family="Helvetica,sans-Serif" font-size="14.00">Adaptive</text>
<text text-anchor="middle" x="1216.62" y="-141.3" font-family="Helvetica,sans-Serif" font-size="14.00">Heartbeat</text>
</g>
<!-- var_reduce&#45;&gt;loop7 -->
<g id="edge28" class="edge">
<title>var_reduce&#45;&gt;loop7</title>
<path fill="none" stroke="black" d="M1065.21,-160C1086.37,-160 1112.17,-160 1136.38,-160"/>
<polygon fill="black" stroke="black" points="1136.65,-163.5 1146.64,-160 1136.64,-156.5 1136.65,-163.5"/>
</g>
<!-- unstable_detect -->
<g id="node21" class="node">
<title>unstable_detect</title>
<polygon fill="none" stroke="black" points="1898.94,-105 1813.94,-105 1813.94,-67 1898.94,-67 1898.94,-105"/>
<text text-anchor="middle" x="1856.44" y="-89.8" font-family="Helvetica,sans-Serif" font-size="14.00">Instability</text>
<text text-anchor="middle" x="1856.44" y="-74.8" font-family="Helvetica,sans-Serif" font-size="14.00">Detection</text>
</g>
<!-- loop6&#45;&gt;unstable_detect -->
<g id="edge24" class="edge">
<title>loop6&#45;&gt;unstable_detect</title>
<path fill="none" stroke="black" d="M1770.01,-86C1780.86,-86 1792.37,-86 1803.3,-86"/>
<polygon fill="black" stroke="black" points="1803.57,-89.5 1813.57,-86 1803.57,-82.5 1803.57,-89.5"/>
</g>
<!-- lambda_increase -->
<g id="node22" class="node">
<title>lambda_increase</title>
<polygon fill="none" stroke="black" points="2119.44,-114 1991.44,-114 1991.44,-76 2119.44,-76 2119.44,-114"/>
<text text-anchor="middle" x="2055.44" y="-98.8" font-family="Helvetica,sans-Serif" font-size="14.00">λ ↑</text>
<text text-anchor="middle" x="2055.44" y="-83.8" font-family="Helvetica,sans-Serif" font-size="14.00">(Steeper Decay)</text>
</g>
<!-- unstable_detect&#45;&gt;lambda_increase -->
<g id="edge25" class="edge">
<title>unstable_detect&#45;&gt;lambda_increase</title>
<path fill="none" stroke="black" d="M1899.22,-87.91C1923.06,-89 1953.62,-90.39 1981.31,-91.66"/>
<polygon fill="black" stroke="black" points="1981.22,-95.16 1991.37,-92.12 1981.54,-88.17 1981.22,-95.16"/>
<text text-anchor="middle" x="1947.44" y="-94" font-family="Helvetica,sans-Serif" font-size="10.00">if unstable</text>
</g>
<!-- stabilize -->
<g id="node23" class="node">
<title>stabilize</title>
<polygon fill="none" stroke="black" points="2257.44,-113 2156.44,-113 2156.44,-77 2257.44,-77 2257.44,-113"/>
<text text-anchor="middle" x="2206.94" y="-91.3" font-family="Helvetica,sans-Serif" font-size="14.00">Stabilization</text>
</g>
<!-- lambda_increase&#45;&gt;stabilize -->
<g id="edge26" class="edge">
<title>lambda_increase&#45;&gt;stabilize</title>
<path fill="none" stroke="black" d="M2119.84,-95C2128.44,-95 2137.24,-95 2145.78,-95"/>
<polygon fill="black" stroke="black" points="2146.04,-98.5 2156.04,-95 2146.04,-91.5 2146.04,-98.5"/>
</g>
<!-- stabilize&#45;&gt;unstable_detect -->
<g id="edge27" class="edge">
<title>stabilize&#45;&gt;unstable_detect</title>
<path fill="none" stroke="blue" stroke-width="2" d="M2182.48,-76.88C2165.89,-65.25 2142.56,-51.2 2119.44,-45 2047.64,-25.74 1962.2,-47.08 1908.87,-65.47"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1907.56,-62.23 1899.3,-68.86 1909.9,-68.82 1907.56,-62.23"/>
<text text-anchor="middle" x="2055.44" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">negative</text>
<text text-anchor="middle" x="2055.44" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">feedback</text>
</g>
<!-- stabilize&#45;&gt;loop7 -->
<g id="edge29" class="edge">
<title>stabilize&#45;&gt;loop7</title>
<path fill="none" stroke="black" d="M2170.06,-113.04C2140.38,-126.29 2096.7,-142 2056.44,-142 1358.94,-142 1358.94,-142 1358.94,-142 1338.62,-142 1316.8,-143.85 1296.53,-146.37"/>
<polygon fill="black" stroke="black" points="1295.86,-142.93 1286.4,-147.7 1296.77,-149.87 1295.86,-142.93"/>
</g>
<!-- stability_mon -->
<g id="node25" class="node">
<title>stability_mon</title>
<polygon fill="none" stroke="black" points="1396.44,-208 1323.44,-208 1323.44,-170 1396.44,-170 1396.44,-208"/>
<text text-anchor="middle" x="1359.94" y="-192.8" font-family="Helvetica,sans-Serif" font-size="14.00">Stability</text>
<text text-anchor="middle" x="1359.94" y="-177.8" font-family="Helvetica,sans-Serif" font-size="14.00">Monitor</text>
</g>
<!-- loop7&#45;&gt;stability_mon -->
<g id="edge30" class="edge">
<title>loop7&#45;&gt;stability_mon</title>
<path fill="none" stroke="black" d="M1286.62,-174.16C1295.79,-176.04 1304.99,-177.93 1313.61,-179.7"/>
<polygon fill="black" stroke="black" points="1312.93,-183.13 1323.43,-181.71 1314.34,-176.27 1312.93,-183.13"/>
</g>
<!-- tick_adjust -->
<g id="node26" class="node">
<title>tick_adjust</title>
<polygon fill="none" stroke="black" points="1571.44,-241 1491.44,-241 1491.44,-203 1571.44,-203 1571.44,-241"/>
<text text-anchor="middle" x="1531.44" y="-225.8" font-family="Helvetica,sans-Serif" font-size="14.00">Tick Rate</text>
<text text-anchor="middle" x="1531.44" y="-210.8" font-family="Helvetica,sans-Serif" font-size="14.00">Adjust</text>
</g>
<!-- stability_mon&#45;&gt;tick_adjust -->
<g id="edge31" class="edge">
<title>stability_mon&#45;&gt;tick_adjust</title>
<path fill="none" stroke="black" d="M1396.56,-190.02C1418.89,-191.26 1448.14,-194 1473.44,-200 1476.1,-200.63 1478.81,-201.36 1481.53,-202.16"/>
<polygon fill="black" stroke="black" points="1480.73,-205.58 1491.32,-205.32 1482.88,-198.92 1480.73,-205.58"/>
<text text-anchor="middle" x="1443.94" y="-214" font-family="Helvetica,sans-Serif" font-size="10.00">if stable:</text>
<text text-anchor="middle" x="1443.94" y="-203" font-family="Helvetica,sans-Serif" font-size="10.00">slower ticks</text>
</g>
<!-- tick_adjust&#45;&gt;loop3 -->
<g id="edge32" class="edge">
<title>tick_adjust&#45;&gt;loop3</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1567.76,-241.04C1597.84,-257.26 1641.19,-280.63 1673.6,-298.1"/>
<polygon fill="black" stroke="black" points="1671.96,-301.19 1682.43,-302.86 1675.28,-295.03 1671.96,-301.19"/>
<text text-anchor="middle" x="1618.44" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">coordinates</text>
</g>
<!-- tick_adjust&#45;&gt;loop5 -->
<g id="edge33" class="edge">
<title>tick_adjust&#45;&gt;loop5</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1491.13,-227.09C1456.82,-231.1 1405.67,-236 1360.94,-236 755.29,-236 755.29,-236 755.29,-236 745.53,-236 704.05,-210.91 669.71,-189.01"/>
<polygon fill="black" stroke="black" points="671.46,-185.97 661.15,-183.53 667.68,-191.87 671.46,-185.97"/>
<text text-anchor="middle" x="1018.79" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">coordinates</text>
</g>
<!-- tick_adjust&#45;&gt;loop6 -->
<g id="edge34" class="edge">
<title>tick_adjust&#45;&gt;loop6</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1558.62,-202.8C1588.39,-180.98 1637.5,-144.97 1673.34,-118.7"/>
<polygon fill="black" stroke="black" points="1675.69,-121.31 1681.69,-112.58 1671.55,-115.67 1675.69,-121.31"/>
<text text-anchor="middle" x="1618.44" y="-181" font-family="Helvetica,sans-Serif" font-size="10.00">coordinates</text>
</g>
</g>
</svg>