我正在寻找“从哪里开始” - 我希望这个问题有点涉及到这个论坛,但我需要一个起点,我的搜索尚未成功:(任何输入都是理解...
我需要使用SystemModeler / OpenModelica接口创建加权图。我们流程的第一步将跳过SystemModeler模拟并将模型传递给Mathematica进行处理
我的问题是在System Modeler GUI中向连接器添加属性:
我需要绘制一个模型,使得:状态A连接到状态B和状态C,权重为.7表示B的路径,.3表示C的路径。我需要创建一个对象来保存重量并将其与连接器相关联。还需要在给定状态的连接器添加到1时发出警告。
关于从哪里开始的任何想法?
答案 0 :(得分:2)
由于Modelica中的连接本身并不包含任何信息,而是传递来自其连接的块的信息,我相信您有两种选择:
以下是您如何做后者的示例:
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;
需要使用nin参数指定组件的输入数量。数字输出将等于k的长度,k是您指定每个连接的权重的列表。例如,您可以使用assert检查ysum是否添加到1,或者如果您想在Mathematica中执行此操作。