具体问题具体分析优化——“Linprog停止,因为它超过了其分配的内存”

14日视图(30天)
我试图解决一个简单的线性优化问题使用“具体问题具体分析优化”的方法。解决优化问题我使用“linprog”和“dual-simplex-algorithm”。
变量和约束的数量取决于数量的时间步长T .变量T反过来取决于考虑时间T和一个时间步dt的持续时间。我可以解决这个问题,如果我保持时间步骤的数目足够小或者如果我使用“Solver-Based优化”的方法。然而,我必须能够解决这个问题一段时间的24小时的15/60。这导致大量的T = 97时间步。这个数字的时间步骤,我recieive以下错误信息:“Linprog停止,因为它超过分配的内存”。我不明白为什么“具体问题具体分析优化方法耗尽内存对于这样一个小问题。
这是我的代码:
dt = 15/60;
t = (0: dt: 24);%收取时间24小时
T =长度(T)
E_Batt = 22;
E_inital = 9;
E_min = 12;
P_max = 10;
P_min = 0;
E_1 = optimvar (“E_1”T“UpperBound”,E_Batt);
P_1 = optimvar (“P_1”T“下界”P_min,“UpperBound”,P_max);
Charging_1 = optimproblem ();
Charging_1。ObjectiveSense =“最大化”;
RowConstraints = optimconstr (T);
n = 1: T
如果n ~ = 1
RowConstraints (n) = E_1 (n - 1) - E_1 (n) + P_1 (n) * dt = = 0;
其他的
RowConstraints (n) = E_1 (n) = = E_inital;
结束
结束
Charging_1.Constraints。c = RowConstraints;
%显示(Charging_1.Constraints.c);
objfun =总和(E_1);
Charging_1。目标= objfun;
%显示(Charging_1.Objective)
时间=解决(Charging_1);
Schedule.E_1
Schedule.P_1
图(1)
情节(t, Schedule.E_1)
标题(“Ladezustand”)
包含(Ladezeit [h]”)
ylabel (“SoC (%)”)
图(2)
栏(t, Schedule.P_1)
标题(“Ladeleistung”)
包含(Ladezeit [h]”)
ylabel (“Leistung(千瓦)”)
有任何问题与我的代码吗?
谢谢你!

接受的答案

艾伦·韦斯
艾伦·韦斯 2021年5月3日
对不起,我不知道为什么默认的算法给出了这个错误。的 “内点” 算法很容易解决的。
dt = 15/60;
t = (0: dt: 24);%收取时间24小时
T =长度(T)
T = 97
E_Batt = 22;
E_inital = 9;
E_min = 12;
P_max = 10;
P_min = 0;
E_1 = optimvar (“E_1”T“UpperBound”,E_Batt);
P_1 = optimvar (“P_1”T“下界”P_min,“UpperBound”,P_max);
Charging_1 = optimproblem ();
Charging_1。ObjectiveSense =“最大化”;
RowConstraints = optimconstr (T);
% n = 1: T
%如果n ~ = 1
% RowConstraints (n) = E_1 (n - 1) - E_1 (n) + P_1 (n) * dt = = 0;
其他的%
% RowConstraints (n) = E_1 (n) = = E_inital;
%结束
%结束
n2 = 2: T;
RowConstraints (1) = E_1 (1) = = E_inital;
RowConstraints (n2) = E_1 (n2) = = E_1 (n2-1) + P_1 dt (n2) *;
Charging_1.Constraints。c = RowConstraints;
%显示(Charging_1.Constraints.c);
选择= optimoptions (“linprog”,“算法”,“内点”);
objfun =总和(E_1);
Charging_1。目标= objfun;
%显示(Charging_1.Objective)
时间=解决(Charging_1,“选项”、选择);
使用linprog解决问题。最低发现满足约束。优化完成,因为目标函数中引入可行的方向,在选择价值函数的宽容,和约束中满意的选择价值约束宽容。
Schedule.E_1
ans = 97×1
9.0000 11.5000 14.0000 16.5000 19.0000 21.5000 22.0000 22.0000 22.0000 22.0000
Schedule.P_1
ans = 97×1
0 10.0000 10.0000 10.0000 10.0000 10.0000 2.0000 0.0000 0.0000 0.0000
图(1)
情节(t, Schedule.E_1)
标题(“Ladezustand”)
包含(Ladezeit [h]”)
ylabel (“SoC (%)”)
图(2)
栏(t, Schedule.P_1)
标题(“Ladeleistung”)
包含(Ladezeit [h]”)
ylabel (“Leistung(千瓦)”)
艾伦·韦斯
MATLAB数学工具箱文档
2的评论

登录置评。

更多的答案(0)

类别

找到更多的在开始使用优化工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的