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:
parent
960c461bb4
commit
0686c534cf
3 changed files with 210 additions and 6 deletions
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -95869,6 +95869,192 @@ Date:   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äß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] ⟶ 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 übersehen, der ja sofort abgezogen wird, bevor das Fenster ü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ö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ängt">
|
||||
<node CREATED="1700241654843" ID="ID_693027416" MODIFIED="1700241661198" TEXT="es ist richtig, daß sie angehängt wird"/>
|
||||
<node CREATED="1700241661978" ID="ID_911505603" MODIFIED="1700241722652" TEXT="N25 hä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ä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ö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 ⟼ N30"/>
|
||||
<node CREATED="1700241965857" ID="ID_1485221676" MODIFIED="1700241981104" TEXT="N24 cann kein carry-on mehr hinzufü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>„gut so“</i> ?
|
||||
</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="„gut“ ist es nicht (nach meinen Wertmaßstä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> unregelmäß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ähen"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700242683023" ID="ID_1652278959" MODIFIED="1700242851456" TEXT="gefixt — und das Ergebnis ist »schön«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Der Baum sieht nun sinnig aus — für das Auge des Mathematikers (nota bene: nicht für mein <b>subjektives</b> Auge). Und der Code ist tatsächlich klarer geworden, weil in der Behandlung nicht mehr zwei getrennte Belange ü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ür die Regel-Definitionen...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
ich hab jetzt dreimal „draufgedroschen“, 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:   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:   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ösung: nur unverbundene Vorgänger an den letzten Nachfolger anhängen">
|
||||
<node COLOR="#338800" CREATED="1700175235408" ID="ID_859590304" MODIFIED="1700241715805" TEXT="Also Lösung: nur unverbundene Vorgänger an den letzten Nachfolger anhä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:   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"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue