回 帖 发 新 帖 刷新版面

主题:关于整数线性规划的问题

题目:    
    min z=x1+x2+x3+x4+x5+x6 
    x1+x6>=60
    x1+x2>=70
    x2+x3>=60
    x3+x4>=50
    x4+x5>=20
    x5+x6>=30
    x1......x6>=0
    x1......x6为整数 


我写的程序 c=[1 1 1 1 1 1];
A=[-1 0 0 0 0 -1;-1 -1 0 0 0 0;0 -1 -1 0 0 0;0 0 -1 -1 0 0;0 0 0 -1 -1 0 ;0 0 0 0 -1 -1];
b=[-60;-70;-60;-50;-20;-30]
Aeq=[];
beq=[];
vlb=[0;0;0;0;0;0];
vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)


运行结果 :
Optimization terminated successfully.

x =

   41.9176
   28.0824
   35.0494
   14.9506
    9.8606
   20.1394


fval =

  150.0000


求出来的结果不是整数  该怎么办啊

回复列表 (共7个回复)

沙发

在实际问题中,不必把整数规划与普通规划分得太清,由于建模本身就包含了一些不确定因素,同时常常也允许近似的或粗略的结果,我们只须用舍入凑整法就可以了
这样就可以了。
clc
clear
c=[1 1 1 1 1 1]';
A=[-1 0 0 0 0 -1;-1 -1 0 0 0 0;0 -1 -1 0 0 0;0 0 -1 -1 0 0;0 0 0 -1 -1 0 ;0 0 0 0 -1 -1];
b=[-60;-70;-60;-50;-20;-30]
Aeq=[];
beq=[];
vlb=[0;0;0;0;0;0];
vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub);
z=round(x)

板凳

linprog是线性规划函数,不是整数规划函数,得出来的当然不能是整数了

3 楼


哪请问有整数规划的软件吗?

4 楼

没听过bnb20吗?

5 楼

lingo 就可以啊

6 楼

linprog函数是不能解决整数规划的。
建议使用lingo,可以解决非线性规划,整数整数规划,0-1规划等最优问题。

7 楼


不认为你这是个好的方法。

我来回复

您尚未登录,请登录后再回复。点此登录或注册