介绍

在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函数的帮助文档,可用的伪随机数生成算法如下:

Name Generator Multiple Stream and Substream Support Approximate Period In Full Precision
'mt19937ar' Mersenne Twister (used by default stream at MATLAB startup) No 219937-1
'dsfmt19937' SIMD-Oriented Fast Mersenne Twister No 219937-1
'mlfg6331_64' Multiplicative lagged Fibonacci generator Yes 2124 (251 streams of length 272)
'mrg32k3a' Combined multiple recursive generator Yes 2191 (263 streams of length 2127)
'philox4x32_10' Philox 4x32 generator with 10 rounds Yes 2193 (264 streams of length 2129)
'threefry4x64_20' Threefry 4x64 generator with 20 rounds Yes 2514 (2256 streams of length 2258)
'shr3cong' Shift-register generator summed with linear congruential generator No 264
'swb2712' Modified subtract with borrow generator No 21492
'mcg16807' Multiplicative congruential generator No 231-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函数帮助文档中的说明

Value Generator Name Generator Keyword
'twister' Mersenne Twister mt19937ar
'simdTwister' SIMD-oriented Fast Mersenne Twister dsfmt19937
'combRecursive' Combined multiple recursive mrg32k3a
'multFibonacci' Multiplicative Lagged Fibonacci mlfg6331_64
'philox' Philox 4x32 generator with 10 rounds philox4x32_10
'threefry' Threefry 4x64 generator with 20 rounds threefry4x64_20

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

Value Generator Name Generator Keyword
'v4' Legacy MATLAB version 4.0 generator mcg16807
'v5uniform' Legacy MATLAB version 5.0 uniform generator swb2712
'v5normal' Legacy MATLAB version 5.0 normal generator shr3cong
Logo

更多推荐