我有一个优化问题,其中一个约束是:
(x_i的加权和)=常数。
下面是一个例子:
# Solving: ones @ x -> min
# weights 1D-array (n)
ones = np.ones_like(weights)
coefficient = 1/2 * len(weights) * np.prod(weights)
# constrain I want: weights @ x == coefficient
字符串scipy.optimize.linprog
需要2D数组作为等式约束的系数矩阵,1D数组作为右边部分的系数矩阵。但在我的例子中,我有1D数组作为系数(可以很容易地转换为对角矩阵)。
我们也有系数在右边的部分,我们不能转换为向量,因为有很多变量的总和是相同的,但值x_i不同,所以我们不能只约束所有x_i值。
你应该怎么做来解决这样的约束问题?
1条答案
按热度按时间neskvpey1#
我明白了。你可以为系数创建二维数组,为右边部分创建一维数组。
字符串
所以基本上你用零填充整个矩阵,右边部分也是,然后你用你的权重和右边部分的一个值填充矩阵的一行。