2016-04-15 9 views
2

Ich bin auf der Suche nach "wo ich anfangen soll" - Ich erwarte, dass dieses Problem ein wenig in dieses Forum involviert ist, aber ich brauche einen Startpunkt und meine Suche war noch nicht erfolgreich :(any Eingang würde geschätzt ...SystemModeler Connector Weight

ich brauche einen gewichteten Graph mit dem SystemModeler/OpenModelica Schnittstelle zu erstellen. der erste Schritt unseres Verfahrens wird die SystemModeler Simulation überspringen und das Modell zu Mathematica für die Verarbeitung

Meine Frage geben ist das Hinzufügen von Attributen zu einem Connector in der grafischen Benutzeroberfläche des System Modeler:

Ich muss ein Modell wie z Das: State A ist mit State B und State C verbunden, mit einem Gewicht von .7 für den Pfad zu B und .3 dem Pfad für C. Ich muss ein Objekt erstellen, das das Gewicht enthält und es dem Connector zuordnet. Außerdem müssen Sie warnen, wenn die Anschlüsse eines bestimmten Status nicht zu 1 hinzugefügt werden.

Haben Sie Ideen, wo Sie anfangen sollen?

Antwort

2

Als Verbindungen in Modelica selbst keine Informationen halten, eher entlang Informationen aus den Blöcken vorbei, dass es eine Verbindung, ich glaube, Sie haben zwei Möglichkeiten:

  1. Setzen Sie eine Komponente zwischen zwei Knoten, die das Gewicht angibt die Verbindung.
  2. einen definierten Eingang und Ausgang von jedem Knoten in dem die Ausgabe von einem Knoten, das Gewicht der Verbindung angibt, und die Eingänge auf einem Knoten summieren, um zu überprüfen, dass sie gleich 1

Hier ist ein Beispiel wie Sie das letztere tun könnten:

model WeightedGraph 
    model Node 
    Modelica.Blocks.Interfaces.RealInput u[nin]; 
    Modelica.Blocks.Interfaces.RealOutput y[size(k, 1)]; 
    Real usum; 
    parameter Real k[:] = {0}; 
    parameter Integer nin = 0; 
    equation 
    y = k; 
    usum = sum(u); 
    end Node; 
    Node A(nin = 0, k = {0.7}); 
    Node B(nin = 1, k = {0.3}); 
    Node C(nin = 1); 
equation 
    connect(A.y[1], B.u[1]); 
    connect(B.y[1], C.u[1]); 
end WeightedGraph; 

Die Anzahl der Eingänge in Ihre Komponente muss mit dem Parameter nin angegeben werden. Die Anzahl der Ausgaben entspricht der Länge von k, wobei es sich um eine Liste handelt, in der Sie eine Gewichtung für jede Verbindung angeben. Sie könnten zum Beispiel überprüfen, ob ysum zu 1 mit assert addiert oder ob Sie das in Mathematica machen wollten.