【发布时间】:2020-09-07 20:59:25
【问题描述】:
我有一个线性优化问题,可以用这样的成本函数代码表示:
value_to_minimize = 0.0;
for i in range(0, len(v_1)):
value_to_minimize += np.abs(v_1[i] - (v_2[i] * c1 + v_3[i] * c2 + v_4[i] * c3));
求解器的任务应该是找到变量c1、c2、c3 的值,使值最小化。作为边界条件,c1、c2、c3 一起应该导致 1.0 而不是负数。
v_1、v_2、v_3 和 v_4 是具有 10000 个浮点值的向量。
这里是在cvxpy中解决这个最小化问题的大纲,但是在cp.Minimize(...)中没有传递参数:
V1 = np.array(v_1).reshape(10000, 1)
V2 = np.array(v_2 + v_3 + v_4).reshape(10000, 3)
c = cp.Variable((3,1),nonneg=True)
prob = cp.Problem(cp.Minimize(..., # ???
[sum(c) == 1]))
prob.solve(verbose=True)
在这种情况下,cvxpy 的最小化函数看起来如何?
【问题讨论】:
-
(1) 哪些值是错误的,以什么方式出错? (2) 确保事物可以被复制。
-
@ErwinKalvelagen 感谢您的回复。
c变量中的三个值不包含最佳值,因为我可以通过反复试验找到更好的值。在这种情况下,重现性并不是那么容易实现的,估计cp.pnorm(u - cp.sum(V@c), 1))是否真的做了我想要的对我有帮助。 -
如果没有一小段代码可以重现问题 (stackoverflow.com/help/minimal-reproducible-example),我不知道该如何提供帮助。
-
@ErwinKalvelagen 非常感谢。我现在已经编辑了问题,使其更加开放。
-
顺便说一句。为什么要使用这个特定的库?这似乎是一个相对简单的线性优化问题。