簡體   English   中英

在 Python 中使用二次規划/最小化來最小化受線性約束的范數

[英]Minimizing norm subject to linear constraint, using quadratic programming/minimization in Python

我需要解決以下受線性不等式約束的二次最小化;

在此處輸入圖像描述

在哪里

||ξ|| 是 ξ 的歐幾里得范數,

ξ 和 vk 是向量

λk 是一個標量。

我認為這可以用 CVXOPT 來完成,但我沒有任何二次最小化的經驗,所以我有點迷茫,一些幫助或只是指針將不勝感激..

求解 ξ∗ = argmin||ξ|| 服從 zT ξ ≥ -λk

cvxopt.solvers.qp好像能解決

1/2 x T P x + q T x

受制於

斧頭≤B

對於你的情況,

||ξ|| 2 = ξ 2 = ξ T I ξ = 1/2 ξ T (2 × I) ξ + 0 x ξ

其中 I 是一個單位矩陣。 所以你的 P 和 q 是 (2 × I) 和0並且 A = -z_k, b = l_k。

使用給定的z_kl_k (λ),您可以通過以下方式解決矩陣不等式

import numpy
from cvxopt import matrix

P  = matrix([
    [2., 0., 0.],
    [0., 2., 0.],
    [0., 0., 2.]
])

q   = matrix([[0., 0., 0.]])

z_k = matrix([
    [1.],
    [2.],
    [3.]
])

l_k = matrix([4.])

from cvxopt import solvers

sol = solvers.qp(P, q, -z_k, l_k)

print(sol['x'])                 # argmin ξ
print(sol['primal objective'])  # min ξ^2

檢查這個

如果你需要min ||ξ|| ,規范:

import math
print(math.sqrt(sol['primal objective']))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM