Chain-Load: verify topology building -- and fix a Bug

...start with putting the topology generator to work

- turns out it is still challenging to write the ctrl-rules
- and one example tree looked odd in the visualisation
- which (on investigation) indicated unsound behaviour

...this is basically harmless, but involves an integer wrap-around
in a variable not used under this conditions (toReduce), but also
a rather accidental and no very logical round-up of the topology.

With this fix, the code branch here is no longer overloaded with two
distinct concerns, which I consider an improvement
This commit is contained in:
Fischlurch 2023-11-17 18:54:51 +01:00
parent 960c461bb4
commit 0686c534cf
3 changed files with 210 additions and 6 deletions

View file

@ -214,13 +214,17 @@ namespace test {
/** @test TODO diagnostic blah
/** @test flexible control of generated topology
* @todo WIP 11/23 🔁 define implement
*/
void
control_Topology()
{
UNIMPLEMENTED ("witch topology");
auto graph = TestChainLoad<32>{};
graph.expansionRule([](size_t h,double){ return Cap{8, h%16, 63}; })
.buildToplolgy()
.printTopologyDOT();
}

View file

@ -380,9 +380,9 @@ namespace test {
o->addSucc(n);
--toExpand;
}
if (not toReduce and spaceLeft())
{ // carry-on the chain from o
r = addNode();
if (not toReduce)
{ // carry-on chain from o
r = spaceLeft()? addNode():nullptr;
toReduce = apply (reductionRule_, o);
}
else

View file

@ -95869,6 +95869,192 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1700183517106" ID="ID_687886895" MODIFIED="1700183524969" TEXT="elaboriertere Beispiele ausknobeln">
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700239868140" ID="ID_843406714" MODIFIED="1700240245608" TEXT="Expansion">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1700240249941" ID="ID_716590019" MODIFIED="1700240269429" TEXT="Expansion, nicht zu stark">
<node CREATED="1700240273354" ID="ID_772066600" MODIFIED="1700240304981" TEXT="50% Wahrscheinlichkeit / aber nur 0..4">
<node CREATED="1700240311405" ID="ID_1906030756" MODIFIED="1700240701037" TEXT="l&#xe4;&#xdf;t sich darstellen als Cap{8, h%16, 39};">
<icon BUILTIN="idea"/>
<node CREATED="1700240363108" ID="ID_165867731" MODIFIED="1700240380072" TEXT="Zufallszahlen 0...15"/>
<node CREATED="1700240381468" ID="ID_818278803" MODIFIED="1700240503984" TEXT="davon Teilintervall [8,15] &#x27f6; expand"/>
<node CREATED="1700240533128" ID="ID_1628643806" MODIFIED="1700240574142" TEXT="aber ein 4-faches des Wertebereichs vorgeben">
<node CREATED="1700240584329" ID="ID_486684114" MODIFIED="1700240595281" TEXT="ist: 0...8"/>
<node CREATED="1700240595944" ID="ID_802836763" MODIFIED="1700240614409" TEXT="vorgabe: 0..32"/>
<node CREATED="1700240615402" ID="ID_1115126703" MODIFIED="1700240631670" TEXT="Plus Basis-Offset = +8 -1"/>
<node CREATED="1700240637390" ID="ID_1714076433" MODIFIED="1700240660547" TEXT="(-1 wegen 0-basierten Zufallszahlen)"/>
</node>
</node>
<node CREATED="1700240339333" ID="ID_1461707170" MODIFIED="1700243316977" TEXT="oh... kann man das einfacher schreiben">
<arrowlink COLOR="#fecdd2" DESTINATION="ID_697379621" ENDARROW="Default" ENDINCLINATION="41;-149;" ID="Arrow_ID_854594463" STARTARROW="None" STARTINCLINATION="-209;15;"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700241115502" ID="ID_1642968477" MODIFIED="1700243178651" TEXT="interessantes Verhalten bei Obergrenze=63">
<arrowlink DESTINATION="ID_1912448585" ENDARROW="Default" ENDINCLINATION="-223;14;" ID="Arrow_ID_485585873" STARTARROW="None" STARTINCLINATION="212;0;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1700241156981" ID="ID_649550616" MODIFIED="1700241176360" TEXT="also Cap{8, h%16, 63}"/>
<node CREATED="1700241132128" ID="ID_749124833" MODIFIED="1700241215884" TEXT="in der Tat war das erst mal eine Fehlparametrisierung">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
hatte den Basis-Offset von 8 &#252;bersehen, der ja sofort abgezogen wird, bevor das Fenster &#252;berhaupt zum Tragen kommt
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700241217185" ID="ID_739765930" MODIFIED="1700243154012" TEXT="Beobachtung: es wird auf Node(29) reduziert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700241237636" ID="ID_1113751237" MODIFIED="1700241246381" TEXT="nicht wie erwartet auf Node(30)"/>
<node CREATED="1700241356066" ID="ID_1549191779" MODIFIED="1700241595990" TEXT="N22 .. N25 bekommeno offensichtlich eine Expaosion=1"/>
<node CREATED="1700241379367" ID="ID_298199558" MODIFIED="1700241437040">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
aber nur N21,N23 und N24 k&#246;nnen die realisieren,
</p>
<p>
denn dann haben wir alle bis zur vorletzen N30 verbraucht
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1700241602165" ID="ID_1145606220" MODIFIED="1700241618075" TEXT="N25 wird aber an N29 angeh&#xe4;ngt">
<node CREATED="1700241654843" ID="ID_693027416" MODIFIED="1700241661198" TEXT="es ist richtig, da&#xdf; sie angeh&#xe4;ngt wird"/>
<node CREATED="1700241661978" ID="ID_911505603" MODIFIED="1700241722652" TEXT="N25 h&#xe4;tte ja sonst keinen Nachfolger">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
das war der Fix von gestern
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#548b9d" DESTINATION="ID_859590304" ENDARROW="Default" ENDINCLINATION="197;-6;" ID="Arrow_ID_1438074607" STARTARROW="None" STARTINCLINATION="220;16;"/>
</node>
<node CREATED="1700241728601" ID="ID_943542993" MODIFIED="1700241756757" TEXT="aber ich h&#xe4;tte N30 erwartet...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
die letze vorhandene Node
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1700241917008" ID="ID_777738126" MODIFIED="1700241926418" TEXT="Code lesen...">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700241927638" ID="ID_1912448585" MODIFIED="1700243178651" TEXT="Ha! Die Nodes sind schon bei N24 ersch&#xf6;pft">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1912448585" ENDARROW="Default" ENDINCLINATION="-223;14;" ID="Arrow_ID_485585873" SOURCE="ID_1642968477" STARTARROW="None" STARTINCLINATION="212;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1700241953019" ID="ID_1204511711" MODIFIED="1700241965197" TEXT="N24 expandiert &#x27fc; N30"/>
<node CREATED="1700241965857" ID="ID_1485221676" MODIFIED="1700241981104" TEXT="N24 cann kein carry-on mehr hinzuf&#xfc;gen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700242198194" ID="ID_1865768170" MODIFIED="1700242399754" TEXT="nebenbei bemerkt: --toReduce macht einen wrap">
<linktarget COLOR="#ff4a66" DESTINATION="ID_1865768170" ENDARROW="Default" ENDINCLINATION="-78;2;" ID="Arrow_ID_1951470053" SOURCE="ID_1712974346" STARTARROW="None" STARTINCLINATION="-29;-29;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1700242235623" ID="ID_418692717" MODIFIED="1700242261550" TEXT="da es aber noch ein carry-on von N23 gibt"/>
<node CREATED="1700242262422" ID="ID_950920994" MODIFIED="1700242273439" TEXT="...wird dieses weiterverwendet. Un das ist N29"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700242288838" ID="ID_1985548183" MODIFIED="1700242483862">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
ist das <i>&#8222;gut so&#8220;</i>&#160;?
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="help"/>
<node CREATED="1700242320450" ID="ID_1071754027" MODIFIED="1700242326757" TEXT="es funktioniert fehlerfrei"/>
<node CREATED="1700242327913" ID="ID_1254256960" MODIFIED="1700242346442" TEXT="&#x201e;gut&#x201c; ist es nicht (nach meinen Wertma&#xdf;st&#xe4;ben)">
<node CREATED="1700242348094" ID="ID_1712974346" MODIFIED="1700242406322" TEXT="wir haben einen verdeckten wrap-around-Bug">
<arrowlink COLOR="#ff4a66" DESTINATION="ID_1865768170" ENDARROW="Default" ENDINCLINATION="-78;2;" ID="Arrow_ID_1951470053" STARTARROW="None" STARTINCLINATION="-29;-29;"/>
</node>
<node CREATED="1700242422820" ID="ID_328997845" MODIFIED="1700242440268">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
der resultierende Baum ist <i>grundlos</i>&#160;unregelm&#228;&#223;ig
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1700242452536" ID="ID_560899990" MODIFIED="1700242502367">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
und (bei meinem aktuellen Kentnissstand): <b>ich kann es leicht fixen</b>...
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1700242467911" ID="ID_1285960784" MODIFIED="1700242477086" TEXT="ohne den Code wesentlich aufzubl&#xe4;hen"/>
</node>
<node COLOR="#338800" CREATED="1700242683023" ID="ID_1652278959" MODIFIED="1700242851456" TEXT="gefixt &#x2014; und das Ergebnis ist &#xbb;sch&#xf6;n&#xab;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Der Baum sieht nun sinnig aus &#8212; f&#252;r das Auge des Mathematikers (nota bene: nicht f&#252;r mein <b>subjektives</b>&#160;Auge). Und der Code ist tats&#228;chlich klarer geworden, weil in der Behandlung nicht mehr zwei getrennte Belange &#252;berlagert sind.
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1700243208285" ID="ID_697379621" MODIFIED="1700243347094" TEXT="merke schon: brauche besseres Tooling f&#xfc;r die Regel-Definitionen...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
ich hab jetzt dreimal &#8222;draufgedroschen&#8220;, bis ich das Wahrscheinlichkeitsverhalten hatte, das ich wollte (wenngleich ich auch dabei einen Bug entdeckt habe...)
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#fef7b5" DESTINATION="ID_6655140" ENDARROW="Default" ENDINCLINATION="206;-191;" ID="Arrow_ID_1782877370" STARTARROW="None" STARTINCLINATION="-63;175;"/>
<linktarget COLOR="#fecdd2" DESTINATION="ID_697379621" ENDARROW="Default" ENDINCLINATION="41;-149;" ID="Arrow_ID_854594463" SOURCE="ID_1461707170" STARTARROW="None" STARTINCLINATION="-209;15;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1700239873583" ID="ID_108514069" MODIFIED="1700239876158" TEXT="Reduction"/>
<node CREATED="1700239880388" ID="ID_897183253" MODIFIED="1700239881738" TEXT="Seed"/>
</node>
</node>
</node>
@ -95909,6 +96095,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1700163771644" ID="ID_1990055220" MODIFIED="1700163816450" TEXT="transformiert per double-Arrithmetik"/>
<node CREATED="1700163817537" ID="ID_1890257970" MODIFIED="1700163833752" TEXT="kappt dann auf [0 ... maxFan]"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700240155314" ID="ID_6655140" MODIFIED="1700243338694" TEXT="Hilfsmittel: Regel-Builder">
<linktarget COLOR="#fef7b5" DESTINATION="ID_6655140" ENDARROW="Default" ENDINCLINATION="206;-191;" ID="Arrow_ID_1782877370" SOURCE="ID_697379621" STARTARROW="None" STARTINCLINATION="-63;175;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700240183293" ID="ID_1092101612" MODIFIED="1700240190782" TEXT="Regel-Baukasten">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
@ -96120,7 +96313,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html>
</richcontent>
</node>
<node COLOR="#338800" CREATED="1700175235408" ID="ID_859590304" MODIFIED="1700177163502" TEXT="Also L&#xf6;sung: nur unverbundene Vorg&#xe4;nger an den letzten Nachfolger anh&#xe4;ngen">
<node COLOR="#338800" CREATED="1700175235408" ID="ID_859590304" MODIFIED="1700241715805" TEXT="Also L&#xf6;sung: nur unverbundene Vorg&#xe4;nger an den letzten Nachfolger anh&#xe4;ngen">
<linktarget COLOR="#548b9d" DESTINATION="ID_859590304" ENDARROW="Default" ENDINCLINATION="197;-6;" ID="Arrow_ID_1438074607" SOURCE="ID_911505603" STARTARROW="None" STARTINCLINATION="220;16;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
@ -96128,6 +96322,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1700240197629" ID="ID_1277367256" MODIFIED="1700240236206" TEXT="Form steuern">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700240219001" ID="ID_531532352" MODIFIED="1700240227249" TEXT="Hilfsmittel zur Regel-Definition">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699971822836" ID="ID_1118263931" MODIFIED="1700156360589" TEXT="Diagnostik">
<icon BUILTIN="pencil"/>