转载:http://blog.sina.com.cn/s/blog_5d7295010101ft5i.html
%主函数
rand('state',sum(clock));
p0=0;
tic %保存当前时间
for i=1:10^6
x=99*rand(5,1); %5*1的向量,代表一组解 第一个约束
x1=floor(x); %下求整 //为整数
x2=ceil(x); %上求整
[f,g]=mengte(x1);
if sum(g<=0)==4 %2,3,4,5约束都满足
if p0<=f %判断是否最大了目标函数
x0=x1; %最优变量
p0=f; %最优值
end
end
[f,g]=mengte(x2);
if sum(g<=0)==4
if p0<=f
x0=x2;p0=f;
end
end
end
x0,p0
toc %记录程序完成时间
%函数mengte.m
function [f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];