1

我有一个状态 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。我可能想多了,但我不知道如何改变它。

4

2 回答 2

0

这应该可以解决问题

if Pa<rand()
    do the change
end
于 2012-11-02T16:50:11.000 回答
0

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

  1. 计算应该完成动作的概率(PA在你的情况下)。
  2. 从均匀概率分布中画出一个值,我们称之为R
  3. 检查是否R小于PA。这将是真实的,概率恰好等于PA。在这种情况下执行操作。

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

于 2012-11-02T19:10:45.383 回答