Chain-Load: validate and improve statistics
- present the weight centres relative to overall level count - detect sub-graphs and add statistics per subgraph - include an evaluation for ''all nodes'' - include number of levels and subgraphs
This commit is contained in:
parent
852a86bbda
commit
dd6929ccc5
2 changed files with 179 additions and 103 deletions
|
|
@ -652,6 +652,7 @@ namespace test {
|
|||
|
||||
/* ========= Graph Statistics Evaluation ========= */
|
||||
|
||||
const string STAT_NODE{"node"}; ///< all nodes
|
||||
const string STAT_SEED{"seed"}; ///< seed node
|
||||
const string STAT_EXIT{"exit"}; ///< exit node
|
||||
const string STAT_INNR{"innr"}; ///< inner node
|
||||
|
|
@ -660,8 +661,9 @@ namespace test {
|
|||
const string STAT_LINK{"link"}; ///< 1:1 linking node
|
||||
const string STAT_KNOT{"knot"}; ///< knot (joins and forks)
|
||||
|
||||
const std::array KEYS = {STAT_SEED,STAT_EXIT,STAT_INNR,STAT_FORK,STAT_JOIN,STAT_LINK,STAT_KNOT};
|
||||
const std::array KEYS = {STAT_NODE,STAT_SEED,STAT_EXIT,STAT_INNR,STAT_FORK,STAT_JOIN,STAT_LINK,STAT_KNOT};
|
||||
const uint CAT = KEYS.size();
|
||||
const uint IDX_SEED = 1; // index of STAT_SEED
|
||||
|
||||
namespace {
|
||||
template<class NOD>
|
||||
|
|
@ -669,7 +671,8 @@ namespace test {
|
|||
prepareEvaluaions()
|
||||
{
|
||||
return std::array<std::function<uint(NOD&)>, CAT>
|
||||
{ [](NOD& n){ return isStart(n);}
|
||||
{ [](NOD& ){ return 1; }
|
||||
, [](NOD& n){ return isStart(n);}
|
||||
, [](NOD& n){ return isExit(n); }
|
||||
, [](NOD& n){ return isInner(n);}
|
||||
, [](NOD& n){ return isFork(n); }
|
||||
|
|
@ -697,9 +700,11 @@ namespace test {
|
|||
double pLW{0}; ///< average per level and level-width
|
||||
double cL {0}; ///< weight centre level for this indicator
|
||||
double cLW{0}; ///< weight centre level width-reduced
|
||||
double sL {0}; ///< weight centre on subgraph
|
||||
double sLW{0}; ///< weight centre on subgraph width-reduced
|
||||
|
||||
void
|
||||
addPoint (uint levelID, uint width, uint items)
|
||||
addPoint (uint levelID, uint sublevelID, uint width, uint items)
|
||||
{
|
||||
REQUIRE (levelID == data.size()); // ID is zero based
|
||||
REQUIRE (width > 0);
|
||||
|
|
@ -709,18 +714,32 @@ namespace test {
|
|||
pLW += items / double(width);
|
||||
cL += levelID * items;
|
||||
cLW += levelID * items/double(width);
|
||||
sL += sublevelID * items;
|
||||
sLW += sublevelID * items/double(width);
|
||||
}
|
||||
|
||||
void
|
||||
closeAverages (uint nodes)
|
||||
closeAverages (uint nodes, uint levels, double avgheight)
|
||||
{
|
||||
uint levels = data.size();
|
||||
REQUIRE (levels == data.size());
|
||||
REQUIRE (levels > 0);
|
||||
frac = cnt / double(nodes);
|
||||
cL = pL? cL/pL :0; // weighted averages: normalise to weight sum
|
||||
cLW = pLW? cLW/pLW :0;
|
||||
sL = pL? sL/pL :0;
|
||||
sLW = pLW? sLW/pLW :0;
|
||||
pL /= levels; // simple averages : normalise to number of levels
|
||||
pLW /= levels;
|
||||
cL /= levels-1; // weight centres : as fraction of maximum level-ID
|
||||
cLW /= levels-1;
|
||||
ASSERT (avgheight >= 1.0);
|
||||
if (avgheight > 1.0)
|
||||
{ // likewise for weight centres relative to subgraph
|
||||
sL /= avgheight-1; // height is 1-based, while the contribution was 0-based
|
||||
sLW /= avgheight-1;
|
||||
}
|
||||
else
|
||||
sL = sLW = 0.5;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -731,7 +750,11 @@ namespace test {
|
|||
{
|
||||
uint nodes{0};
|
||||
uint levels{0};
|
||||
uint segments{1};
|
||||
uint maxheight{0};
|
||||
double avgheight{0};
|
||||
VecU width{};
|
||||
VecU sublevel{};
|
||||
|
||||
std::array<Indicator, CAT> indicators;
|
||||
|
||||
|
|
@ -744,23 +767,27 @@ namespace test {
|
|||
}
|
||||
|
||||
void
|
||||
addPoint (uint levelWidth, LevelSums& particulars)
|
||||
addPoint (uint levelWidth, uint sublevelID, LevelSums& particulars)
|
||||
{
|
||||
levels += 1;
|
||||
nodes += levelWidth;
|
||||
width.push_back (levelWidth);
|
||||
sublevel.push_back (sublevelID);
|
||||
ASSERT (levels == width.size());
|
||||
ASSERT (0 < levels);
|
||||
ASSERT (0 < levelWidth);
|
||||
for (uint i=0; i< CAT; ++i)
|
||||
indicators[i].addPoint (levels-1, levelWidth, particulars[i]);
|
||||
indicators[i].addPoint (levels-1, sublevelID, levelWidth, particulars[i]);
|
||||
}
|
||||
|
||||
void
|
||||
closeAverages()
|
||||
closeAverages (uint segs, uint maxSublevelID)
|
||||
{
|
||||
segments = segs;
|
||||
maxheight = maxSublevelID + 1;
|
||||
avgheight = levels / double(segments);
|
||||
for (uint i=0; i< CAT; ++i)
|
||||
indicators[i].closeAverages (nodes);
|
||||
indicators[i].closeAverages (nodes,levels,avgheight);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -768,6 +795,7 @@ namespace test {
|
|||
reserve (uint lvls)
|
||||
{
|
||||
width.reserve (lvls);
|
||||
sublevel.reserve(lvls);
|
||||
for (uint i=0; i< CAT; ++i)
|
||||
{
|
||||
indicators[i] = Indicator{};
|
||||
|
|
@ -798,16 +826,31 @@ namespace test {
|
|||
auto classify = prepareEvaluaions<Node>();
|
||||
Statistic stat(totalLevels);
|
||||
LevelSums particulars{0};
|
||||
size_t level{0};
|
||||
size_t level{0},
|
||||
sublevel{0},
|
||||
maxsublevel{0};
|
||||
size_t segs{0};
|
||||
uint width{0};
|
||||
auto detectSubgraphs = [&]{ // to be called when a level is complete
|
||||
if (width==1 and particulars[IDX_SEED]==1)
|
||||
{ // previous level actually started new subgraph
|
||||
sublevel = 0;
|
||||
++segs;
|
||||
}
|
||||
else
|
||||
maxsublevel = max (sublevel,maxsublevel);
|
||||
};
|
||||
|
||||
for (Node& node : allNodes())
|
||||
{
|
||||
if (level != node.level)
|
||||
{ // record statistics for previous level
|
||||
stat.addPoint (width, particulars);
|
||||
{// Level completed...
|
||||
detectSubgraphs();
|
||||
// record statistics for previous level
|
||||
stat.addPoint (width, sublevel, particulars);
|
||||
// switch to next time-level
|
||||
++level;
|
||||
++sublevel;
|
||||
ENSURE (level == node.level);
|
||||
particulars = LevelSums{0};
|
||||
width = 0;
|
||||
|
|
@ -818,19 +861,48 @@ namespace test {
|
|||
particulars[i] += classify[i](node);
|
||||
}
|
||||
ENSURE (level = topLevel());
|
||||
stat.addPoint (width, particulars);
|
||||
stat.closeAverages();
|
||||
detectSubgraphs();
|
||||
stat.addPoint (width, sublevel, particulars);
|
||||
stat.closeAverages (segs, maxsublevel);
|
||||
return stat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Print a tabular summary of graph characteristics
|
||||
* @remark explanation of indicators
|
||||
* - »node« : accounting for all nodes
|
||||
* - »seed« : seed nodes start a new subgraph or side chain
|
||||
* - »exit« : exit nodes produce output and have no successor
|
||||
* - »innr« : inner nodes have both predecessors and successors
|
||||
* - »fork« : a node linked to more than one successor
|
||||
* - »join« : a node consuming data from more than one predecessor
|
||||
* - »link« : a node in a linear processing chain; one input, one output
|
||||
* - »LEVL« : the overall number of distinct _time levels_ in the graph
|
||||
* - »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
|
||||
* - `∅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
|
||||
* - `γLW◆` : the same, but using the level-width-normalised value
|
||||
* - `γL⬙` : weight centre, but relative to the current subgraph or segment
|
||||
* - `γLW⬙` : same but using level-width-normalised value
|
||||
* Together, these values indicates how the simulated processing load
|
||||
* is structured over time, assuming that the _»Levels« are processed consecutively_
|
||||
* in temporal order. The graph can unfold or contract over time, and thus nodes can
|
||||
* be clustered irregularly, which can be seen from the weight centres; for that
|
||||
* 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.
|
||||
*/
|
||||
template<size_t numNodes, size_t maxFan>
|
||||
inline TestChainLoad<numNodes,maxFan>&&
|
||||
TestChainLoad<numNodes,maxFan>::printTopologyStatistics()
|
||||
{
|
||||
cout << "INDI cnt frac ∅pL ∅pLW γL γLW\n";
|
||||
_Fmt line{"%s %3d %3.0f%% %4.2f %4.2f %5.1f %5.1f\n"};
|
||||
cout << "INDI: cnt frac ∅pL ∅pLW γL◆ γLW◆ γL⬙ γLW⬙\n";
|
||||
_Fmt line{"%4s: %3d %3.0f%% %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f\n"};
|
||||
Statistic stat = computeGraphStatistics();
|
||||
for (uint i=0; i< CAT; ++i)
|
||||
{
|
||||
|
|
@ -842,8 +914,15 @@ namespace test {
|
|||
% indi.pLW
|
||||
% indi.cL
|
||||
% indi.cLW
|
||||
% indi.sL
|
||||
% indi.sLW
|
||||
;
|
||||
}
|
||||
cout << _Fmt{"LEVL: %3d\n"} % stat.levels;
|
||||
cout << _Fmt{"SEGS: %3d h = ∅%3.1f / max.%2d\n"}
|
||||
% stat.segments
|
||||
% stat.avgheight
|
||||
% stat.maxheight;
|
||||
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"
|
||||
<< endl;
|
||||
return move(*this);
|
||||
|
|
|
|||
|
|
@ -99280,8 +99280,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701014034892" ID="ID_866240930" MODIFIED="1701014041643" TEXT="Topologie-Kennzahlen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701014034892" ID="ID_866240930" MODIFIED="1701207753709" TEXT="Topologie-Kennzahlen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1701014048994" ID="ID_1678541468" MODIFIED="1701014062212" TEXT="globale Statistik">
|
||||
<node CREATED="1701014092123" ID="ID_97178406" MODIFIED="1701014096623" TEXT="Anzahl...">
|
||||
<node CREATED="1701014366015" ID="ID_94760001" MODIFIED="1701014369211" TEXT="Levels"/>
|
||||
|
|
@ -99410,8 +99410,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701015081865" ID="ID_1426934946" MODIFIED="1701015088816" TEXT="average"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701016789541" ID="ID_677587050" MODIFIED="1701140137686" TEXT="Berechnung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1701016789541" ID="ID_677587050" MODIFIED="1701207663094" TEXT="Berechnung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1701016800527" ID="ID_465492261" MODIFIED="1701125333044" TEXT="auf Erweiterbarkeit abzielen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -99423,126 +99423,99 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701125376983" ID="ID_1738324890" MODIFIED="1701140134675" TEXT="Daten-Record">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1701125376983" ID="ID_1738324890" MODIFIED="1701207665699" TEXT="Daten-Record">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1701125441964" ID="ID_418000988" MODIFIED="1701125470010" TEXT="feste Datenfelder als uint und double"/>
|
||||
<node CREATED="1701125474136" ID="ID_774880220" MODIFIED="1701125477483" TEXT="Benennungs-Schema">
|
||||
<node CREATED="1701126033651" ID="ID_1862774018" MODIFIED="1701126080812" TEXT="forks[lev]">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Vector mit Zähldaten indiziert nach Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125550995" ID="ID_1031639785" MODIFIED="1701126098550" TEXT="forks_cnt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Gesamt-Anzahl der Forks
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125560924" ID="ID_669092405" MODIFIED="1701126154803" TEXT="forks_pL">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Forks per Level ∅
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125579683" ID="ID_1639658129" MODIFIED="1701126169319" TEXT="forks_pLW">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Forks per Level-Width ∅
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125941621" ID="ID_402557156" MODIFIED="1701126253934" TEXT="forks_cL">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Forks Level-γ-Schwerpunkt (centre)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125948023" ID="ID_5366972" MODIFIED="1701126246633" TEXT="forks_cLW">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Forks Level-Width-γ -Schwerpunkt (centre)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126282617" ID="ID_283726913" MODIFIED="1701126375947" TEXT="forks_pL_trend">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
lineare Regression der forks_pL über den Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126387036" ID="ID_691366138" MODIFIED="1701126595772" TEXT="forks_ma">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
forks moving average über den Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126601654" ID="ID_1465309970" MODIFIED="1701126630322" TEXT="forks_pW_ma">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
forks per width moving average (über den Level)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1701127574637" ID="ID_923332375" MODIFIED="1701127579225" TEXT="Struktur">
|
||||
|
|
@ -99550,15 +99523,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701127580038" ID="ID_856358485" MODIFIED="1701127646988" TEXT="globals">
|
||||
<node CREATED="1701127588184" ID="ID_1819109646" MODIFIED="1701127599814" TEXT="Node-Zähler"/>
|
||||
<node CREATED="1701127600974" ID="ID_173189022" MODIFIED="1701127612041" TEXT="Vector der Level-Breiten"/>
|
||||
<node CREATED="1701207671619" ID="ID_914162600" MODIFIED="1701207679469" TEXT="Vector der Sublevel-Nr"/>
|
||||
</node>
|
||||
<node CREATED="1701127623579" ID="ID_300642202" MODIFIED="1701127644053" TEXT="indicators">
|
||||
<node CREATED="1701127648856" ID="ID_1223520264" MODIFIED="1701127657990" TEXT="die Map mit den Kennzahl-Subobjekten"/>
|
||||
<node CREATED="1701127648856" ID="ID_1223520264" MODIFIED="1701207689997" TEXT="das Array mit den Kennzahl-Subobjekten"/>
|
||||
<node CREATED="1701128902290" ID="ID_380186539" MODIFIED="1701128917823" TEXT="String-Keys als Konstanten im Header"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701126784469" ID="ID_1887920945" MODIFIED="1701140211229" TEXT="Rechenweg">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1701126784469" FOLDED="true" ID="ID_1887920945" MODIFIED="1701207712508" TEXT="Rechenweg">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701126789108" ID="ID_1733334637" MODIFIED="1701126799986" TEXT="das wird verdammt repetitiv">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
|
|
@ -99605,12 +99579,29 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1701127520281" ID="ID_327297411" MODIFIED="1701140158553" TEXT="Abschluß: Gesamtzahl ⟼ ∅">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701184912655" ID="ID_283973311" MODIFIED="1701184946768" TEXT="Zerlegung in Teilgraphen berücksichtigen">
|
||||
<linktarget COLOR="#7327b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" SOURCE="ID_1190320888" STARTARROW="None" STARTINCLINATION="124;-10;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1701184912655" ID="ID_283973311" MODIFIED="1701207554433" TEXT="Zerlegung in Teilgraphen berücksichtigen">
|
||||
<linktarget COLOR="#2775b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" SOURCE="ID_1190320888" STARTARROW="None" STARTINCLINATION="99;9;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1701198175838" ID="ID_921347773" MODIFIED="1701207533844" TEXT="brauche dazu den Level im Subgraphen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701198195110" ID="ID_297257670" MODIFIED="1701207537364" TEXT="den kann man an einzeln stehenden Seed-Nodes erkennen">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701198624560" ID="ID_475628380" MODIFIED="1701207539518" TEXT="nicht ganz einfach in der bestehenden Auswertung">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1701207483556" ID="ID_212583475" MODIFIED="1701207490753" TEXT="Ansatz: rückwirkend korrigieren"/>
|
||||
<node CREATED="1701207491828" ID="ID_1756897120" MODIFIED="1701207498291" TEXT="muß besonders am Ende aufpassen"/>
|
||||
<node CREATED="1701207499835" ID="ID_1014380318" MODIFIED="1701207513173" TEXT="dann auch Maximal-Höhe der Teilgraphen mit berechnen"/>
|
||||
</node>
|
||||
<node CREATED="1701207438659" ID="ID_216213386" MODIFIED="1701207461929" TEXT="(aua... da waren auch noch Logik-Fehler in der Level-Behandlung)">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701127540653" ID="ID_838754026" MODIFIED="1701127562922" TEXT="Berechnung-2">
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701127540653" ID="ID_838754026" MODIFIED="1701207655660" TEXT="Berechnung-2">
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_838754026" ENDARROW="Default" ENDINCLINATION="-182;27;" ID="Arrow_ID_115599837" SOURCE="ID_1769689128" STARTARROW="None" STARTINCLINATION="96;-106;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1701127545038" ID="ID_1659639199" MODIFIED="1701127560980" TEXT="(abgeleitete Berechungen höherer Ordnung)">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
|
|
@ -99632,21 +99623,39 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701016792372" ID="ID_1251453714" MODIFIED="1701184833970" TEXT="Darstellung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701125319870" ID="ID_1457245227" MODIFIED="1701184853119" TEXT="Statistik-Report bereitstellen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1701016792372" ID="ID_1251453714" MODIFIED="1701207658065" TEXT="Darstellung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1701125319870" FOLDED="true" ID="ID_1457245227" MODIFIED="1701207738012" TEXT="Statistik-Report bereitstellen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1701184854447" ID="ID_1823077805" MODIFIED="1701184862006" TEXT="Auswertungen pro Kategorie">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701184862856" ID="ID_85653289" MODIFIED="1701184866502" TEXT="Gesamtsummen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1701184862856" ID="ID_85653289" MODIFIED="1701198088372" TEXT="Gesamtsummen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1701184867453" ID="ID_1190320888" MODIFIED="1701184954043" TEXT="Teilgraphen berücksichtigen">
|
||||
<arrowlink COLOR="#7327b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" STARTARROW="None" STARTINCLINATION="124;-10;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node COLOR="#338800" CREATED="1701198095024" ID="ID_1116378678" MODIFIED="1701198105373" TEXT="Schwerpunkt auf Level normieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701184867453" ID="ID_1190320888" MODIFIED="1701207554433" TEXT="Teilgraphen berücksichtigen">
|
||||
<arrowlink COLOR="#2775b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" STARTARROW="None" STARTINCLINATION="99;9;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1701207569778" ID="ID_1769689128" MODIFIED="1701207655659" TEXT="das sollte erstmal reichen....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...grundsätzlich wären die wichtigsten Zeitreihen im Statistik-Report da, so daß man auch noch weitreichendere Auswertungen machen könnte — sofern das hier mal für mehr als für einige Lasttests verwendet wird...
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink DESTINATION="ID_838754026" ENDARROW="Default" ENDINCLINATION="-182;27;" ID="Arrow_ID_115599837" STARTARROW="None" STARTINCLINATION="96;-106;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701207740691" ID="ID_1314408023" MODIFIED="1701207749626" TEXT="im Test auf Plausibilität prüfen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -99698,27 +99707,21 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701058881832" ID="ID_348005830" MODIFIED="1701059018446">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
sollte <i>vergleichsweise </i>einfach zu implementieren sein
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...will sagen, ich muß da nicht lang überlegen und kann es mehr oder weniger runterschreiben (auch wenn's ein paar Stunden braucht)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701058923620" ID="ID_1761514428" MODIFIED="1701059020156" TEXT="gleiches Bauschema wie beim Filter-Iter (pull one group eagerly)">
|
||||
<icon BUILTIN="idea"/>
|
||||
|
|
@ -99731,29 +99734,23 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1701117373814" ID="ID_340694208" MODIFIED="1701117498363" TEXT="weil Node als move-only deklariert ist (inhaltlich sinnvoll)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...es wäre zwar nicht notwendig, da in der Node-struct lauter pointer und einfache Werte gespeichert werden; aber eine Node-Kopie wäre ein hochgradig inkonsistentes Gebilde, da dann die Rück-Referenzen nicht mehr stimmen würden.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1701117396795" ID="ID_887215905" MODIFIED="1701117581653" TEXT="und der grouped()-Mechanismus aber values speichern muß">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...das folgt aus dem Design von IterExplorer insgesamt. Es wäre hochgradig gefährlich, wenn man in der Gruppe Referenzen speichern würde. Wenn überhaupt, dann muß das explizit so angefordert werden, indem man in der Pipeline mit Pointern arbeitet.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue