MATLAB编程0-1规划问题

2022-07-14 01:11:17   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《MATLAB编程0-1规划问题》,欢迎阅读!
编程,规划,MATLAB,问题
MATLAB语言应用————最优化 MATLAB编程线性规划问题 第二章0-1规划

MATLAB0-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)中的等式约束矩阵 beq2.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)的最小值fvfv必为f的最大值。

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

1


maxzx12x22x36x44x5



s.t3x12x2x3x45x252x14x

22x3x42x55xi01i=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

xi01i=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

x1x2x31x4x5x61x7x8x91x1x4x71x2x5x81x3x6x91xi01,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

相关推荐