设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1683|回复: 0

用隐枚举法求解0-1线性规划问题

[复制链接]

8

主题

79

金钱

125

积分

入门用户

发表于 2018-9-26 10:37:37 | 显示全部楼层 |阅读模式
  1. function [x,f]=L01p_ie(c,A,b,N)
  2. % [x,f]= L01p_ie(c,A,b,N)用隐枚举法求解下列0-1线性规划问题
  3. %       min f=c'*x, s.t. A*x<=b,  x的分量全为整数0或1,
  4. %  其中N表示约束条件 Ax ≤ b中的前N个是等式,N= 0时可以省略。%  程序中用到命令B = de2bi(D),其作用是将10进制数向量D转换
  5. %  为相应二进制数按位构成的以0,1为元素的矩阵B。
  6. %  此命令在toolbox communication中。
  7. %  返回结果x是最优解,f是最优解处的函数值。
  8. %例 max f=3x1+5x2+2x3+4x4+2x5+3x6
  9. %   s.t. 8x1+13x2+6x3+9x4+5x5+7x6<=24, x1,…,x6均为0或1
  10. %求解
  11. %  c=-[3,5,2,4,2,3];a=[8,13,6,9,5,7];b=24;
  12. %  x=1p_ie(c,a,b)

  13. % By X.D. Ding, June 2000

  14. if nargin<4,N=0;end
  15. c=c(:);b=b(:);
  16. A=[-A(1:N,:);A];b=[-b(1:N);b];
  17. [m,n]=size(A);x=[];f=abs(c')*ones(n,1);
  18. A=[c';A];b=[f;b];i=1;
  19. while i<=2^n
  20.    B=de2bi(i-1,n)';
  21.    j=1;t1=A(j,:)*B-b(j);
  22.    while(t1<=0&j<m+1)
  23.       j=j+1;t1=A(j,:)*B-b(j);
  24.       if t1>0,j=1;end
  25.    end
  26.    if j==m+1
  27.       x=B;f=c'*B;
  28.       b(1)=min([b(1),f]);
  29.    end
  30.    i=i+1;
  31. end

复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表