MATLAB编程0-1规划问题 下载本文

页眉内容

MATLAB语言应用————最优化 MATLAB编程线性规划问题

第二章0-1规划

MATLAB的0-1规划函数bintprog是针对下述0-1规划:

minz?f*xs.tA*x?baeq*x?beqx?[x1,x2,xn],xi?0or1,i?1,2,(2.1)

n解0-1规划(2.1)的0-1规划函数bintprog表述为 [x,fv,exitflag,output]=bintprog(f,A,b,aeq,beq)(2.2) 输入部分: f为目标函数,实为目标函数的系数。 A为(2.1)中的不等式约束矩阵 b为(2.1)中的不等式约束向量 aeq为(2.1)中的等式约束矩阵 beq(2.1)中的等式约束向量 输出部分: x为最优解fval为最优值 exitflag为输出标志exitflag=1,有最优解exitflag=0,迭代次数超过设定次数 exitflag==-2,约束区域不可行exitflag=-3,问题无解 output,表明算法和迭代情况 如果我们不需要了解迭代情况和存储情况,可将0-1规划函数bintprog写成 [x,fv,ex]=linprog(f,A,b,aeq,beq)(2.3) 在函数bintprog中,输入或输出元素的符号可以变更,如(2.3)中ex仍为输出标志,但元素的符

号位置不能变更。在输出部分,如有缺者,可用[]号代替。 函数bintprog的使用要点与函数linprog的使用要点相同。

函数是为求目标函数的最小值而设置的,如要求函数的最大值,可先求出(?f)的最小值fv,则?fv必为f的最大值。

例一用函数bintprog求解下列0-1规划

精心整理

页眉内容

用MATLAB语言编程如下:

f=-[1,2,2,-6],-4 A=[3,2,-1,1,2;2,4,-2,-1,-2];

b=[5,5];

[x,fv,ex]=bintprog(f,A,b,[],[]);

X,-fv 求解如下 ex=1,fv=-5,x=[1,1,1,0,0] 例二用函数bintprog求解下列0-1规划 用MATLAB语言编程如下: f=[3,7,-1,1] A=[-2,1,-1,1;-1,1,-6,-4]; A=[A;-5,-3,0,-1] b=-[1,8,5]; [x,fv,ex]=bintprog(f,A,b,[],[]); 求解如下ex=1,fv=-3,x=[1,0,1,,1] 例三用函数bintprog求解下列0-1规划 用MATLAB语言编程如下: f=[15,18,21,19,23,22,26,17,16]; z2=zeros(1,2);z3=zeros(1,3); z6=zeros(1,6);o3=zeros(1,3); q=[o3,z6;z3,o3,z3;z6,o3]; q=[q;1,z2,1,z2,1,z2]; q=[q;0,1,z2,1,z2,1,0]; q=[q;z2,1,z2,1,z2,1];

bq=ones(6,1)

[x,fv,ex]=bintprog(f,[],[],q,bq);

求得

Ex=1,fv=53,x=[0,1,0,1,0,0,0,0,1]

精心整理