首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SystemModeler连接器权重

SystemModeler连接器权重
EN

Stack Overflow用户
提问于 2016-04-16 06:37:22
回答 1查看 73关注 0票数 2

我正在寻找“从哪里开始”-我希望这个问题有点涉及到这个论坛,但我需要一个起点,我的搜索还没有成功:(任何意见将不胜感激…

我需要使用SystemModeler / OpenModelica接口创建一个加权图。我们流程的第一步将跳过SystemModeler模拟,并将模型传递给Mathematica进行处理

我的问题是关于向System Modeler GUI中的连接器添加属性:

我需要绘制这样一个模型:状态A连接到状态B和状态C,到B的路径的权重为.7,C的路径的权重为.3。我需要创建一个对象来保持权重,并将其与连接器相关联。还需要在给定状态的连接器未加到1时发出警告。

对于从哪里开始有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-19 00:36:21

由于Modelica中的连接本身不包含任何信息,而是传递它所连接的块中的信息,因此我相信您有两种选择:

  1. 在两个节点之间放置一个组件,用于指定connection.
  2. Have的权重每个节点的已定义输入和输出,其中节点的输出指定连接的权重,并对节点上的输入求和以检查它们是否等于1。

下面是一个如何实现后一种方法的示例:

代码语言:javascript
复制
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中执行此操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36657924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档