优化问题是
其中
,其中都是已知的。
有人能告诉我如何在 cvx 中写下这个约束吗?我想不出一种方便的方法来指定定义凸集的约束。
优化问题是
其中
,其中都是已知的。
有人能告诉我如何在 cvx 中写下这个约束吗?我想不出一种方便的方法来指定定义凸集的约束。
这是你需要的吗?(λ未知)
# INPUT
N,K = 5,3
h=[1.1,1.2,1.7,0.5,0.3]
Xk = cp.Variable()# unknown Lambda
Xn = [cp.Variable() for i in range(N-K)]
constraints = []
for x in Xn:
constraints.append(cp.abs(x)<=Xk)
X = [Xk]*K+Xn
obj = cp.Minimize(cp.sum([(h[i]-X[i])**2 for i in range(N)]))
prob = cp.Problem(obj, constraints)
rez = prob.solve()
for i in range(K):
print("{:.1f}".format(Xk.value))
for i in range(N-K):
print("{:.1f}".format(Xn[i].value))
print("Objective function : {:.1f}".format(rez))
结果:1.3 1.3 1.3 0.5 0.3 目标函数:0.2