MILP问题是时间的函数
6视图(30天)
显示旧的评论
我已经解决了我的MILP问题使用
intlinprog
,这部分是好。我现在扩展相同的问题,但现在是depedent准时(即我是解决优化问题为每个小时时间步)。
我的问题是:如何延长我的目标函数和约束是时间depedent吗?
谢谢你!
接受的答案
埃米尔哈姆萨
2020年4月14日
我已经修改这个例子的文档:
//www.tianjin-qmedu.com/help/optim/ug/intlinprog.html mw_cd504ff9 - 629 b - 402 f - acb0 aa7c7926290——7
解释使用解决方案的效果从之前的时间步作为下一次迭代的初始点。在下面的例子中,我使用一个for循环来解决一个MILP问题20次,每次稍微不同的目标函数。
首先,检查代码,不使用解决方案从上一次迭代的初始猜测下一个迭代。最初的猜测总是相同的。
Aeq = [22 13 26 33 21 3 14 26
39 16 22日28日26日30日23日24
18 14 29日27日30日38 26 26
41 26 28 36 38 16 18 - 26岁);
说真的= [7872
10466年
11322年
12058);
N = 8;
1磅= 0 (N);
intcon = 1: N;
10 13 17 f = [2 7 5 7 3];
x0 = [8 62 23 103 53 84 46 34);
选择= optimoptions (“intlinprog”,“显示”,“关闭”);
抽搐
为i = 1:20
f(3:5) =兰迪(15][1,1,3);%在每个迭代目标函数改变
(x2, fval2) = intlinprog (f intcon [] [], Aeq,说真的,磅,[],x0,选择);
结束
toc
执行的时间
运行时间是24.518613秒。
下面的代码更新初始猜测
Aeq = [22 13 26 33 21 3 14 26
39 16 22日28日26日30日23日24
18 14 29日27日30日38 26 26
41 26 28 36 38 16 18 - 26岁);
说真的= [7872
10466年
11322年
12058);
N = 8;
1磅= 0 (N);
intcon = 1: N;
10 13 17 f = [2 7 5 7 3];
x0 = [8 62 23 103 53 84 46 34);
选择= optimoptions (“intlinprog”,“显示”,“关闭”);
抽搐
为i = 1:20
f(3:5) =兰迪(15][1,1,3);
(x2, fval2) = intlinprog (f intcon [] [], Aeq,说真的,磅,[],x0,选择);
x0 = x2;
结束
toc
执行的时间
运行时间是8.489186秒。
这个例子显示了一个3倍的速度增加。实际获得不同问题的问题,但是,它比只使用一个随机初始猜测。