4
$\begingroup$

The optimization problem is
$$\min_{x\in K} \|h - x\|_2$$ where $$K = \{v\in R^n : \exists \lambda \geq 0\ v_1=v_2=\ldots=v_k=\lambda \ \text{and} \ |v_i| \leq \lambda \ \text{for} \ i=k+1,\ldots,n \}$$ , where $h, k, n$ are all known.

Could someone tell me how to write down this constraint in cvx? I couldn't think of a convenient way of specifying the constraints which define the convex set $K$.

$\endgroup$
2
  • $\begingroup$ Is $k$ a known constant? Or in the definition of $K$ does it mean “there exists a $k$ for which this holds?” $\endgroup$
    – cdipaolo
    Commented Feb 11, 2020 at 7:58
  • $\begingroup$ @cdipaolo Oh I should have mentioned that $h$, $k$, $n$ are all known. $\endgroup$
    – Bihu Duo
    Commented Feb 11, 2020 at 8:00

1 Answer 1

2
$\begingroup$

Is it what you need? (λ is unknown)

# 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))

Result: 1.3 1.3 1.3 0.5 0.3 Objective function : 0.2

$\endgroup$
3
  • $\begingroup$ It looks like $\lambda$ is not known from the original post. $\endgroup$
    – cdipaolo
    Commented Feb 11, 2020 at 17:03
  • $\begingroup$ @cdipaolo in second part of the solution λ is not known. I think it make sense remove solution with known λ $\endgroup$
    – Sergey
    Commented Feb 11, 2020 at 17:18
  • $\begingroup$ @cdipaolo Thank you so much! The $\lambda$ isn't known so this is exactly what I hoped for. $\endgroup$
    – Bihu Duo
    Commented Feb 11, 2020 at 18:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.