2014-02-18 43 views
0

我试图优化(最小化),变量“排放”使用库优化Dymola的的ModelOptimization功能使用下面的代码:为什么使用dymola优化库不尊重参数边界?

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; 

的问题是,它没有尊重我设置的界限对于需要从0到1(1到100%)的变量x1和x2。如果solarThermal用于电力,排放量将会很小。

这是设置图片: Criteria Parameters Optimization Simulation Results 正如你可以看到X1和X2 -0.1大约到1.1的时候就应该最大从0到1去你知道什么是这是为什么?

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

+0

我假设你已经有一个看看Dymola的用户手册吗?第2卷第3章是关于设计优化。 – matth

回答

0

我想你是在错误的轨道上。您选择“x1”和“x2”作为要优化的参数,但“x1”和“x2”未定义为模型中的参数。模拟运行期间参数是固定的。

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

+0

谢谢你指出这一点。我会尝试如果这对我有用。 – bmorvaj