我正在尝试使用以下代码在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.你知道这是什么原因吗?
任何帮助将不胜感激,因为我有点卡住,不知道如何继续。谢谢!
答案 0 :(得分:0)
我猜你是在错误的轨道上。你选择" x1"和" x2"对于要优化的参数,但是" x1"和" x2"未定义为模型中的参数。参数在模拟运行期间是固定的。
如果您想改变时间轨迹,则必须使用优化任务"轨迹优化"