请高手帮助求解Matlab最优化问题- 极值问题- Monte Carlo方法。希望得到你的答案以及代码,急!不胜感激!
目标函数:maxf=[1125,1476]X1+[765,1194.8]x2限制条件:X1+X2<=1200;[4.3,5.2]X1+[3.2,3.6]X2<=[3730...
目标函数:max f=[1125, 1476]X1+[765,1194.8]x2
限制条件:X1+X2<=1200;
[4.3, 5.2]X1+[3.2, 3.6]X2 <= [3730, 4414];
[0.42, 0.48]X1+[0.27, 0.32]X2 <=[341, 379];
X1, X2>=0;
请用 Monte Carlo 方法模拟五百万次,求出目标函数的最大、最小值。
很感谢一楼给出的答案,但是这答案并不能解决问题,所以追加悬赏,继续求助! 展开
限制条件:X1+X2<=1200;
[4.3, 5.2]X1+[3.2, 3.6]X2 <= [3730, 4414];
[0.42, 0.48]X1+[0.27, 0.32]X2 <=[341, 379];
X1, X2>=0;
请用 Monte Carlo 方法模拟五百万次,求出目标函数的最大、最小值。
很感谢一楼给出的答案,但是这答案并不能解决问题,所以追加悬赏,继续求助! 展开
展开全部
N=5000000;
x1=1200*rand(N,1);
x2=1200*rand(N,1);
index=find(x1+x2<=1200 & 4.3*x1+3.2*x2<=3730 & 5.2*x1+3.6*x2<=4414 & 0.41*x1+0.27*x2<=341 & 0.48*x1+0.32*x2<=279);
%xx1和xx2是满足限制条件的集合
xx1=x1(index);
xx2=x2(index);
%目标函数(你给的是多目标,我不知道如何处理,我只选第一个目标函数)
ff1=1125*xx1+765*xx2;
%min
[minf1,minindex1]=min(ff1);
minx1=xx1(minindex1);
minx2=xx2(minindex1);
%依次是x1,x2,f
[minx1,minx2,minf1]
%max
[maxf1,maxindex1]=max(ff1);
maxx1=xx1(maxindex1);
maxx2=xx2(maxindex1);
%依次是x1,x2,f
[maxx1,maxx2,maxf1]
==================
当然多目标函数极值问题,我虽然没有弄过。
但是如果是单目标函数的话,我可以确定是上面这样的。
你这个问题的最小值为0,你用MC方法,想得到这个值是相当困难的。
500000对随机数,经过约束条件筛选,只有17%左右符合。
x1=1200*rand(N,1);
x2=1200*rand(N,1);
index=find(x1+x2<=1200 & 4.3*x1+3.2*x2<=3730 & 5.2*x1+3.6*x2<=4414 & 0.41*x1+0.27*x2<=341 & 0.48*x1+0.32*x2<=279);
%xx1和xx2是满足限制条件的集合
xx1=x1(index);
xx2=x2(index);
%目标函数(你给的是多目标,我不知道如何处理,我只选第一个目标函数)
ff1=1125*xx1+765*xx2;
%min
[minf1,minindex1]=min(ff1);
minx1=xx1(minindex1);
minx2=xx2(minindex1);
%依次是x1,x2,f
[minx1,minx2,minf1]
%max
[maxf1,maxindex1]=max(ff1);
maxx1=xx1(maxindex1);
maxx2=xx2(maxindex1);
%依次是x1,x2,f
[maxx1,maxx2,maxf1]
==================
当然多目标函数极值问题,我虽然没有弄过。
但是如果是单目标函数的话,我可以确定是上面这样的。
你这个问题的最小值为0,你用MC方法,想得到这个值是相当困难的。
500000对随机数,经过约束条件筛选,只有17%左右符合。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询