如何将矢量标准化为总和为某个值?

时间:2015-04-20 10:53:20

标签: vector normalization

我一直在尝试寻找解决方案,但没有找到任何有用的信息。我想明白:

如何规范化矢量,使其总和为某个值?

我正在尝试重现该论文的结果: 设计像人类代理人一样的人类代理人:W.Brian Arthur(1991)对有限理性的行为方法。

在本文的第354页提到了四点,我的疑点仅限于第四点。我无法理解如何计算第四点。

为了方便起见,我将写出前4分之前的整个第4点。

问题描述:

存在N个动作的集合,从1到N.强度S_t的向量与每个时间't'的每个动作相关联。这些强度的当前总和是C_t(S_t的分量和),并且初始矢量S_0严格为正。概率p_t表示代理在时间t采取动作1到N的可能性。

在每个时间t,代理人: 1.计算概率向量作为与每个动作相关的相对强度。它设置,p_t =(S_t / C_t)

  1. 根据概率p_t从集合中选择一个动作并触发该动作。

  2. 通过将所选行动j的收益与行动j的力量相加来观察收到的收益并更新优势。也就是说,在选择动作j的情况下,它将强度设置为S_t + beta。其中,beta =支付(j)* e_j (e_j是第j个单位向量)

  3. 将强度重新规范化为与预选时间序列中的值相加。在这种情况下,它将强度重新归一化为C_t = C * t。 (其中t也可以提高到值v)

  4. 问题:我不明白如何将力量重新归一化为一个总和?

    此外,我已阅读此discussion

1 个答案:

答案 0 :(得分:0)

所以你真的只需要确保向量的分量和是X.这很简单。

如果我们有一个向量V = [a, b, c, d],那么它的组件总和S当然是S = a+b+c+d。如果这必须加起来为X,那么我们可以简单地将双方与X相乘以获得S*X = (a+b+c+d)*X,将S移至另一方以获得X = (a+b+c+d)*X/S。< / p>

所以现在我们知道如何得到X:向量的每个部分都必须乘以X并除以组件的当前总和:

a' = a*X/S
b' = a*X/S
c' = a*X/S
d' = a*X/S

然后我们得到新的向量V' = [a', b', c', d'],其组件总和将是X,相对权重将保持不变。