main.m
%数学建模与数学实验
%用蒙特卡洛求解非线性规划
clc
clear
n = 100;
for i = 1:n
m(i) = -mylp(randlp);
end
pmMAX = sum(m)/n
function [sol,r1,r2] = randlp(a,b,n)
debug = 1;
a = 0;
b = 10;
n = 1000;
r1 = unifrnd(a,b,n,1);
r2 = unifrnd(a,b,n,1);
sol = [r1 r2];
z0 = inf;
for i = 1:n;
x1 = r1(i);
x2 = r2(i);
lpc = lpconst([x1 x2]);
if lpc == 1
z = mylp([x1 x2]);
if z < z0
z0 = z;
sol =[x1 x2];
end
end
end
function z = mylp(x)
z = 2*x(1)^2+x(2)^2-x(1)*x(2)-8*x(1)-3*x(2);
function lpc = lpconst(x)
if 3*x(1)+x(2)-10 <= 0.5 & 3*x(1)+x(2) >= -0.5
lpc = 1;
else
lpc = 0;
end