91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python求解二次規劃的問題

發布時間:2020-09-20 11:20:49 來源:腳本之家 閱讀:1072 作者:goodxin_ie 欄目:開發技術

Python中支持Convex Optimization(凸規劃)的模塊為CVXOPT,其安裝方式為:

pip install cvxopt

一、數學基礎

二次型

二次型(quadratic form):n個變量的二次多項式稱為二次型,即在一個多項式中,未知數的個數為任意多個,但每一項的次數都為2的多項式。其基本形式如下

使用python求解二次規劃的問題

亦可寫作,使用python求解二次規劃的問題 ,稱作二次型的矩陣表示,其中A是對稱矩陣。仿照如下的定義,我們可以直接在其基本形式和矩陣表示之間相互轉化。

使用python求解二次規劃的問題

2.正定矩陣

設A是n階實對稱矩陣, 如果對任意一非零實向量X,都使二次型使用python求解二次規劃的問題 成立,則稱f(X)為正定二次型,矩陣A稱為正定矩陣(Positive Definite),A為正定矩陣。

相應的,如果對任意一非零實向量X,都使二次型使用python求解二次規劃的問題成立,則稱f(X)為半正定二次型,A為半正定矩陣。

3.二次規劃問題

二次規劃是指,帶有二次型目標函數和約束條件的最優化問題。其標準形式如下:

使用python求解二次規劃的問題

即在Gx<h 和Ax=b的約束下,最小化目標函數。其中,當P是正定矩陣時,目標函數存在全局唯一最優解;P是半正定矩陣時,目標函數是凸函數,存在全局最優解(不唯一);P是不定矩陣時,目標函數非凸,存在多個局部最小值和穩定點,為np難問題。(本篇博客中我們不考慮非正定情況)。

二、python程序求解

工具包:Cvxopt python 凸優化包

函數原型:Cvxopt.solvers.qp(P,q,G,h,A,b)

P,q,G,h,A,b的含義參見上面的二次規劃問題標準形式。

編程求解思路:

1.對于一個給定的二次規劃問題,先轉換為標準形式(參見數學基礎中所講的二次型二中形式轉換)

2.對照標準形勢,構建出矩陣P,q,G,h,A,b

3.調用result=Cvxopt.solvers.qp(P,q,G,h,A,b)求解

4.print(result)查看結果,其中result是一個字典,我們可直接獲得其某個屬性,e.g. print(result['x'])

下面我們來看一個例子

使用python求解二次規劃的問題

import pprint
from cvxopt import matrix, solvers
P = matrix([[4.0,1.0],[1.0,2.0]])
q = matrix([1.0,1.0])
G = matrix([[-1.0,0.0],[0.0,-1.0]])
h = matrix([0.0,0.0])
A = matrix([1.0,1.0],(1,2))#原型為cvxopt.matrix(array,dims),等價于A = matrix([[1.0],[1.0]])
b = matrix([1.0])
result = solvers.qp(P,q,G,h,A,b)
 
print('x\n',result['x'])

運行結果:

使用python求解二次規劃的問題

注意事項:

cvxopt.matrix與numpy.matrix的排列順序不同,其中cvxopt.matrix是列優先,numpy.matrix是行優先。具體可見下面實例

import numpy as np
from cvxopt import matrix
a = np.matrix([[1,2],[3,4]])
b = matrix([[1,2],[3,4]])
print('numpy.matrix',a)
print('cvxopt.matrix',b)

運行結果:

使用python求解二次規劃的問題

以上這篇使用python求解二次規劃的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无锡市| 旬阳县| 鹿邑县| 财经| 新巴尔虎左旗| 马公市| 泸定县| 苏尼特右旗| 宣恩县| 运城市| 华宁县| 罗定市| 介休市| 奉新县| 蒲城县| 乌兰察布市| 甘德县| 农安县| 威信县| 游戏| 通榆县| 沙湾县| 健康| 邳州市| 东乡县| 枣庄市| 古丈县| 米易县| 邻水| 茶陵县| 永安市| 屯昌县| 崇阳县| 平原县| 绥中县| 崇信县| 唐河县| 靖州| 百色市| 张家口市| 波密县|