資源簡介
yalmip(matlab)解決UC問題范例1(補充).rar

代碼片段和文件信息
Nunits?=?3;
Horizon?=?48;
Pmax?=?[100;50;25];
Pmin?=?[20;40;1];
Q?=?diag([.04?.01?.02]);
C?=?[10?20?20];
Pforecast?=?100?+?50*sin((1:Horizon)*2*pi/24);
onoff?=?binvar(NunitsHorizon‘full‘);
P?????=?sdpvar(NunitsHorizon‘full‘);
Constraints?=?[];
for?k?=?1:Horizon
??Constraints?=?[Constraints?onoff(:k).*Pmin?<=?P(:k)?<=?onoff(:k).*Pmax];
end
for?k?=?1:Horizon
??Constraints?=?[Constraints?sum(P(:k))?>=?Pforecast(k)];
end
objective?=?0;
for?k?=?1:Horizon
??objective?=?objective?+?P(:k)‘*Q*P(:k)?+?C*P(:k);
end
ops?=?sdpsettings(‘verbose‘1‘debug‘1);
optimize(Constraintsobjectiveops)
stairs(value(P)‘);
legend(‘Unit?1‘‘Unit?2‘‘Unit?3‘);
minup???=?[6;30;1];
mindown?=?[3;6;3];
for?k?=?2:Horizon
?for?unit?=?1:Nunits
??%?indicator?will?be?1?only?when?switched?on
??indicator?=?onoff(unitk)-onoff(unitk-1);
??range?=?k:min(Horizonk+minup(unit)-1);
??%?Constraints?will?be?redundant?unless?indicator?=?1
??Constraints?=?[Constraints?onoff(unitrange)?>=?indicator];
?end
end
for?k?=?2:Horizon
?for?unit?=?1:Nunits
??%?indicator?will?be?1?only?when?switched?off
??indicator?=?onoff(unitk-1)-onoff(unitk);
??range?=?k:min(Horizonk+mindown(unit)-1);
??%?Constraints?will?be?redundant?unless?indicator?=?1
??Constraints?=?[Constraints?onoff(unitrange)?<=?1-indicator];
?end
end
ops?=?sdpsettings(‘verbose‘2‘debug‘1);
optimize(Constraintsobjectiveops);
stairs(value(P)‘);
legend(‘Unit?1‘‘Unit?2‘‘Unit?3‘);
Unit3Levels?=?[0?1?6?10?12?20];
for?k?=?1:Horizon
??Constraints?=?[Constraints?ismember(P(3k)Unit3Levels)];
end
optimize(Constraintsobjective);
stairs(value(P)‘);
legend(‘Unit?1‘‘Unit?2‘‘Unit?3‘);
Nhist?=?max([minup;mindown]);
Pforecast?=?sdpvar(1Horizon);
HistoryOnOff?=?sdpvar(NunitsNhist‘full‘);
DemandSlack?=?sdpvar(1Horizon);
PreviusP?=?sdpvar(31);
DemandPenalty?=?1000;
ChangePenalty?=?1000;
Constraints?=?[];
objective?=?0;
for?k?=?1:Horizon
??Constraints?=?[Constraints?onoff(:k).*Pmin?<=?P(:k)?<=?onoff(:k).*Pmax];
??Constraints?=?[Constraints?sum(P(:k))+DemandSlack(k)?>=?Pforecast(k)];
??Constraints?=?[Constraints?DemandSlack(k)?>=?0];
??objective?=?objective?+?P(:k)‘*Q*P(:k)?+?C*P(:k);
??objective?=?objective?+?DemandPenalty*DemandSlack(k);
end
Constraints?=?[Constraints?consequtiveON([HistoryOnOff?onoff]minup)];
Constraints?=?[Constraints?consequtiveON(1-[HistoryOnOff?onoff]mindown)];
for?k?=?2:Horizon
???objective?=?objective?+?ChangePenalty*norm(P(:k)-P(:k-1)1);
end
objective?=?objective?+?ChangePenalty*norm(P(:1)-PreviusP1);
Parameters?=?{HistoryOnOff?Pforecast?PreviusP};
Outputs?=?{Ponoff};
ops?=?sdpsettings(‘verbose‘2‘debug‘1);
Controller?=?optimizer(ConstraintsobjectiveopsParametersOutputs);
oldOnOff?=?repmat([1;1;0]1Nhist);
oldP?=?repmat([100;40;0]1Nhist);
for?k?=?1:500
????%?base-line?forecast
????forecast?=?100;
????%?Daily?fluctuation
????forecast?=?forecast?+?50*sin((k:k+Horizon-1)*2*p
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4285??2018-10-29?20:25??yalmip解決UC問題范例1(補充)\最終程序.m
?????文件??????26449??2018-10-28?11:22??yalmip解決UC問題范例1(補充)\補充1-考慮將機組啟停時間限制.docx
?????文件???????1491??2018-10-28?11:08??yalmip解決UC問題范例1(補充)\補充1程序-考慮將機組啟停時間限制.m
?????文件??????27579??2018-10-29?19:54??yalmip解決UC問題范例1(補充)\補充2.docx
?????文件??????17775??2018-10-29?20:29??yalmip解決UC問題范例1(補充)\補充3.docx
?????文件??????29491??2018-10-27?17:08??yalmip解決UC問題范例1(補充)\附錄-yalmip范例解析1.docx
?????目錄??????????0??2018-10-29?20:29??yalmip解決UC問題范例1(補充)
-----------?---------??----------?-----??----
???????????????107070????????????????????7
評論
共有 條評論