MATLAB编程0-1规划问题

MATLAB编程0-1规划问题
MATLAB编程0-1规划问题

MATLAB编程线性规划问题

第二章0-1规划

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

min z = f * x

s.t A* x _ b

(2.1)aeq* x = beq

x 二[冷X2, |l(X n],人=0or1,i =12l()n

解0-1规划(2.1 )的0-1规划函数bintprog表述为

[x, fv, exitflag, output]= bin tprog(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]= lin prog(f,A,b,aeq, beq)(2.3)在函数bintprog中,输入或输出元素的符号可以变更,如( 2.3)中ex仍为输出标志,但元素的符号

位置不能变更。在输出部分,如有缺者,可用[]号代替。

函数bintprog的使用要点与函数linprog的使用要点相同。

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

必为f的最大值。

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

max z = x— 2x2 2x3 -6x4-4x5

s.t 3x1 2x2 -x3x45x2 _5 2x1 4x2-2x3-沧一2x5辽5

K =0或1(i=1,2JI|5)

用MATLAB语言编程如下:

f=-[1,2,2,-6],-4

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

b=[5,5];

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

X,-fv

求解如下

ex=1,fv=-5, x=[1,1,1,0,0]

例二用函数bintprog求解下列0-1规划min z = 3% 7x2-x3x4

s.t 2x1 -x2x3- x4-1

x1 - x2 6x3 4x4 - 8

5x1 3x2 X4 -5

x =0 或1(i=1,2,川4)

用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]=bi ntprog(f,A,b,[],[]);

求解如下ex=1,fv=-3, x=[1,0,1,,1]

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

min z =15% 18X2 21x319x423x522x626x717x g 16x9 S.t X\ X2x3= 1

X4 X5 X6 = 1

冷X3 X9 = 1

X X4X7=1

X2X X8=1

X3 X X9 =1

X =0 或1,i =1,2 川9

用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=on es(6,1)

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

求得

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

相关主题
相关文档
最新文档