MATLAB枚举法求解0-1规划源程序及应用实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

M文件function[intx,intf]=ZeroOneprog(c,A,b,x0)%目标函数系数向量,c%不等式约束矩阵,A%不等式约束右端向量,b%初始整数可行解,x0%目标函数取最小值时的自变量值,intx%目标函数的最小值,intfsz=size(A);ifsz(2)3[intx,intf]=Allprog(c,A,b);%穷举法else[intx,intf]=Implicitprog(c,A,b,x0);%隐枚举法endfunction[intx,intf]=Allprog(c,A,b);sz_A=size(A);rw=sz_A(1);col=sz_A(2);minf=inf;fori=0:(2^(col)-1)%枚举空间x1=myDec2Bin(i,col);%十进制转化为二进制ifA*x1=b%是否满足约束条件f_tmp=c*x1;iff_tmpminfminf=f_tmp;intx=x1;intf=minf;elsecontinue;endelsecontinue;endendfunction[intx,intf]=Implicitprog(c,A,b,x0)%隐枚举法sz_A=size(A);rw=sz_A(1);col=sz_A(2);minf=c*x0;A=[A;-c];b=[b;-minf];%增加了一个限制分量fori=0:(2^(col)-1)x1=myDec2Bin(i,col);ifA*x1=bf_tmp=c*x1;iff_tmpminfminf=f_tmp;b(rw+1,1)=-minf;%隐枚举法与穷举法的区别在于此句intx=x1;intf=minf;elsecontinue;endelsecontinue;endendfunctiony=myDec2Bin(x,n)%十进制转化为二进制str=dec2bin(x,n);forj=1:ny(j)=str2num(str(j));endy=transpose(y);求解实例求解下面0-1规划105224287453232min54321543215432154321或,x,x,x,xxxxxxxxxxxx,s.t.xxxxxxf在MATLAB命令框在输入下列命令:c=[12311];A=[23547;11422];b=[8;5];x0=[1;1;1;1;1]’;[intx,intf]=ZetoOneprog(c,A,b,x0)所得结果如下:intx=10011intf=3

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功