0

又是我。对不起,可能是愚蠢的问题,但我是新手,所以我遇到了最初的问题和困境。

我想在这个理论案例上使用 dymola 优化库来优化碳排放。有电网和光伏作为供应手段,有需求。如果使用网格,它会排放一些碳。因此,应始终使用 PV。但有时光伏发电不足,所以不得不使用电网。电网和光伏使用量由变量 x1 和 x2 控制,变量 x1 和 x2 应限制在 0 到 1 之间(以百分比表示)。如果我运行以下代码,它说明变量太多。如果我将 x1 设置为值为 1 的参数,它会运行但无法进行优化,因为即使我在优化设置中设置 x1 可以从 0 更改为 1,但由于代码的原因它无法更改它。

我该怎么做才能运行它?我想优化依赖于 x1 和 x2 的排放变量。变量 x1 和 x2 的约束应为 0<=x1<=1, 0<=x2<=1。x1 和 x2 缺少一个方程。但是 x1 + x2 不需要为 0,因为 solarThermal.y 和电不相等。那么有没有一种方法可以从优化中改变 2 个变量以最小化第 3 个变量?我可以将 x1 设置为 1 作为参数,以便可以编译代码,然后我希望优化同时改变 x1 和 x2。可能吗?

先感谢您!

model konacno
parameter Real electricity=999;
Real x2(start=0);
Real x1;
Real emissions(start=0);
Modelica.Blocks.Sources.TimeTable solarThermal(table =  [0,300;3590,295;3600,200;7195,201;7200,300;10795,299;10800,200]);
Modelica.Blocks.Sources.TimeTable heatDemand(table = [0,300;3590,295;3600,250;7195,251;7200,300;10800,300]);
equation 
0=x2*electricity+x1*solarThermal.y - heatDemand.y;
der(emissions)=0.13*x2*electricity;
end konacno;
4

0 回答 0