【问题标题】:Have matlab accept a state change with a given probability让 matlab 以给定的概率接受状态变化
【发布时间】:2012-11-02 16:44:18
【问题描述】:

我有一个状态 S,需要以接受概率 Pa 更改为状态 S'。我已经计算了接受概率,并且我有两个状态(每个列向量 3 个数字)。我想告诉matlab以概率Pa接受从S到S'的变化。

注意:这将在一个循环内进行,并且每次迭代都会计算 Pa,并且 S 以概率 Pa 更改为 S'。

感谢您的帮助

编辑:这是我到目前为止所拥有的。有一个包含所有 35 种可能状态的矩阵(池)。 S'在这里是Sn。

S = [5;5;5];
indexn = randi(35);
Sn = Pool(:,indexn);

此处计算成本

PA = exp(-deltacost/k*T);

下一步是以概率 PA 将 S 更改为 Sn。我可能想多了,但我不知道如何改变它。

【问题讨论】:

  • 先自己试试,有问题再贴一小段代码。

标签: matlab state probability


【解决方案1】:

这应该可以解决问题

if Pa<rand()
    do the change
end

【讨论】:

    【解决方案2】:

    以特定概率执行特定动作的常用方法如下:

    1. 计算应该执行该操作的概率(在您的情况下为PA)。
    2. uniform probability distribution 中提取一个值,我们称之为R
    3. 检查R是否小于PA。这将是正确的,概率恰好等于PA。在这种情况下执行操作。

    最后提示: 从均匀分布中抽取样本的 Matlab 函数是rand

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多