![]() |
AW: Baumstruktur aus Daten erzeugen: Eine Herausforderung! ;-)
Letztendlich ist halt wirklich die Frage, was du damit machen willst.
Wenn die Anzahl der Stationen klein ist oder die Eigenschaften der Verknüpfung günstig, dann macht es vielleicht wirklich Sinn, alle Pfade auszugeben. Bei mehr als ein paar dutzend Pfaden würde ich das aber bezweifeln. Du könntest anstelle einzelnen Pfade auch einen Prefixbaum ausgeben, das würde die Sache dann deutlich übersichtlicher machen, in extremen Fällen würde es nicht helfen. Es folgt: Werbung für theoretischere Informatik in der Industrie :wink: Wenn du ein schönen Model suchst, um Abläufe mit komplexe Abhängigkeiten zu untersuchen, sind vielleicht Petri-Netze was für dich. Je nach Ziel könntest du dich mit temporaler Logik auseinandersetzen, was Fragen erlaubt, die wie folgt aussehen: Kann es ein Werkstück geben, das Station 1 erreicht, nachdem es Station 2 in schlechter Qualität verlassen hat. Bei kleineren Problem könnte man auch mit naiv implementierte Model-Checkern Spaß haben; für größere Probleme schadet etwas Rechenpower und eine clevere Implementierung nicht. |
AW: Baumstruktur aus Daten erzeugen: Eine Herausforderung! ;-)
Die Hinweise auf den Zustandsautomaten waren ja schon ein Volltreffer.
Schau Dir mal an, wie die Windows Workflow Foundation das abbildet. Die können die Wege ja auch alle durchvalidieren und auch in einem Workflow-Designer darstellen. WF ist leider nicht Teil der .NET Foundation und damit (noch?) nicht Open Source, aber mit dotPeek kann man da dennoch ziemlich gut reingucken ;-) |
AW: Baumstruktur aus Daten erzeugen: Eine Herausforderung! ;-)
Zitat:
Eine Liste von Start und Zielstationen, damit kann man sehr einfach feststellen, wo es von einem gegebenen Standpunkt hin gehen kann. Ein Weg dagegen dürfte erstmal sehr uninteressant sein, da es einer Software selbst egal ist, wie der Weg sein könnte (erst Recht unter dynamischen Bedingungen) Wenn es nicht um Visualisierung geht und auch nicht um Validierung: (mögliche) Wege werden doch erst spannend, wenn es um Optimierungen geht, Umwege, Teilebestandsprüfung, Vorbestellung usw. |
AW: Baumstruktur aus Daten erzeugen: Eine Herausforderung! ;-)
Kann es sein, dass es hier einen logischen Fehler gibt?
Code:
class FahrplanEintrag
{ int QuellStation; // -1 = Keine Vorgeschichte, d.h. ZielStation = Start-Station int ZielStation; int Bedingung; } List<FahrplanEintrag> Fahrplan = new List<FahrplanEintrag>() { new FahrplanEintrag() // Station 1 ??? { QuellStation = -1, ZielStation = 1, // schon ein Ring !!! Bedingung = 0, // alle Teile }, new FahrplanEintrag() // Station 2 ??? { QuellStation = 1, ZielStation = 2, // wieder auf sich selber !!! Bedingung = 1, // nur Gutteile }, new FahrplanEintrag() // Station 3 ??? { QuellStation = 1, ZielStation = 1, Bedingung = 2, // nur Schlechtteile (erneute Bearbeitung in Station 1 zulässig) }, new FahrplanEintrag() // Station 4 ??? { QuellStation = 2, ZielStation = 3, Bedingung = 1, // nur Gutteile }, // ... } |
AW: Baumstruktur aus Daten erzeugen: Eine Herausforderung! ;-)
@SirRufo: Die Reihenfolge der Liste ist willkürlich.
Ich denke, ich bin auf dem richtigen Weg. Das hier liefert mir schon recht gute Ergebnisse:
Code:
Grüße und nochmals vielen Dank für die zahlreichen Antworten!
private void GetWorkflowPath(GlobalTypesDatabase.WorkflowTreeNode node, List<int> UsedStations)
{ UsedStations.Add(node.CurrentStation); foreach (var defSingleWf in _dbData.DefWorkflow) { if (defSingleWf.StationLogicalSrc == node.CurrentStation) { bool isJumpBack = UsedStations.IndexOf(defSingleWf.StationLogicalDest) != -1; GlobalTypesDatabase.WorkflowTreeNode newNode = new GlobalTypesDatabase.WorkflowTreeNode(); newNode.CurrentStation = defSingleWf.StationLogicalDest; if (isJumpBack) { node.JumpBackToStation.Add(defSingleWf.StationLogicalDest); } else { node.TargetStations.Add(newNode); GetWorkflowPath(newNode, UsedStations); } } } } Matze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz