具有冗余(配电)模拟的电路

问题描述 投票:0回答:1

我需要在基本层面上模拟具有冗余的电路,例如这样:

Electric circuit with redundancies

我们有两台发电机、几个配电器和设备。 我正在尝试从设备功率要求开始模拟每个分支上的电流(例如,设备 1 需要 5 安培,设备 2 15,设备 3 ...,)

我的尝试是通过实现一个简单的图表:

  • 我们从最后一级的孩子开始,他们询问父母目前需要工作
  • 每个家长检查是否收到每个孩子的请求,如果没有就等待
  • 所有其他家长汇总每个孩子当前的要求,然后向自己的家长询问
  • 这样做直到我们不再有父母 现在我们分配权力:
  • 上述算法中的最后一组父级是电源(在本例中为发电机)
  • 每个电源都知道需要多少电流,它只是将可用功率(或电流)按比例分配给每个孩子(如果过载,可能就足够了,甚至没有,这很好)
  • 每个孩子都做同样的事情,直到我们到达底部

现在让我停下来的问题是: 某些设备(配电器)可以从多个父设备获取电力。在这种情况下,正常的解决方案是在父级之间平均分配电力请求,但是,如果其中一个父级无法提供电力(较小的发电机或向许多设备供电),则分配器将向其他父级要求更多。在我看来,如果是这种情况,不可能提前知道,因为需要完全运行上述算法才能知道发电机是否过载,为此,我必须提前选择经销商是否会要求它的父母 50/50 或 30/70 或 ... .

我能想到的唯一解决方案是迭代:以 50/50 的比例应用一次算法。如果一台发电机可以提供 30%,我会记下这一点并再次模拟,要求另一台发电机提供 70%,很好。也许不是......另一个发电机现在无法为另一个分配器提供足够的电力,因此我必须再次模拟更改另一个分配器的 50/50 百分比。 恐怕这可能过于复杂,并且算法永远不会收敛到一个好的结果。 我从来没有遇到过这种问题,经过很多天的沉睡,我仍然找不到最好的解决方案。我想避免不良做法并使用良好的软件设计。 有没有人有针对此类问题的通用解决方案来指点我?

谢谢大家

PS:语言不是问题(这是算法问题),但如果相关的话我用 C++ 编写它

algorithm simulation graph-theory physics
1个回答
0
投票

这是一个流量问题。

这里是计算流量问题的算法:

  • 使用 Dijkstra 算法找到从源到目的地的路径

  • 查找路径上任何链路的最小容量

  • 将路径上所有链路的容量减少最小容量

  • 删除现在容量为零的任何链接

  • 重复上述步骤,直到找不到更多路径。

您需要将发电机的链路容量设置为它们可以生成的最大功率,并将设备的链路容量设置为设备的功率需求。

这里有一些实现此功能的 C++ 代码https://github.com/JamesBremner/PathFinder/blob/7b98a412398e1aea8934a8002822e1ccef9b888a/src/GraphTheory.cpp#L755-L859。此文档位于 https://github.com/JamesBremner/PathFinder/wiki/Flows,完整的应用程序位于 https://github.com/JamesBremner/PathFinder

© www.soinside.com 2019 - 2024. All rights reserved.