当前位置:编程学习 > Matlab >>

请高手帮助求解Matlab最优化问题- 极值问题- Monte Carlo方法。希望得到你的答案以及代码,急!不胜感激!

目标函数: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 方法模拟五百万次,求出目标函数的最大、最小值。
补充:很感谢一楼给出的答案,但是这答案并不能解决问题,所以追加悬赏,继续求助!
答案: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%左右符合。

上一个:【求代码】在matlab中,记录一个一维数组中数字有0变为1的次数,且记录下变化的位置。
下一个:matlab代码错误 关于mex

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,