Chain-Load: work out a set of comprehensible example patterns

Since Chain-Load shall be used for performance testing of the scheduler,
we need a catalogue of realistic load patterns. This extended effort
started with some parameter configurations and developed various graph
shapes with different degree of connectivity and concurrency, ranging
from a stable sequence of very short chains to large and excessively
interconnected dependency networks.
This commit is contained in:
Fischlurch 2023-12-01 23:43:00 +01:00
parent bb69cf02e3
commit 6707962bca
3 changed files with 418 additions and 103 deletions

View file

@ -76,11 +76,12 @@ namespace test {
simpleUsage();
verify_Node();
verify_Topology();
verify_Expansion();
verify_Reduction();
verify_SeedChains();
verify_PruneChains();
reseed_recalculate();
showcase_Expansion();
showcase_Reduction();
showcase_SeedChains();
showcase_PruneChains();
showcase_StablePattern();
verify_reseed_recalculate();
witch_gate();
}
@ -232,6 +233,7 @@ namespace test {
/** @test demonstrate shaping of generated topology
* - the expansion rule injects forking nodes
* - after some expansion, width limitation is enforced
@ -243,7 +245,7 @@ namespace test {
* @todo WIP 11/23 define implement
*/
void
verify_Expansion()
showcase_Expansion()
{
ChainLoad32 graph;
@ -304,6 +306,7 @@ namespace test {
/** @test demonstrate impact of reduction on graph topology
* - after one fixed initial expansion, reduction causes
* all chains to be joined eventually
@ -312,7 +315,7 @@ namespace test {
* @todo WIP 11/23 define implement
*/
void
verify_Reduction()
showcase_Reduction()
{
ChainLoad32 graph;
@ -374,6 +377,7 @@ namespace test {
/** @test demonstrate shaping of generated topology by seeding new chains
* - the seed rule allows to start new chains in the middle of the graph
* - combined with with reduction, the emerging structure resembles
@ -381,7 +385,7 @@ namespace test {
* @todo WIP 11/23 define implement
*/
void
verify_SeedChains()
showcase_SeedChains()
{
ChainLoad32 graph;
@ -431,13 +435,16 @@ namespace test {
/** @test TODO demonstrate shaping of generated topology
* - TODO the prune rule terminates chains randomly
* - this can lead to fragmentation in several sub-graphs
* @todo WIP 11/23 🔁 define 🔁 implement
/** @test demonstrate topology with pruning and multiple segments
* - the prune rule terminates chains randomly
* - this can lead to fragmentation into several sub-graphs
* - these can be completely segregated, or appear interwoven
* - equilibrium of seeding and pruning can be established
* @todo WIP 11/23 define implement
*/
void
verify_PruneChains()
showcase_PruneChains()
{
ChainLoad32 graph;
@ -447,7 +454,6 @@ namespace test {
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xC4AE6EB741C22FCE);
auto stat = graph.computeGraphStatistics();
@ -468,7 +474,6 @@ namespace test {
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xC515DB464FF76818);
stat = graph.computeGraphStatistics();
@ -494,7 +499,6 @@ namespace test {
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xEF172CC4B0DE2334);
stat = graph.computeGraphStatistics();
@ -518,7 +522,6 @@ namespace test {
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xD0A27C9B81058637);
// NOTE: this example produced 10 disjoint graph parts,
@ -556,53 +559,279 @@ namespace test {
CHECK (stat.indicators[STAT_JOIN].pL == 1); // with one »Join« event per level on average
CHECK (stat.indicators[STAT_SEED].cnt == 21); // seeds are injected with /fixed rate/, meaning that
CHECK (stat.indicators[STAT_SEED].pL == "2.3333333"_expect); // there is one additional seed for every node in previous level
}
/** @test examples of realistic stable processing patterns
* - some cases achieve a real equilibrium
* - other examples' structure is slowly expanding
* and become stable under constriction of width
* - some examples go into a stable repetitive loop
* - injecting additional randomness generates a
* chaotic yet stationary flow of similar patterns
* @note these examples use a larger pre-allocation of nodes
* to demonstrate the stable state; because, towards end,
* a tear-down into one single exit node will be enforced.
* @remark creating any usable example is a matter of experimentation;
* the usual starting point is to balance expanding and contracting
* forces; yet generation can either run-away or suffocate, and
* so the task is to find a combination of seed values and slight
* parameter variations leading into repeated re-establishment
* of some node constellation. When this is achieved, additional
* shuffling can be introduced to uncover further potential.
* @todo WIP 11/23 define implement
*/
void
showcase_StablePattern()
{
TestChainLoad<256> graph;
TestChainLoad<256> gra_2;
// The next example is »interesting« insofar it shows self-similarity
// The generation is entirely repetitive and locally predictable,
// producing an ongoing sequence of small graph segments,
// partially overlapping with interwoven starts.
// gra_2.seedingRule(gra_2.rule_atLink(1))
// .pruningRule(gra_2.rule().probability(0.4))
// .reductionRule(gra_2.rule().probability(0.6).maxVal(5).minVal(2))
// .setSeed(23)
// .buildToplolgy()
// This example creates a repetitive, non-expanding stable pattern
// comprised of four small graph segments, generated interleaved
// Explanation: rule_atLink() triggers when the preceding node is a »Link«
graph.seedingRule(graph.rule_atLink(1))
.pruningRule(graph.rule().probability(0.4))
.reductionRule(graph.rule().probability(0.6).maxVal(5).minVal(2))
.setSeed(23)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
// ;
;
CHECK (graph.getHash() == 0xED40D07688A9905);
// this one goes into a stable repetition loop
// gra_2.seedingRule(gra_2.rule_atLink(1))
// .pruningRule(gra_2.rule().probability(0.5))
// .reductionRule(gra_2.rule().probability(0.6).maxVal(5).minVal(2))
// .setSeed(23)
// .buildToplolgy()
auto stat = graph.computeGraphStatistics();
CHECK (stat.indicators[STAT_NODE].cL == "0.49970598"_expect); // The resulting distribution of nodes is stable and even
CHECK (stat.levels == 94); // ...arranging the 256 nodes into 94 levels
CHECK (stat.indicators[STAT_NODE].pL == "2.7234043"_expect); // ...with ∅ 2.7 nodes per level
CHECK (stat.indicators[STAT_SEED].pL == "1.0319149"_expect); // comprised of ∅ 1 seed per level
CHECK (stat.indicators[STAT_JOIN].pL == "0.4787234"_expect); // ~ ∅ ½ join per level
CHECK (stat.indicators[STAT_EXIT].pL == "0.32978723"_expect); // ~ ∅ ⅓ exit per level
CHECK (stat.indicators[STAT_SEED].frac == "0.37890625"_expect); // overall, 38% nodes are seeds
CHECK (stat.indicators[STAT_EXIT].frac == "0.12109375"_expect); // and 12% are exit nodes
CHECK (stat.indicators[STAT_SEED].cLW == "0.47963675"_expect); // the density centre of all node kinds
CHECK (stat.indicators[STAT_LINK].cLW == "0.49055446"_expect); // ...is close to the middle
CHECK (stat.indicators[STAT_JOIN].cLW == "0.53299599"_expect);
CHECK (stat.indicators[STAT_EXIT].cLW == "0.55210026"_expect);
// with only a slight increase in pruning probability
// the graph goes into a stable repetition loop rather,
// repeating a single shape with 3 seeds, 3 links and one 3-fold join as exit
graph.seedingRule(graph.rule_atLink(1))
.pruningRule(graph.rule().probability(0.5))
.reductionRule(graph.rule().probability(0.6).maxVal(5).minVal(2))
.setSeed(23)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
// ;
;
CHECK (graph.getHash() == 0xD801FFCF44B202F4);
// this one comes close to a relistic stable processing pattern
// just the individual graph is still to complicated
// and it the load increases over time
gra_2.seedingRule(gra_2.rule().probability(0.5).maxVal(2))
// .pruningRule(gra_2.rule().probability(0.55))
.reductionRule(gra_2.rule().probability(0.5).maxVal(5))
.pruningRule(gra_2.rule_atJoin(1))
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 78); //
CHECK (stat.indicators[STAT_NODE].pL == "3.2820513"_expect); // ∅ 3.3 nodes per level
CHECK (stat.indicators[STAT_SEED].frac == "0.41796875"_expect); // 42% seed
CHECK (stat.indicators[STAT_EXIT].frac == "0.140625"_expect); // 14% exit
// The next example uses a different generation approach:
// Here, seeding happens randomly, while every join immediately
// forces a prune, so all joins become exit nodes.
// With a reduction probability slightly over seed, yet limited reduction strength
// the generation goes into a stable repetition loop, yet with rather small graphs,
// comprised each of two seeds, two links and a single 2-fold join at exit,
// with exit and the two seeds of the following graph happening simultaneously.
graph.seedingRule(graph.rule().probability(0.6).maxVal(1))
.reductionRule(graph.rule().probability(0.75).maxVal(3))
.pruningRule(graph.rule_atJoin(1))
.setSeed(47)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xB9580850D637CD45);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 104); //
CHECK (stat.indicators[STAT_NODE].pL == "2.4615385"_expect); // ∅ 2.5 nodes per level
CHECK (stat.indicators[STAT_SEED].frac == "0.40234375"_expect); // 40% seed
CHECK (stat.indicators[STAT_EXIT].frac == "0.1953125"_expect); // 20% exit
CHECK (stat.indicators[STAT_SEED].pL == "0.99038462"_expect); // resulting in 1 seed per level
CHECK (stat.indicators[STAT_EXIT].pL == "0.48076923"_expect); // ½ exit per level
// Increased seed probability combined with overall seed value 0 ◁──── (crucial, other seeds produce larger graphs)
// produces what seems to be the best stable repetition loop:
// same shape as in preceding, yet interwoven by 2 steps
graph.seedingRule(graph.rule().probability(0.8).maxVal(1))
.reductionRule(graph.rule().probability(0.75).maxVal(3))
.pruningRule(graph.rule_atJoin(1))
.setSeed(0)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xC8C23AF1A9729901);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 55); // much denser arrangement due to stronger interleaving
CHECK (stat.indicators[STAT_NODE].pL == "4.6545455"_expect); // ∅ 4.7 nodes per level — almost twice as much
CHECK (stat.indicators[STAT_SEED].frac == "0.3984375"_expect); // 40% seed
CHECK (stat.indicators[STAT_EXIT].frac == "0.19140625"_expect); // 20% exit — same fractions
CHECK (stat.indicators[STAT_SEED].pL == "1.8545455"_expect); // 1.85 seed per level — higher density
CHECK (stat.indicators[STAT_EXIT].pL == "0.89090909"_expect); // 0.9 exit per level
// With just the addition of irregularity through shuffling on the reduction,
// a stable and tightly interwoven pattern of medium sized graphs is generated
graph.seedingRule(graph.rule().probability(0.8).maxVal(1))
.reductionRule(graph.rule().probability(0.75).maxVal(3).shuffle())
.pruningRule(graph.rule_atJoin(1))
.setSeed(0)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0x2C66D34BA0680AF5);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 45); //
CHECK (stat.indicators[STAT_NODE].pL == "5.6888889"_expect); // ∅ 5.7 nodes per level
CHECK (stat.indicators[STAT_SEED].pL == "2.3555556"_expect); // ∅ 2.4 seeds
CHECK (stat.indicators[STAT_LINK].pL == "2.4888889"_expect); // ∅ 2.5 link nodes
CHECK (stat.indicators[STAT_EXIT].pL == "0.82222222"_expect); // ∅ 0.8 join/exit nodes — indicating stronger spread/reduction
// This example uses another setup, without special rules;
// rather, seed, reduction and pruning are tuned to balance each other.
// The result is a regular interwoven pattern of very small graphs,
// slowly expanding yet stable under constriction of width.
// Predominant is a shape with two seeds on two levels, a single link and a 2-fold join;
// caused by width constriction, this becomes complemented by larger compounds at intervals.
graph.seedingRule(graph.rule().probability(0.8).maxVal(1))
.reductionRule(graph.rule().probability(0.75).maxVal(3))
.pruningRule(graph.rule().probability(0.55))
.setSeed(55) // ◁───────────────────────────────────────────── use 31 for width limited to 8 nodes
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0x4E6A586532A450FD);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 22); // ▶ resulting graph is very dense, hitting the parallelisation limit
CHECK (stat.indicators[STAT_NODE].pL == "11.636364"_expect); // ∅ almost 12 nodes per level !
CHECK (stat.indicators[STAT_SEED].pL == "6.5454545"_expect); // comprised of ∅ 6.5 seeds
CHECK (stat.indicators[STAT_LINK].pL == "2.2727273"_expect); // ∅ 2.3 links
CHECK (stat.indicators[STAT_JOIN].pL == "2.7272727"_expect); // ∅ 2.7 joins
CHECK (stat.indicators[STAT_EXIT].pL == "2.3636364"_expect); // ∅ 2.4 exits
CHECK (stat.indicators[STAT_SEED].frac == "0.5625"_expect); // 56% seed
CHECK (stat.indicators[STAT_EXIT].frac == "0.203125"_expect); // 20% exit
// A slight parameters variation generates medium sized graphs, which are deep interwoven;
// the generation is slowly expanding, but becomes stable under width constriction
graph.seedingRule(graph.rule().probability(0.8).maxVal(1))
.reductionRule(graph.rule().probability(0.6).maxVal(5).minVal(2))
.pruningRule(graph.rule().probability(0.4))
.setSeed(42)
.buildToplolgy()
.printTopologyDOT()
.printTopologyStatistics()
;
//SHOW_EXPR(graph.getHash())
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0x58A972A5154FEB95);
stat = gra_2.computeGraphStatistics();
// CHECK (stat.levels == 9); // Generation carries on for 13 levels
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 27); //
CHECK (stat.indicators[STAT_NODE].pL == "9.4814815"_expect); // ∅ 9.5 nodes per level — ⅓ less dense
CHECK (stat.indicators[STAT_SEED].frac == "0.3984375"_expect); // 40% seed
CHECK (stat.indicators[STAT_LINK].frac == "0.45703125"_expect); // 45% link
CHECK (stat.indicators[STAT_JOIN].frac == "0.11328125"_expect); // 11% joins
CHECK (stat.indicators[STAT_EXIT].frac == "0.08203125"_expect); // 8% exits — hinting at very strong reduction
// The same setup with different seeing produces a
// stable repetitive change of linear chain and small tree with 2 joins
graph.seedingRule(graph.rule().probability(0.8).maxVal(2))
.reductionRule(graph.rule().probability(0.6).maxVal(5).minVal(2))
.pruningRule(graph.rule().probability(0.42))
.setSeed(23)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0x9B9E007964F751A2);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 130); //
CHECK (stat.indicators[STAT_NODE].pL == "1.9692308"_expect); // ∅ ~2 nodes per level — much lesser density
CHECK (stat.indicators[STAT_SEED].frac == "0.33203125"_expect); // 33% seed
CHECK (stat.indicators[STAT_LINK].frac == "0.41796875"_expect); // 42% link
CHECK (stat.indicators[STAT_JOIN].frac == "0.1640625"_expect); // 16% join
CHECK (stat.indicators[STAT_EXIT].frac == "0.16796875"_expect); // 16% exit — only a 2:1 reduction on average
// With added shuffling in the seed rule, and under width constriction,
// an irregular sequence of small to large and strongly interwoven graphs emerges.
graph.seedingRule(graph.rule().probability(0.8).maxVal(2).shuffle())
.reductionRule(graph.rule().probability(0.6).maxVal(5).minVal(2))
.pruningRule(graph.rule().probability(0.42))
.setSeed(23)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0xE491294D0B7F3D4D);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 21); // rather dense
CHECK (stat.indicators[STAT_NODE].pL == "12.190476"_expect); // ∅ 12.2 nodes per level
CHECK (stat.indicators[STAT_SEED].pL == "7.2380952"_expect); // ∅ 7.2 seeds
CHECK (stat.indicators[STAT_LINK].pL == "3.047619"_expect); // ∅ 3 links
CHECK (stat.indicators[STAT_JOIN].pL == "1.8571429"_expect); // ∅ 1.9 joins
CHECK (stat.indicators[STAT_EXIT].pL == "0.66666667"_expect); // ∅ 0.6 exits
// The final example attempts to balance expansion and reduction forces.
// Since reduction needs expanded nodes to work on, expansion always gets
// a head start and we need to tune reduction to slightly higher strength
// to ensure the graph width does not explode. The result is one single
// graph with increasingly complex connections, which can expand into
// width limitation at places, but also collapse to a single thread
graph.expansionRule(graph.rule().probability(0.27).maxVal(4))
.reductionRule(graph.rule().probability(0.44).maxVal(6).minVal(2))
.seedingRule(graph.rule())
.pruningRule(graph.rule())
.setSeed(62)
.buildToplolgy()
// .printTopologyDOT()
// .printTopologyStatistics()
;
CHECK (graph.getHash() == 0x8208F1B6517481F0);
stat = graph.computeGraphStatistics();
CHECK (stat.levels == 31); // rather high concurrency
CHECK (stat.indicators[STAT_SEED].cnt == 1); // a single seed
CHECK (stat.indicators[STAT_EXIT].cnt == 1); // ...and exit
CHECK (stat.indicators[STAT_NODE].pL == "8.2580645"_expect); // ∅ 8.25 nodes per level
CHECK (stat.indicators[STAT_FORK].frac == "0.16015625"_expect); // 16% forks
CHECK (stat.indicators[STAT_LINK].frac == "0.76953125"_expect); // 77% links
CHECK (stat.indicators[STAT_JOIN].frac == "0.10546875"_expect); // 10% joins
CHECK (stat.indicators[STAT_KNOT].frac == "0.0390625"_expect); // 3% »Knot« nodes which both join and fork
CHECK (stat.indicators[STAT_FORK].cLW == "0.41855453"_expect); // density centre of forks lies earlier
CHECK (stat.indicators[STAT_JOIN].cLW == "0.70806275"_expect); // while density centre of joins heavily leans towards end
}
//SHOW_EXPR(graph.getHash())
//SHOW_EXPR(stat.indicators[STAT_NODE].pL)
//SHOW_EXPR(stat.indicators[STAT_FORK].cL)
//SHOW_EXPR(stat.indicators[STAT_JOIN].cL)
@ -619,7 +848,7 @@ namespace test {
* @todo WIP 11/23 define implement
*/
void
reseed_recalculate()
verify_reseed_recalculate()
{
ChainLoad32 graph;
graph.expansionRule(graph.rule().probability(0.8).maxVal(1))

View file

@ -943,6 +943,7 @@ namespace test {
* - »SEGS« : the number of completely disjoint partial subgraphs
* - »knot« : a node which both joins data and forks out to multiple successors
* - `frac` : the percentage of overall nodes falling into this category
* - `pS` : averaged per Segment (warning: see below)
* - `pL` : averaged per Level
* - `pLW` : count normalised to the width at that level and then averaged per Level
* - `γL` : weight centre of this kind of node, relative to the overall graph
@ -956,6 +957,9 @@ namespace test {
* reason, the width-normalised variants of the indicators are also accounted for,
* since a wider graph also implies that there are more nodes of each kind per level,
* even while the actual density of this kind did not increase.
* @warning no comprehensive connectivity analysis is performed, and thus there is
* *no reliable indication of subgraphs*. The `SEGS` statistics may be misleading,
* since these count only completely severed and restarted graphs.
*/
template<size_t numNodes, size_t maxFan>
inline TestChainLoad<numNodes,maxFan>&&

View file

@ -95692,11 +95692,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1697738502632" ID="ID_474402832" MODIFIED="1697738512127" TEXT="einfach aber mit raffizierter Palette"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697739167511" ID="ID_462701673" MODIFIED="1697741726482" TEXT="Last f&#xfc;r Messungen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1697739167511" ID="ID_462701673" MODIFIED="1701476438150" TEXT="Last f&#xfc;r Messungen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697739192956" ID="ID_1199894921" MODIFIED="1697739211725" TEXT="Korrektheit mu&#xdf; verifizierbar sein"/>
<node CREATED="1697739215921" ID="ID_880522211" MODIFIED="1697739222701" TEXT="Last-Parameter sollten steuerbar sein"/>
<node CREATED="1697739223592" ID="ID_1177697704" MODIFIED="1697741617543" TEXT="Naheliegend: Pr&#xfc;fsummen-Kette">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697739223592" ID="ID_1177697704" MODIFIED="1701476435378" TEXT="Naheliegend: Pr&#xfc;fsummen-Kette">
<arrowlink COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="idea"/>
<node CREATED="1697739240230" ID="ID_1190486942" MODIFIED="1697739258607" TEXT="wie in Git oder Blockchain">
@ -95768,16 +95768,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740783336" ID="ID_509932054" MODIFIED="1697741849980" TEXT="TestChainLoad">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740783336" ID="ID_509932054" MODIFIED="1701477303910" TEXT="TestChainLoad">
<linktarget COLOR="#9b2277" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="-374;-90;" ID="Arrow_ID_1082315358" SOURCE="ID_1899821736" STARTARROW="None" STARTINCLINATION="-1039;60;"/>
<linktarget COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" SOURCE="ID_1177697704" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="pencil"/>
<node CREATED="1697740826362" ID="ID_1948434460" MODIFIED="1697740845523" TEXT="eine verifizierbare verzweigte Berechnungs-Last">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699657771858" ID="ID_492954771" MODIFIED="1699657774722" TEXT="Design">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699657791215" ID="ID_1285189810" MODIFIED="1699657803659" TEXT="Anforderungen">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699657771858" FOLDED="true" ID="ID_492954771" MODIFIED="1701476473418" TEXT="Design">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1699657791215" ID="ID_1285189810" MODIFIED="1701476453672" TEXT="Anforderungen">
<linktarget COLOR="#3f42ac" DESTINATION="ID_1285189810" ENDARROW="Default" ENDINCLINATION="-1000;-147;" ID="Arrow_ID_1839143434" SOURCE="ID_1875359700" STARTARROW="None" STARTINCLINATION="-1005;122;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699657825826" ID="ID_525362265" MODIFIED="1699657835477" TEXT="stellt Jobs / Job-Functor bereit">
@ -95992,9 +95992,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1699745687140" ID="ID_703752888" MODIFIED="1699745716356" TEXT="es gibt eine Sammlung von Standard-Bausteinen zur Parametrisierung der Steuergr&#xf6;&#xdf;en"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1699746791796" TEXT="in separatem Test entwerfen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1697741674433" TEXT="Nutzen vorher kl&#xe4;ren">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1701477281049" TEXT="in separatem Test entwerfen">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1701476481436" TEXT="Nutzen vorher kl&#xe4;ren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697741661950" ID="ID_1735458016" MODIFIED="1697741661950" TEXT="Darstellung der Abh&#xe4;ngigkeits-Struktur">
<node CREATED="1699813901659" ID="ID_1631918713" MODIFIED="1699813909295" TEXT="als verkettete Node-Records"/>
@ -96038,8 +96038,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700100288256" ID="ID_844700164" MODIFIED="1700183508507" TEXT="control_Topology">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1700100288256" ID="ID_844700164" MODIFIED="1701476300102" TEXT="control Topology">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700100290904" ID="ID_1991398605" MODIFIED="1700156439824" TEXT="brauche Hilfsmittel zur Visualisierung">
<arrowlink COLOR="#62819c" DESTINATION="ID_1464042796" ENDARROW="Default" ENDINCLINATION="21;-256;" ID="Arrow_ID_596151514" STARTARROW="None" STARTINCLINATION="787;55;"/>
<icon BUILTIN="button_ok"/>
@ -96055,8 +96055,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1700179604933" ID="ID_860192719" MODIFIED="1700179617983" TEXT="erstes Beispiel mit Expansion funktioniert">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1700183517106" ID="ID_687886895" MODIFIED="1700183524969" TEXT="elaboriertere Beispiele ausknobeln">
<icon BUILTIN="flag-pink"/>
<node COLOR="#338800" CREATED="1700183517106" FOLDED="true" ID="ID_687886895" MODIFIED="1701477273053" TEXT="elaboriertere Beispiele ausknobeln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700239868140" ID="ID_843406714" MODIFIED="1701226048584" TEXT="Expansion">
<icon BUILTIN="button_ok"/>
<node CREATED="1700240249941" ID="ID_716590019" MODIFIED="1700240269429" TEXT="Expansion, nicht zu stark">
@ -96313,35 +96313,73 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node COLOR="#338800" CREATED="1701226061434" ID="ID_1246960546" MODIFIED="1701314215907" TEXT="Gleichgewicht">
<icon BUILTIN="button_ok"/>
<node CREATED="1701314218952" ID="ID_959655971" MODIFIED="1701314254700" TEXT="Expansion &#x27f5;&#x27f6; Reduction"/>
<node CREATED="1701401672045" ID="ID_277348330" MODIFIED="1701401686590" TEXT="Seed &#x27f5;&#x27f6; Reduction + Pruning"/>
<node COLOR="#435e98" CREATED="1701314218952" ID="ID_959655971" MODIFIED="1701476261194" TEXT="Expansion &#x27f5;&#x27f6; Reduction"/>
<node COLOR="#435e98" CREATED="1701401672045" ID="ID_277348330" MODIFIED="1701476261193" TEXT="Seed &#x27f5;&#x27f6; Reduction + Pruning"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701226065633" ID="ID_633684852" MODIFIED="1701402052810" TEXT="Teilgraphen">
<node COLOR="#338800" CREATED="1701226065633" ID="ID_633684852" MODIFIED="1701476276665" TEXT="Teilgraphen">
<linktarget COLOR="#659b9f" DESTINATION="ID_633684852" ENDARROW="Default" ENDINCLINATION="-7;-31;" ID="Arrow_ID_1330203959" SOURCE="ID_1917139651" STARTARROW="None" STARTINCLINATION="-67;8;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701401801875" ID="ID_613538695" MODIFIED="1701401819064" TEXT="Seed + Prune &#x27f9; interleaved graphs">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701401829056" ID="ID_623081988" MODIFIED="1701401856489" TEXT="Seed + Prune + Reduce &#x27f9; self similar structures">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1701401968501" ID="ID_1106827463" MODIFIED="1701401978487" TEXT="Suche nach realistischen Processing-Pattern">
<node COLOR="#338800" CREATED="1701401968501" ID="ID_1106827463" MODIFIED="1701476340964" TEXT="Suche nach realistischen Processing-Pattern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701402009239" ID="ID_1542545632" MODIFIED="1701402022723" TEXT="Complex-interleaved">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701402015035" ID="ID_427886072" MODIFIED="1701402022724" TEXT="semi-complex stable state">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701402024221" ID="ID_656477574" MODIFIED="1701402035013" TEXT="simple-interleaved">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701402036180" ID="ID_1920671782" MODIFIED="1701402046419" TEXT="will mir nicht recht gelingen">
<node COLOR="#338800" CREATED="1701402024221" ID="ID_656477574" MODIFIED="1701476270958" TEXT="simple-interleaved">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701402036180" ID="ID_1920671782" MODIFIED="1701455893212" TEXT="will mir nicht recht gelingen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Es <i>ist schwierig </i>&#8212; und ich wei&#223; warum: es ist keine direkte <i>Arbeit &#160;am Berechnungs-Strom</i>&#160;m&#246;glich; das w&#228;re das mir vorschwebende Ideal (siehe Projekt Replantor). Stattdessen kann ich nur Wahrscheinlichkeiten nach Plausibilit&#228;t w&#228;hlen und dann per minimaler Variation nach Zufallstreffern suchen. Und sofern ein Solcher gefunden ist, gibt es kaum M&#246;glichkeiten, ihn noch in einer gewissen Richtung auszugestalten, denn das Verhalten <i>biegt nicht, es bricht.</i>
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1701455569121" ID="ID_1067486798" MODIFIED="1701455888971" TEXT="try harder!">
<icon BUILTIN="yes"/>
<node CREATED="1701455769059" ID="ID_873975109" MODIFIED="1701455781525" TEXT="immer wieder erneut ein plausibles Setup verwenden"/>
<node CREATED="1701455782657" ID="ID_492367973" MODIFIED="1701455790980" TEXT="nicht zu lange an einem Ansatz experimentieren"/>
<node CREATED="1701455803415" ID="ID_1152619098" MODIFIED="1701455811353" TEXT="systematisch die Seeds auf Einflu&#xdf; absuchen"/>
<node CREATED="1701455812181" ID="ID_340539521" MODIFIED="1701455827415" TEXT="ein &#xfc;bersteuertes Setup ransomisieren"/>
</node>
<node COLOR="#435e98" CREATED="1701455836826" ID="ID_1795668390" MODIFIED="1701476335445">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das hat letztlich einige <b>brauchbare Muster</b>&#160;hervorgebracht
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#5563ae" DESTINATION="ID_1708959596" ENDARROW="Default" ENDINCLINATION="228;-102;" ID="Arrow_ID_832800942" STARTARROW="None" STARTINCLINATION="-556;25;"/>
<icon BUILTIN="back"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701476295020" ID="ID_911358507" MODIFIED="1701476298922" TEXT="showcase_StablePattern">
<icon BUILTIN="button_ok"/>
<node CREATED="1701476301444" ID="ID_1708959596" MODIFIED="1701476350118" TEXT="ein &#xbb;Muster-Katalog&#xab;">
<linktarget COLOR="#5563ae" DESTINATION="ID_1708959596" ENDARROW="Default" ENDINCLINATION="228;-102;" ID="Arrow_ID_832800942" SOURCE="ID_1795668390" STARTARROW="None" STARTINCLINATION="-556;25;"/>
<icon BUILTIN="list"/>
</node>
<node CREATED="1701476355765" ID="ID_345249818" MODIFIED="1701476368794" TEXT="alle hier gezeigten Muster sind relevant f&#xfc;r Scheduler-Tests">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701374229504" ID="ID_1338953492" MODIFIED="1701374413822" TEXT="reseed_recalculate">
<linktarget COLOR="#51c3bc" DESTINATION="ID_1338953492" ENDARROW="Default" ENDINCLINATION="-572;68;" ID="Arrow_ID_1159113647" SOURCE="ID_193483520" STARTARROW="None" STARTINCLINATION="-272;-345;"/>
<icon BUILTIN="button_ok"/>
@ -96372,8 +96410,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746799143" ID="ID_1824939661" MODIFIED="1699746805576" TEXT="Implementierung">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746806718" ID="ID_1563586426" MODIFIED="1699747572592" TEXT="Grundstrukturen anlegen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699746806718" ID="ID_1563586426" MODIFIED="1701476504781" TEXT="Grundstrukturen anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699746880572" ID="ID_1016750692" MODIFIED="1701225759355" TEXT="Rahmen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805761305" ID="ID_185771075" MODIFIED="1699805795004" TEXT="move-only wegen builder syntax">
@ -96392,8 +96430,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746817756" ID="ID_490992503" MODIFIED="1699746834411" TEXT="Generator">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1699746817756" ID="ID_490992503" MODIFIED="1701476502045" TEXT="Generator">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805813117" ID="ID_593874916" MODIFIED="1701225762502" TEXT="buildTopology: Grundstruktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701013424438" ID="ID_111752985" MODIFIED="1701013455120" TEXT="&#xe4;u&#xdf;ere Schleife &#xfc;ber alle Nodes">
@ -96410,8 +96448,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700163498328" ID="ID_14989689" MODIFIED="1700163505288" TEXT="CtrlRules + Infrastruktur">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1700163498328" FOLDED="true" ID="ID_14989689" MODIFIED="1701476873714" TEXT="CtrlRules + Infrastruktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1700163679808" FOLDED="true" ID="ID_310818837" MODIFIED="1700502158099" TEXT="Hilfsmittel: Cap(lower, value, upper)">
<linktarget COLOR="#fdedce" DESTINATION="ID_310818837" ENDARROW="Default" ENDINCLINATION="174;13;" ID="Arrow_ID_184825307" SOURCE="ID_1054737506" STARTARROW="None" STARTINCLINATION="247;-214;"/>
<icon BUILTIN="button_ok"/>
@ -98754,9 +98792,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1700240183293" ID="ID_1092101612" MODIFIED="1701023918045" TEXT="Regel-Baukasten">
<node COLOR="#338800" CREATED="1700240183293" ID="ID_1092101612" MODIFIED="1701476497402" TEXT="Regel-Baukasten">
<linktarget COLOR="#5a509e" DESTINATION="ID_1092101612" ENDARROW="Default" ENDINCLINATION="8;265;" ID="Arrow_ID_362060244" SOURCE="ID_1931960006" STARTARROW="None" STARTINCLINATION="415;-28;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700770889303" FOLDED="true" ID="ID_1475798694" MODIFIED="1701304070735" TEXT="Non-copyable Rules &#x2014; problematisch f&#xfc;r DSL">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1700770943791" ID="ID_1199767820" MODIFIED="1700770980394" TEXT="sie m&#xfc;ssen non-copyable sein wegen internem Function-binding">
@ -99081,10 +99119,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699805829000" ID="ID_270316664" MODIFIED="1699971820891" TEXT="Topologie">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699805833671" ID="ID_580627690" MODIFIED="1699805843455" TEXT="Verlinkungs-Algorithmus">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699805829000" ID="ID_270316664" MODIFIED="1701477253681" TEXT="Topologie">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805833671" ID="ID_580627690" MODIFIED="1701476579498" TEXT="Verlinkungs-Algorithmus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805853717" ID="ID_1156505101" MODIFIED="1699821192765" TEXT="Schleifenrahmen">
<icon BUILTIN="button_ok"/>
</node>
@ -99094,7 +99132,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1699821225351" ID="ID_1826969287" MODIFIED="1699827726975" TEXT="Verzweigen und Reduzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701013104992" ID="ID_1384585617" MODIFIED="1701028258806" TEXT="vorzeitiges Kappen (Pruning)">
<node COLOR="#338800" CREATED="1701013104992" FOLDED="true" ID="ID_1384585617" MODIFIED="1701476577608" TEXT="vorzeitiges Kappen (Pruning)">
<icon BUILTIN="button_ok"/>
<node CREATED="1701013119678" ID="ID_514160905" MODIFIED="1701013248977" TEXT="sinnvoll f&#xfc;r den geplanten Einsatz">
<richcontent TYPE="NOTE"><html>
@ -99129,8 +99167,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699805890752" ID="ID_604823204" MODIFIED="1699827731274" TEXT="Limitierungen einhalten">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699805890752" FOLDED="true" ID="ID_604823204" MODIFIED="1701476576187" TEXT="Limitierungen einhalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700163524509" ID="ID_1054737506" MODIFIED="1701314149767" TEXT="Auswertung der CtrlRules sicher handhaben">
<arrowlink COLOR="#fdedce" DESTINATION="ID_310818837" ENDARROW="Default" ENDINCLINATION="174;13;" ID="Arrow_ID_184825307" STARTARROW="None" STARTINCLINATION="247;-214;"/>
<icon BUILTIN="button_ok"/>
@ -99231,18 +99269,29 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701476518799" ID="ID_1469951174" MODIFIED="1701476557001" TEXT="informell durch umfangreiche Experimente validiert">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
es gab dann keinen einzigen Crash mehr und auch das Verhalten war stets nach Sicht konstistent
</p>
</body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</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 COLOR="#338800" CREATED="1700240197629" ID="ID_1277367256" MODIFIED="1701476587501" TEXT="Form steuern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700240219001" ID="ID_531532352" MODIFIED="1701476588892" TEXT="Hilfsmittel zur Regel-Definition">
<icon BUILTIN="button_ok"/>
<node COLOR="#11660e" CREATED="1700761069915" ID="ID_557518427" MODIFIED="1700761165588" TEXT="Basis: &#xbb;ziehen&#xab; von Zufallszahlen aus dem Hash &#x27f6; lib::RandomDraw">
<arrowlink COLOR="#719f60" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="-466;214;" ID="Arrow_ID_834549033" STARTARROW="None" STARTINCLINATION="241;10;"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701012898916" ID="ID_1931960006" MODIFIED="1701314189673" TEXT="Regel-Baukasten aufbauen">
<node COLOR="#338800" CREATED="1701012898916" ID="ID_1931960006" MODIFIED="1701476590458" TEXT="Regel-Baukasten aufbauen">
<arrowlink COLOR="#5a509e" DESTINATION="ID_1092101612" ENDARROW="Default" ENDINCLINATION="8;265;" ID="Arrow_ID_362060244" STARTARROW="None" STARTINCLINATION="415;-28;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701313975373" HGAP="49" ID="ID_1693658322" MODIFIED="1701314186518" TEXT="Bausteine" VSHIFT="14">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1701313986968" ID="ID_332576900" MODIFIED="1701314035258" TEXT="rule_atStart">
@ -99257,6 +99306,31 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1701476608171" ID="ID_72390524" MODIFIED="1701476618647" TEXT="rule_atJoin">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701476614658" ID="ID_31724104" MODIFIED="1701476719505" TEXT="rule_atLink">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
diese ist speziell, und spielt eine gro&#223;e Rolle, um kontrolliert Seeds einzuspielen. Daf&#252;r mu&#223; sie an die Situation im Generierungs-Algorighmus angepa&#223;t werden, denn dort sind zum Abfrage-Zeitpunkt die Nachfolger noch gar nicht etabliert. Daher kann auch ein Link und ein Exit nicht wirklich unterschieden werden.
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1701476719500" ID="ID_339932663" MODIFIED="1701476858539" TEXT="rule_atJoin_else">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Das ist eine if-else-Regel; man kann damit auf einen Join anders reagieren als auf sonstige Knoten. Letzten Endes hat mich diese Regel aber nicht weitergebracht, denn f&#252;r gute Strukturen kommt es <b>aussschlie&#223;lich</b>&#160;auf das feinf&#252;hlige Balancieren der Kr&#228;fte an &#8212; das ist eine grunds&#228;tzliche Einschr&#228;nkung des Ansatzes, die es unm&#246;glich macht, auf Struktur-Muster direkt zu reagieren
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
@ -99265,8 +99339,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699971822836" ID="ID_1118263931" MODIFIED="1700156360589" TEXT="Diagnostik">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699971822836" ID="ID_1118263931" MODIFIED="1701477248441" TEXT="Diagnostik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699972014017" FOLDED="true" ID="ID_1464042796" MODIFIED="1700159727325" TEXT="Topologie sichtbar machen">
<linktarget COLOR="#62819c" DESTINATION="ID_1464042796" ENDARROW="Default" ENDINCLINATION="21;-256;" ID="Arrow_ID_596151514" SOURCE="ID_1991398605" STARTARROW="None" STARTINCLINATION="787;55;"/>
<icon BUILTIN="button_ok"/>
@ -99700,7 +99774,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701014034892" ID="ID_866240930" MODIFIED="1701225793189" TEXT="Topologie-Kennzahlen">
<node COLOR="#338800" CREATED="1701014034892" FOLDED="true" ID="ID_866240930" MODIFIED="1701477245272" TEXT="Topologie-Kennzahlen">
<icon BUILTIN="button_ok"/>
<node CREATED="1701014048994" ID="ID_1678541468" MODIFIED="1701014062212" TEXT="globale Statistik">
<node CREATED="1701014092123" ID="ID_97178406" MODIFIED="1701014096623" TEXT="Anzahl...">
@ -100074,8 +100148,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701207740691" ID="ID_1314408023" MODIFIED="1701207749626" TEXT="im Test auf Plausibilit&#xe4;t pr&#xfc;fen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1701207740691" ID="ID_1314408023" MODIFIED="1701476917010" TEXT="im Test auf Plausibilit&#xe4;t pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#f8d9cb" COLOR="#a50125" CREATED="1701476896345" HGAP="7" ID="ID_812119565" MODIFIED="1701477238261" TEXT="Einschr&#xe4;nkung: Teil-Graphen" VSHIFT="6">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701476924489" ID="ID_6946734" MODIFIED="1701476997450" TEXT="das geht nicht so billig nebenbei">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1701476939935" ID="ID_425871006" MODIFIED="1701476965695" TEXT="es w&#xfc;rde kein Weg an einer Connectivity-Analyse vorbeif&#xfc;hren"/>
<node CREATED="1701477000686" ID="ID_221374695" MODIFIED="1701477018461" TEXT="daher sind meine Statistiken &#xbb;pro Segment&#xab; im Grunde Mist"/>
</node>
</node>
</node>