02整数规划
蒙特卡洛法(随机取样法)
编写文件mengte.m,目标函数f和约束向量g
function[f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)^2-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
];
主函数
format compact;
rand('state',sum(clock)); % 初始化随机数发生器
p0=0;
tic % 计时开始
for i=1:10^6
x=randi([0,99],1,5); % 产生1行5列的区间[0,99]上的随机整数
[f,g]=mengte(x);
if all(g<=0)
if p0
x0=0;p0=f; % 记录下当前较好的解
end
end
end
x0,p0
toc % 计时结束