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