一系列的值如何从连续优化变量被排除在外?
2 Ansichten(30天)的
Altere Kommentare anzeigen
下面的代码是一个非常简单的第一次尝试使用优化工具箱。场景包括一个水箱设置泄出的需求。目标是最小化的成本注入水箱,同时保持坦克水平之间的特定值。目前在流量有限,从0到3。
如何修改这个这样的泵是在1.5到3的范围,或0 ?这将更实际地反映泵,泵有一个最小流量,要么是打开或关闭。
= (0 0 1 3 4 3 4 1 0 0)';
价格= (0.95 0.95 1.2 1.3 0.95 1.1 1 1 1)';
nPeriods =元素个数(出);
坦克= 8;%初始坦克水平
在= optimvar (“在”nPeriods,“下界”0,“UpperBound”3);
概率= optimproblem (“ObjectiveSense”,“最小化”);
商店= optimexpr (nPeriods);
为2 = 1:nPeriods
如果2 = = 1
存储(ii) =罐+ ((2)- (2));
其他的
存储(ii) =存储(ii-1) + ((2) - (2));
结束
结束
prob.Constraints。storeUpperCons =(存储< = 10);
prob.Constraints。storeLowerCons =(商店> = 6);
成本=价格。*;
概率。目标=总和(成本);
索尔=解决(问题);
%让情节槽阵列
为2 = 1:nPeriods
如果2 = = 1
水箱(2)=水箱(2)+ (sol.in (ii)两(2));
其他的
坦克(ii) =坦克(ii-1) + (sol.in (ii)两(2));
结束
结束
%的阴谋
tlo = tiledlayout (3,1);
nexttile
酒吧([溶胶。在出)
传奇(“在”,“出”)
ylabel (“流”)
xlimits =得到(gca,“XLim”);
nexttile
栏(罐)
ylabel (“存储”)
xlim (xlimits)
nexttile
栏(价格)
ylabel (“价格”)
xlim (xlimits)
包含(tlo,“时间”)