如何确保任意数量的权重总和为1(Python)?

时间:2015-12-04 03:35:04

标签: python algorithm math

我有一个模拟退火算法,我有一个像

这样的函数

result = w1*x1 + w2*x2 + ... + wn*xn

当选择新的w值时,模拟退火的每个循环如何确保w的总和始终等于1并且没有单个w值小于0?

非常感谢大家!

1 个答案:

答案 0 :(得分:5)

  1. 使用NumPy。
  2. 这样,您可以result = w1*x1 + w2*x2 + ... + wn*xn代替result = np.dot(w, x)
  3. 您想要w的条件似乎可能来自:

    non_negative_w = np.abs(w)
    sum_w = np.sum(non_negative_w)
    normalized_non_negative_w = non_negative_w / sum_w