整数规划该如何用MATLAB求解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整数规划该如何用MATLAB求解?相关的知识,希望对你有一定的参考价值。

整数线性规划要下载工具箱来解决,很麻烦
用LINGO吧,方便简单,下面附带一个例子:
LINGO软件用于线性或非线性规划(无论是连续规划还是整数规划),因此包含了LINDO的功能。在LINGO中,所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用bin(x1)表示x1为0-1整数。

钢管下料问题的求解
以切割后剩余的总余料量最小为目标,建立LINGO模型:
min= 3*x1+x2+3*x3+3*x4+x5+x6+3*x7;
4*x1+3*x2+2*x3+x4+x5 >=50;
x2+2*x4+x5+3*x6 >= 20;
x3+x5+2*x7 >= 15;
@gin(x1);
@gin(x2);
@gin(x3);
求解可以得到最优解如下:
OBJECTIVE FUNCTION VALUE
1) 27.00000
VARIABLE VALUE REDUCED COST
X1 0.000000 3.000000
X2 12.000000 1.000000
X3 0.000000 3.000000
X4 0.000000 3.000000
X5 15.000000 1.000000
X6 0.000000 1.000000
X7 0.000000 3.000000
参考技术A 真不好意思,真的不知道啊!!

优化求解基于matlab整数规划求解机票超售优化赔付问题含Matlab源码 2182期

一、问题

A航空公司每天有6班航班从上海到北京,从上午10点到晚上8点,每两小时发一班航班。某天获知,前三班机每班可以容纳100名旅客,后三班机每班可以容纳150名旅客。如果某次航班超售,A航空公司可以把某预定了该次航班的旅客转到晚一点的航班,并且针对该延误两小时以上(含两小时)的旅客赔偿200元,每再多一小时,多赔偿20元。A航空公司总是可以把延期到晚上8点以后的旅客安排到另外的航空公司的11点航班上,最后安排的航班总有足够的位置. 假设某天,A航空公司卖了
T10,T12,T14,T16,T18,T20
张机票, 分别对应10点,12点,14点,16点,18点和20点的航班.
求解:从上海到北京的经济上的最优人员安排方案。

二、部分源代码

t10 = 112;
t12 = 137;
t14=140;
t16=130;
t18=120;
t20=130;

%化简并提系数:200*(x(2)+x(3)+x(4)+x(5)+x(6)+x(7) + x(9)+x(10)+x(11)+x(12)+x(13) + x(15)+x(16)+x(17)+x(18) + x(20)+x(21)+x(22) + x(24)+x(25) + x(27) + x(28)) + 20*( 2*(x(2)+x(9)+x(15)+x(20)+x(24)) + 4*( x(3)+x(10)+x(16)+x(21) ) + 6*( x(4)+x(11)+x(17) ) + 8*( x(5)+x(12) ) + 10x(6)) +20( 13x(7) + 11x(13) + 9x(18) + 7x(22) + 5x(25) + 3x(27) )
f_12= [0 240 280 320 360 400 213 0 240 280 320 360 211 0 240 280 320 209 0 240 280 207 0 240 205 0 203 200];

%指明变量为整数
intcon = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
];
%不等式约束
% A是7行28列矩阵,b从理论上应该也是7行1列矩阵才对,表示7个不等式约束
A = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0;
0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0;
0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0;
0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1];
b=[100 100 100 150 150 150 get_if_eg_0(t10 + t12 + t14 + t16 + t18 + t20-100-100-100-150-150-150)]';
%等式约束
Aeq= [
1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0];
beq = [t10 t12 t14 t16 t18 t20];
%变量最小值
lb=zeros(1,28);
ub=[];
[x, fval]=intlinprog(f_12,intcon,A,b,Aeq,beq,lb,ub);
fprintf(‘当各航班售票数(含超售票数)分别为:t10=%d,t12=%d,t14=%d,t16=%d,t18=%d,t20=%d时’, t10,t12,t14,t16,t18,t20);
format_result(x)
fprintf(‘按上述安排旅客乘坐班机最优,费用为:%f\\n’, fval);
%linprog(f_12,intcon,A,b,Aeq,beq,lb,ub)

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 郑鸿瑞,赵亚文,周风波,甘昭林,胡祎,谭燕花.基于变步长因子的改进LMS算法[J].电子制作. 2022,30(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于整数规划该如何用MATLAB求解?的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab求解0-1规划问题

如何用matlab求解0-1规划问题?

用matlab求解整数规划双角标问题

matlab整数规划程序

求用动态规划的方法求解简单的整数规划问题的matlab程序或者C++程序代码,高手们帮帮忙

如何利用matlab cvx求解0-1整数规划