【MATLAB强化学习工具箱】学习笔记--随机数种子是如何设置的?

介绍

在MATLAB强化学习工具箱的大部分demo中,都有对随机数种子的重置。

【MATLAB深度学习工具箱】学习笔记--体脂估计Body Fat Estimation_bear_miao的博客-CSDN博客介绍本示例展示一个函数拟合神经网络如何根据解剖学测量结果估计体脂。【注:关键词:多维数据 函数拟合 神经网络】问题描述在本例子中根据如下13种身体特征评估体脂。【注:具体的属性特征对学习此解决问题的逻辑影响并不大,知道是许多相关或不相关的多维度特征即可】Age (years)Weight (lbs)Height (inches)Neck circumference (cm)Chest circumference (cm)Abhttps://blog.csdn.net/bear_miao/article/details/121303759?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163704356716780261921772%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163704356716780261921772&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121303759.first_rank_v2_pc_rank_v29&utm_term=%E3%80%90MATLAB%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%B7%A5%E5%85%B7%E7%AE%B1%E3%80%91%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0--%E4%BD%93%E8%84%82%E4%BC%B0%E8%AE%A1Body&spm=1018.2226.3001.4187

中,随机数种子重置语句为:

 setdemorandstream(491218382)

在 【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent_bear_miao的博客-CSDN博客Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。以水箱模型watertank为例,如下图所示:采用PI控制器,控制效果如下所示:将此PI控制器替换为神经网络控制器后,系统架构如下图所示:具体替换策略如下所示:(1)删去PID控制器;(2)增加RL Agent模块;(3)观测器模块:观测向量为:,其中...https://blog.csdn.net/bear_miao/article/details/121337953?spm=1001.2014.3001.5502

中,随机数种子重置语句为:

rng(0)

效果如下所示。可以看到随机数种子重置后,每次生成的伪随机数序列是相同的。便于在多次仿真中互相对比其他因素。

>> s = rng(0);x = rand(1,5)
x =
    0.2190    0.0470    0.6789    0.6793    0.9347
>> s = rng(0);x = rand(1,5)
x =
    0.2190    0.0470    0.6789    0.6793    0.9347
>> s = rng(0);x = rand(1,5)
x =
    0.2190    0.0470    0.6789    0.6793    0.9347

本文简单对目前发现较常用的两个函数进行说明。


setdemorandstream函数

setdemorandstream函数如下所示,核心调用的是RandStream,而且采用的伪随机数生成算法为‘mcg16807’

function setdemorandstream(n)
%SETDEMORANDOMSTREAM Set default stream for reliable example results.
%
%  SETDEMORANDOMSTREAM(N) is less distracting in example code, but
%  equivalent to:
%
%    rs = RandStream('mcg16807','Seed',n);
%    RandStream.setGlobalStream(rs);

% Copyright 2011-2012 The MathWorks, Inc.

rs = RandStream('mcg16807','Seed',n);
RandStream.setGlobalStream(rs);

 根据RandStream函数的帮助文档,可用的伪随机数生成算法如下:

NameGeneratorMultiple Stream and Substream SupportApproximate Period In Full Precision
'mt19937ar'Mersenne Twister (used by default stream at MATLAB startup)No219937-1
'dsfmt19937'SIMD-Oriented Fast Mersenne TwisterNo219937-1
'mlfg6331_64'Multiplicative lagged Fibonacci generatorYes2124 (251 streams of length 272)
'mrg32k3a'Combined multiple recursive generatorYes2191 (263 streams of length 2127)
'philox4x32_10'Philox 4x32 generator with 10 roundsYes2193 (264 streams of length 2129)
'threefry4x64_20'Threefry 4x64 generator with 20 roundsYes2514 (2256 streams of length 2258)
'shr3cong'Shift-register generator summed with linear congruential generatorNo264
'swb2712'Modified subtract with borrow generatorNo21492
'mcg16807'Multiplicative congruential generatorNo231-2

rs = RandStream('mcg16807','Seed',n)的含义是定义了一个随机数流,采用‘mcg16807’伪随机数算法根据提供的种子n生成随机数。

rs = 
mcg16807 random stream
             Seed: 0
  NormalTransform: Polar

 RandStream.setGlobalStream(rs)将此设置状态告知全局随机数生成器,函数说明如下:

Set global random number stream

rng函数

rng函数的使用如下:

s = rng(seed)

 在RandStream.setGlobalStream的函数帮助文档中,专门提到:

Note  The rng function is a shorter alternative for many common uses of RandStream.setGlobalStream

说明,RandStream.setGlobalStream函数与rnd函数的功能是相同的。

但是两者也有区别。setdemorandstream采用的随机数生成算法为‘mcg16807’;而rng(‘default’)默认的是‘twister’,对应的算法为‘mt19937ar’。以下为rng函数帮助文档中的说明

ValueGenerator NameGenerator Keyword
'twister'Mersenne Twistermt19937ar
'simdTwister'SIMD-oriented Fast Mersenne Twisterdsfmt19937
'combRecursive'Combined multiple recursivemrg32k3a
'multFibonacci'Multiplicative Lagged Fibonaccimlfg6331_64
'philox'Philox 4x32 generator with 10 roundsphilox4x32_10
'threefry'Threefry 4x64 generator with 20 roundsthreefry4x64_20

在 MATLAB versions 4.0和5.0时代,选项如下。默认的也是‘mcg16807’。

ValueGenerator NameGenerator Keyword
'v4'Legacy MATLAB version 4.0 generatormcg16807
'v5uniform'Legacy MATLAB version 5.0 uniform generatorswb2712
'v5normal'Legacy MATLAB version 5.0 normal generatorshr3cong
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值