matlab如何实现蒙特卡洛算法?
5个回答
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
我以前收集的一些算法烂孝,就这么多了,希望对你有所帮助。
%用蒙特卡罗法解整好野数规划(max)
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)+3*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*(3)-200
x(3)+x(4)+5*x(5)-200];
%用蒙特卡罗法解非线性规划(整数max)
rand('state',sum(clock))
p0=0;
tic
for i=1:10^6
x=99*rand(5,1);
x1=floor(x);x2=ceil(x);
[f,g]=mengte(x1);
if sum(g<=0)==4
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
%用蒙特卡罗法解非线性规划(不是整数友历喊)(min)
function [sd,r1,r2,r3,r4,r5]=randlp(a,b,n)
debug=1;
a=0;
b=99;
n=10^6;
r1=unifrnd(a,b,n,1);
r2=unifrnd(a,b,n,1);
r3=unifrnd(a,b,n,1);
r4=unifrnd(a,b,n,1);
r5=unifrnd(a,b,n,1);
sd=[r1(1),r2(1),r3(1),r4(1),r5(1)];
z0=inf;
for i=1:n
x1=r1(i);
x2=r2(i);
x3=r3(i);
x4=r4(i);
x5=r5(i);
x=[x1 x2 x3 x4 x5];
lpc=lpconst(x);
if lpc==1
z=mylp(x);
if z<z0
z0=z;
sd=x;
end
end
end
%用蒙特卡罗法解整好野数规划(max)
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)+3*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*(3)-200
x(3)+x(4)+5*x(5)-200];
%用蒙特卡罗法解非线性规划(整数max)
rand('state',sum(clock))
p0=0;
tic
for i=1:10^6
x=99*rand(5,1);
x1=floor(x);x2=ceil(x);
[f,g]=mengte(x1);
if sum(g<=0)==4
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
%用蒙特卡罗法解非线性规划(不是整数友历喊)(min)
function [sd,r1,r2,r3,r4,r5]=randlp(a,b,n)
debug=1;
a=0;
b=99;
n=10^6;
r1=unifrnd(a,b,n,1);
r2=unifrnd(a,b,n,1);
r3=unifrnd(a,b,n,1);
r4=unifrnd(a,b,n,1);
r5=unifrnd(a,b,n,1);
sd=[r1(1),r2(1),r3(1),r4(1),r5(1)];
z0=inf;
for i=1:n
x1=r1(i);
x2=r2(i);
x3=r3(i);
x4=r4(i);
x5=r5(i);
x=[x1 x2 x3 x4 x5];
lpc=lpconst(x);
if lpc==1
z=mylp(x);
if z<z0
z0=z;
sd=x;
end
end
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"rand(m,n)产生m*n均卜谈匀随机数行弊早。
ex:
用概率方法求pi
N=100000;
x=rand(N,1);
y=rand(N,1);
count=0;
for i=1:N
if (x(i)^2+y(i)^2<=1)
count=count+1;
end
end
PI=4*count/N"档雀
ex:
用概率方法求pi
N=100000;
x=rand(N,1);
y=rand(N,1);
count=0;
for i=1:N
if (x(i)^2+y(i)^2<=1)
count=count+1;
end
end
PI=4*count/N"档雀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额,这个问题太宽泛了,不具体,建议你自己找相关的书籍看看
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询