【问题标题】:Why parameters bounds are not respected using dymola optimization library?为什么使用 dymola 优化库不遵守参数界限?
【发布时间】:2014-02-18 10:02:30
【问题描述】:

我正在尝试使用以下代码在 dymola 库优化中使用 ModelOptimization 函数优化(最小化)变量“排放”:

model opt
parameter Real electricity=999;
Real x2(start=0);
Real x1(start=0);
Real usageEle;
Real usagePV;
Real emissions(start=0);
Modelica.Blocks.Sources.TimeTable solarThermal(table = [0,400;3599,400;3600,200;7199,200;7200,400;10799,400;10800,200]);
Modelica.Blocks.Sources.TimeTable heatDemand(table = [0,300;3600,300;7200,300;10800,300]);
equation 
x2*electricity+x1*solarThermal.y=heatDemand.y;
0=x2*electricity+x1*solarThermal.y - heatDemand.y;
total=x2*electricity+x1*solarThermal.y - heatDemand.y;
usageEle=x2*electricity;
usagePV=x1*solarThermal.y;
der(emissions)=0.13*x2*electricity;
end opt;

问题在于它不遵守我为变量 x1 和 x2 设置的界限,这些界限需要从 0 到 1(1 到 100%)。如果使用 solarThermal 而非电力,排放量将降至最低。

这是设置图片: 正如你所看到的,x1 和 x2 大致从 -0.1 变为 1.1,而它们的最大值应该从 0 变为 1。你知道这是什么原因吗?

任何帮助将不胜感激,因为我有点卡住并且不知道如何继续。谢谢!

【问题讨论】:

  • 我假设您已经看过 Dymola 用户手册?第 2 卷第 3 章是关于设计优化的。

标签: modelica dymola openmodelica


【解决方案1】:

我猜你走错了路。您为要优化的参数选择了“x1”和“x2”,但“x1”和“x2”并未定义为模型中的参数。参数在模拟运行期间是固定的。

如果你想改变时间轨迹,你必须使用优化任务“轨迹优化”

【讨论】:

  • 感谢您指出这一点。如果这对我有用,我会尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2019-09-24
相关资源
最近更新 更多