. MATLAB语言应用————最优化 MATLAB编程线性规划问题 第二章0-1规划 MATLAB的0-1规划函数bintprog是针对下述0-1规划: minzf*xs.tA*xbaeq*xbeqx[x1,x2,xn],xi0or1,i1,2, (2.1) n解0-1规划(2.1)的0-1规划函数bintprog表述为 [x, (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, (2.3) 在函数bintprog中,输入或输出元素的符号可以变更,如(2.3)中ex仍为输出标志,但元素的符号位置不能变更。在输出部分,如有缺者,可用[]号代替。 函数bintprog的使用要点与函数linprog的使用要点相同。 函数是为求目标函数的最小值而设置的,如要求函数的最大值,可先求出(f)的最小值fv,则fv必为f的最大值。精品 fv, ex]= linprog(f,A,b,aeq, fv, exitflag, output]= bintprog(f,A,b,aeq, beq) beq) 例一 用函数bintprog求解下列0-1规划 maxzx12x22x36x44x5 s.t3x12x2x3x45x252x 14x22x3x42x55xi0或(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.t2x1x2x3x41x1x26x34x48 5x13x2x45xi0或(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规划. 精品 . minz15x118x221x319x423x522x626x717x816x9S.tx1x2x31x4x5x61x7x8x91x1x4x71x2x5x81x3x6x91xi0或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] 如有侵权请联系告知删除,感谢你们的配合! 精品 本文来源:https://www.wddqw.com/doc/c285510fb81aa8114431b90d6c85ec3a87c28b05.html