蒙特卡洛算法代码java 蒙特卡洛算法实例

在java中利用递归法,计算曲线y=x的平方与直线x=1,x轴所包围的曲边三角形的面积 。public class Util {
public static void main(String[] args) {
System.out.println(getMj(2000));
}
public static double getMj(double n){
if(n==1){
【蒙特卡洛算法代码java 蒙特卡洛算法实例】return 1.0;
}else{
double r = (n-1)*(n-1)*(n+1)*(2*n+1)/(n*n*n*(2*n-1));
return r*getMj(n-1);
}
}
}
递归算法前提是知道它的通项公式 , 2000表示把曲边三角形等分2000个矩形 , 原理如下图:
采用图1算法:
an=(n+1)(2n+1) /6n^2
简单写法如下:
public class Util {
public static void main(String[] args) {
System.out.println(getMj(100000));
}
public static double getMj(double n){
return (n+1)*(2*n+1)/(6*n*n);
}
}
matlab如何实现蒙特卡洛算法?1、首先我们启动matlab,新建一个函数文件 。
2、在弹出的编辑窗口中输入如下代码 。该代码的目的是创建蒙特卡洛主函数 。
3、然后我们保存该函数文件 。
4、再建立一个函数文件,输入代码如下 。该代码的目的是构造积分函数,保存上面的积分函数文件 。
5、在命令行窗口中直接调用该函数,如图所示为求得的结果 。
6、绘制出积分区域即可 。
蒙特卡洛,时序差分Temporal-Difference Learning(TD)算法1.蒙特卡洛
Monte-Carlo算法:
1.将agent放入环境的任意状态
2.从这个状态开始选择action, 并进入下一个状态
3.重复第二步直到达到最终状态
4.从最终状态回溯,计算每一个状态的G值
5.重复1-4过程 , 然后平均每一次的G值 , 最后得到的就是V值
关于G值:
第一步:根据策略使agent做出动作并进入下一动作,直到到达最终状态,需要记录每一个状态的转移,得到奖励r
第二步:从最终状态回溯,一遍一遍计算G值 。G 等于上一状态的G值(G‘)乘以一定的折扣(gamma)再加上r
G值就是从某个状态到最终状态的奖励总和
G就是V的更新目标,关于MC的更新:
两种方法:
2.时序差分(TD)算法
TD是对MC的改进,即agent走到第N步就可以开始回溯更新 。
蒙特卡洛算法代码java的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于蒙特卡洛算法实例、蒙特卡洛算法代码java的信息别忘了在本站进行查找喔 。

    推荐阅读