intlinprog求和MILP优化问题:已经解决了在gam(提供代码),但在MATLAB混淆

2视图(30天)
困惑:如何使Aeq,这也困惑如何使用值的一个向量在solve.m乐趣
请帮我解决了这个最大化策略,gam但困在MATLAB
gam工作代码:
SP、PCL、PCM、PCH ICL, ICM,我,CL,厘米,CH, 1, RM2 = 1 x54翻倍
R = [500500]
预算= 1000
我想优化F(下面定义)并找到的值X, Y (int)、Z (int), L, M,使用intlinprog H
PROD.m
函数[F, A, B, Aeq,说真的,intcon,磅,乌兰巴托)= Prod (SP、PCL、PCM、PCH ICL, ICM,我,CL,厘米,CH, 1, RM2, R,预算,X, Y, Z, L, M, H)
D =长度(X);
F = 0;
d = 1: d
F = F-SP (d) * X (d) + PCL (d) * L (d) + PCM (d) * M (d) + PCH (d) * H (d);
结束
(1:)= (1;0;-10000;0,0,0);
(2:)= (0,1,0,1,0,0);
(3:)= (0,1,0,0,0,1];
d = 1: d
一(4,1)= (1)+ X (d) * 1 (d);
(5、1)= (1)+ X (d) * RM2 (d);
(6,4)= (6,4)+ ICL (d) * L (d);
5 (6)= (6 5)+ ICM (d) * M (d);
一个(6,6)=(6,6)+我(d) * H (d);
结束
B = [0, 0, 1, R (1)、R(2);预算)';
intcon = (2、3);
Aeq = 0(55岁,6);
d = 1: d
Aeq (d, 1) = X (d);
Aeq (d, 4) = cl (d) * L (d);
Aeq (d, 5) =厘米(d) * M (d);
Aeq (d, 6) = ch (d) * H (d);
结束
Aeq(55岁)= (0,0,1,1,1,1,);
说真的= 0(55岁,1);
磅= [0 0 0 0 0 0];
乌兰巴托=[正正正正正正);
结束
解决。M(困惑)
clc;明确;
有趣= @Prod;
[F, A, B, Aeq,说真的,intcon,磅,乌兰巴托)=乐趣(SP、PCL、PCM、PCH ICL, ICM,我,CL,厘米,CH, 1, RM2, R,预算,X, Y, Z, L, M, H);
% X, Y, Z, L, M, H
[x, fval] = intlinprog (F intcon A、B Aeq,说真的,磅,乌兰巴托);

接受的答案

艾伦·韦斯
艾伦·韦斯 2020年11月4日
编辑:艾伦·韦斯 2020年11月4日
我怀疑你是最好的 具体问题具体分析的方法 。你会一点开销学习这种方法,但我相信,它将整体更快为你这么做。
具体问题具体分析MILP示例,请参阅 基于混合整数线性规划
艾伦·韦斯
MATLAB数学工具箱文档
2的评论
shubham kumar gupta
shubham kumar gupta 2020年11月4日
编辑:shubham kumar gupta 2020年11月4日
我虽然是transfrom X (d) * 1 (d) X1, X2, X3……与每个系数为1,X54 RM2,收款…RM54
它做的工作
:F (1) = (- sp的;0(54岁,1)0(54岁,1),PCL的;PCM; PCH);
(1:)=[1(54岁,1),0(54岁1);-1000000 * 1(54岁,1);0(54岁,1),0(54岁,1),0(54岁,1)];
(2:)=[0(54岁1);1 * 1(54岁1);0(54岁1);(54岁,1)的;0(54岁1);0(54岁,1)];
(3:)=[0(54岁,1),1(54岁,1),0(54岁,1),0(54岁,1),0(54岁,1),则(54岁,1)];
(4:)=(1’;0(54岁,1)0(54岁,1),0(54岁,1),0(54岁,1),0(54岁,1)];
:一个(5日)= (RM2; 0(54岁,1)0(54岁,1),0(54岁,1),0(54岁,1),0(54岁,1)];
:一个(6日)=[0(54岁,1),0(54岁,1),0(54岁,1),IL”; IM, IH的];
B = [0, 0, 1, R (1)、R(2);预算);
intcon = (55:162);
磅= 0 (1324);
乌兰巴托=正无穷(1324);
Aeq(1) =(1(54岁,1),0(54岁,1),0(54岁1);1 * CL; 1 *厘米,1 * CH ');
Aeq(2) =[0(54岁,1),0(54岁1);1 * 1(54岁1);(54岁,1)的,(54岁,1)的;那些(54岁,1)];
说真的= (0,0);
[x, FVAL EXITFLAG、输出]= intlinprog (F intcon A、B Aeq,说真的,磅,乌兰巴托);
FVAL = 1 * FVAL;
有可能让它在循环和容易或更好的,而不是考虑X (d) X1 .... X54吗
但恐怕从MATLAB解决方案和联欢”没有“匹配! !巨大的差异在gam我变得在matlab 27669.4327和2891.949960。10个因子的差异

登录置评。

更多的答案(0)

类别

找到更多的在线性规划和整数线性规划帮助中心文件交换

社区寻宝

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

开始狩猎!