如何将向量归一化以求和为某个值?

How can I normalize a vector to sum to a certain value?

我一直在尝试寻找解决方案,但没有找到任何有用的东西。我想了解 :

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

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

本文第354页提到了四点,我的疑惑仅限于第四点。我不明白如何计算第 4 个点。

为了方便起见,我将在前面的 3 点之前写下整个第 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 = payoff(j)*e_j (e_j为第j个单位向量)

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

问题:我不明白如何将强度重新归一化为总和?

此外,我已经阅读了这篇discussion

所以你真的只需要确定向量的分量和是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

所以现在我们知道如何得到 X:向量的每一部分都必须与 X 相乘,然后除以当前分量之和:

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

然后我们得到新的向量V' = [a', b', c', d'],其分量和将为X,相对权重不变。