【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《MATLAB编程0-1规划问题》,欢迎阅读!
MATLAB语言应用————最优化 MATLAB编程线性规划问题 第二章0-1规划
MATLAB的0-1规划函数bintprog是针对下述0-1规划:
minzf*xs.tA*xb
aeq*xbeq
x[x1,x2,xn],xi0or1,i1,2,n
(2.1)
解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规划
1
maxzx12x22x36x44x5
s.t3x12x2x3x45x252x14x
22x3x42x55xi0或(1i=1,2,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]=bintprog(f,A,b,[],[]); X,-fv 求解如下
ex=1,fv=-5, x=[1,1,1,0,0]
例二 用函数bintprog求解下列0-1规划
minz3x17x2x3x4s.t2x1x2x3x41
x1x26x34x48 5x13x2x4
5
xi0或(1i=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]=bintprog(f,A,b,[],[]);
求解如下ex=1,fv=-3, x=[1,0,1,,1]
例三 用函数bintprog求解下列0-1规划 2
minz15x118x221x319x423x522x626x717x816x9S.t
x1x2x31x4x5x61x7x8x91x1x4x71x2x5x81x3x6x91xi0或1,i1,29
用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]
3
本文来源:https://www.wddqxz.cn/de1f783a10661ed9ad51f33b.html