matlab整数规划问题

matlab整数规划问题

clc;

Maxf=-100000;

s=0.0;

k=1;

z1=zeros(50,1);

z2=zeros(50,1);

for i=0:1:66

for j=0:1:100-i

if (2*j-i)>=0

s=98*i+277*j-i^2-0.3*i*j-2*j^2;

if (s-Maxf)==0

k=k+1;

z1(k)=i;

z2(k)=j;

else

if s>Maxf

Maxf=s;

z1(1)=i;

z2(1)=j;

k=1;

end

end

end

end

end

Str=strcat('最大值MAX为:',num2str(Maxf));

disp(Str);

x1=z1(1:k)

x2=z2(1:k)

我已经验证过了~OK的哈!

matlab中NSGAⅡ是否可以解整数规划

最近,有很多同行问我在Matlab中怎样解(混合)整数规划问题,我这里就说一下我所知道的情况。

Matlab 7的优化工具包只能解0-1变量的(逻辑)整数规划问题,要解一般的整数规划问题,推荐下载一个免费的,叫做LP_SOLVE的软件,支持Matlab,在yahoo讨论组里有下载。

解压后,里面有个文件夹,将其命名为"lp_solve",建议将这个文件夹拷贝到matlab程序文件夹中的toolbox文件夹中,在lp_solve文件夹里面有个lpsolve55.dll文件,将其拷贝到系统文件夹%system32中,然后启动matlab,在file菜单里点击setpath,将%MATLAB701/toolbox/lp_solve 路径添为默认路径,现在就可以直接使用lp_solve文件夹里面的函数了。

为了根方便地使用各种优化软件,尤其是lp_solve,我还建议有兴趣的同行再下载一个叫做"Yalmip" 的软件包,同样解压后放在matlab程序文件夹中的toolbox文件夹中,再添加其路径(add with subfolders)。这个软件的重要作用在于使得添加约束条件的过程变得相当方便,例如变量X是一个长度为5的向量,且有约束x1+x2+x3+x4+x5=1,利用Yalmip就可以写成

X=sdpvar(5,1); %定义变量

set(sum(X)==1);%定义约束条件

MATLAB优化工具箱线性规划问题

这个是整数规划。

你得用别的函数。

比如:ipslv_mex,这个好像得去网上载。

f=ones(7,1);

A=[1,4,0,0,3,1,2;1,0,3,0,1,2,0;1,0,0,2,0,0,1];

b=[50;30;25];

intlist=zeros(7,1); %代表7个变量都是整数

xmin=ones(7,1); %代表7个变量的最小值均为1

xmax=inf*ones(7,1); %代表7个变量最大值均为无穷大

ctype=ones(3,1); %代表三个方程都是Ax=b,大于等于的话为1,小于等于的话为-1

[x,how]=ipslv_mex(f,A,b,intlist,xmax,xmin,ctype)

结果为:

x =

16

1

1

4

9

1

1