国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法

這篇具有很好參考價值的文章主要介紹了MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔


前言

本文是在最近學(xué)習(xí)MATLAB CVX工具箱解決凸優(yōu)化問題時學(xué)到的一些知識點,分享出來供大家參考。

進行CVX編程時,會遇到各種各樣意想不到又難以解決的報錯問題,如果編程過程中遇到了很多cvx bug和錯誤,可以閱讀下面這篇文章,這篇文章總結(jié)了很多cvx編程錯誤,并給出了解決方法和代碼實現(xiàn):
MATLAB cvx錯誤匯總,cvx錯誤解決,cvx知識點總結(jié),cvx編程技巧

CVX工具箱中有很多特定的,專有的函數(shù),這些函數(shù)不僅能夠簡化表達式,還能夠通過函數(shù)替換來解決很多報錯問題,例如除法、取倒數(shù)、對數(shù)㏒函數(shù)等都有專門函數(shù)替代,下面這篇文章總結(jié)了cvx中常用的函數(shù),閱讀這篇文章一定會對你產(chǎn)生幫助!
MATLAB cvx工具箱中常用的替換函數(shù)匯總,解決表達式報錯問題


一、語法

1.cvx編程框架:
必須以cvx_begin開始,cvx_end結(jié)束。變量聲明,目標(biāo)函數(shù)和約束條件必須位于cvx_begin和cvx_end之間。
代碼如下(示例):

cvx_begin
    variable x(6,2);
    variable y(6,2);
    minimize(f(x,y));
    subject to
        x == a;  %必須等于某一個值
        x >= 0;   %保證大于等于零
        b <= 0;   %保證小于等于零
        sum(x) <= x_max;  %保證之和小于上限
cvx_end  

基本語句及其含義
注:修飾語句可以組合使用

語句 含義
cvx_begin quiet 不顯示求解過程,只輸出結(jié)果
cvx_begin sdp 采取半正定規(guī)劃
cvx_begin gp 采取幾何規(guī)劃

二、變量聲明

所有的變量必須在使用前以:variable 變量 (維度)
進行申明,variable命令包含變量名,可選的緯度列表
具體語句如下表:

語句 含義
variable X 標(biāo)量
variable Y(n,m) n*m維矩陣
variable Z(n,m,k) 多維矩陣
variable w(50) complex 復(fù)數(shù)向量
variable x(10) nonnegative 非負
variable Z(5,5) semidefinite 半正定(對稱正定矩陣)
variable Q(5,5) complexsemidefinite 厄密共軛矩陣
variable p(10) integer 整數(shù)變量
variable q binary 二進制變量
variable Y(50,50) symmetric 對稱矩陣
variable Z(100,100) hermitiantoeplitz 厄密共軛常對角矩陣

三、目標(biāo)函數(shù)

1.申明目標(biāo)函數(shù)要求使用minimize或maximize函數(shù)
2.調(diào)用minimize的目標(biāo)函數(shù)必須是凸的
3.調(diào)用maximize的目標(biāo)函數(shù)必須是凹的

例如:
minimize( norm( x, 1 ) )

maximize( geo_mean( x ) )

如果不指定目標(biāo)函數(shù),問題將被解釋成可行性問題,如果可行性點找到,cvx_optval將設(shè)定為0,否則將為+Inf。

四、約束條件

CVX支持下列約束類型

1.相等 ==,等式左右兩邊是仿射表達式

2.小于 <= 不等式約束,左邊表達式是凸的,右邊表達式是凹的。

3.大于 >= 約束,左邊表達式是凹的,右邊表達式是凸的。

注:可以使用鏈?zhǔn)讲坏仁剑喝鏻 <= x <= u.

五、函數(shù)

cvx工具包支持的基本函數(shù):

sum:求和
trace:跡
diag:對角
sqrt:根號
max和min:最大最小

其他復(fù)雜函數(shù)參考Reference guide

注:可以使用自己定義的函數(shù),直接調(diào)用即可。

六、cvx特有的數(shù)學(xué)運算表達式

在進行cvx求解優(yōu)化問題時,會出現(xiàn)各種匪夷所思的錯誤(如下圖),搞人心態(tài),尤其是一些MATLAB常用的基本數(shù)學(xué)表達式在cvx中經(jīng)常報錯,比如除法運算。
常見錯誤: Cannot perform the operation: {real affine} ./ {positive constant}
MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法
其實cvx工具箱中有很多專屬的數(shù)學(xué)運算表達式,例如關(guān)于變量的次方符號(^)是不允許的,需要替換為pow_pos(x,n)。下面列出一些常見的替換表達式:
1.平方/次方表達式

語句 含義
square_pos 平方,square_pos(X)=MAX(X,0).^2
square ( x ) (real x) x.*x
sum_square_abs ( y ) y’* y

2.矩陣范數(shù)、log函數(shù)

語句 含義
rel_entr log函數(shù),rel_entr(x,y) = xlog(x/y)
norms() 取范數(shù)
square_abs ( x ) conj( x ) .*x
quad_form ( A*x - b,o ) (A*x-b)'Q(Ax-b)

3.cvx除法(cvx最麻煩、最容易出錯的表達式)

語句 含義
inv_pos 分式或倒數(shù),inv_pos(X) = 1./X
prod_inv(x) 對X中每個元素取到數(shù)再求和,Πi?(xi?)?1
quad_over_lin(x,y) X轉(zhuǎn)置乘x再除以y, x^Tx/y
quad_pos_over_lin(x,y) sum_square_pos( x ) / y

4.其他小技巧
MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法

七、常見錯誤

錯誤1:
無法從 cvx 轉(zhuǎn)換為 double
MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法
錯誤1解決辦法:
如果變量聲明是在cvx表達式之外,那么cvx運行過程中會產(chǎn)生數(shù)據(jù)從cvx類型存到double(外面是double的)的過程。必須要將中間變量在cvx表達式里面進行定義。
在cvx_begin和cvx_end之間用variable聲明變量。

錯誤2:
This is often an indication that an equality constraint was written with one equals ‘=’ instead of two ‘==’. The model must be rewritten before cvx can proceed.
錯誤2原因:
cvx中的variable變量不是允許人為賦值的,只有在最后得出結(jié)果才會被結(jié)果覆蓋,使用等號對某一個變量進行賦值是不允許的,cvx會動態(tài)優(yōu)化變量,不允許人為賦值。
錯誤2解決辦法:
使用expression聲明臨時變量,臨時變量可以在cvx求解過程中進行人為賦值,整個求解結(jié)束時該變量被自動清除。
expression變量是可以使用“=”的臨時變量

// 聲明臨時變量
cvx_begin

    variable a;   %優(yōu)化變量,不可以賦值修改,可以用雙等號==來寫約束條件
    expression b;  %臨時變量,可以用等號=來賦值修改
    minimize(f(x));
    subject to
       a == 0;  %約束條件,a必須等于零
       b = 10;  %給b賦值為10,優(yōu)化結(jié)束后自動清除
 			
cvx_end  

錯誤3:
點除運算出現(xiàn)錯誤,出錯 ./ (line 29)
錯誤3解決辦法:
用錯誤提示給出的語法去糾正錯誤
例如:1./x報錯,修改為:times(1, x, ‘./’)
再比如:z = x ./ y 報錯,修改為:z = times(x, y, ‘./’)

錯誤4:
點除運算出現(xiàn)錯誤,出錯 ./ (line 29)

MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法

錯誤4解決辦法:
例如: x ./ y報錯
用inv_pos(y)來代替y,上式修改為x .* inv_pos(y)

// 錯誤4
minimize(x ./ y);
//修改為
minimize(x .* inv_pos(y));

還有很多cvx錯誤這里不再一一列舉,詳細錯誤總結(jié)在我另一篇博客:
MATLAB cvx錯誤匯總,cvx錯誤解決,cvx知識點總結(jié),cvx編程技巧

八、進階閱讀

1.CVX工具箱中有很多特定的,專有的函數(shù),這些函數(shù)不僅能夠簡化表達式,還能夠通過函數(shù)替換來解決很多報錯問題,例如除法、取倒數(shù)、對數(shù)㏒函數(shù)等都有專門函數(shù)替代,下面這篇文章總結(jié)了cvx中常用的函數(shù),閱讀這篇文章一定會對你產(chǎn)生幫助!
MATLAB cvx工具箱中常用的替換函數(shù)匯總,解決表達式報錯問題

2.如果是對MATLAB基礎(chǔ)操作,尤其是涉及到矩陣操作、邏輯運算、數(shù)組生成等方面不是很熟悉的,可以參考下面這篇文章:
MATLAB基礎(chǔ)操作,矩陣乘法、數(shù)組矩陣索引、最大最小運算符、零矩陣/隨機矩陣/單位矩陣的生成、log函數(shù)、Inf和NaN的含義,語句過長用連接符換行、邏輯運算符以及區(qū)別

3.如果程序調(diào)試成功需要畫結(jié)果圖,但是對MATLAB畫圖的基本知識和語法搞不清楚的,可以參考下面這篇文章:
MATLAB繪圖必看,畫圖大全!MATLAB繪圖基礎(chǔ)操作大全—折線圖、散點圖、顏色樣式、線條粗細匯總

參考資料

參考視頻:
https://www.bilibili.com/video/BV1UQ4y1K7Vf/?spm_id_from=333.337.search-card.all.click&vd_source=aaf9c92065709eaa104228d5528a5d21
參考文章:
1.https://blog.csdn.net/gongshouxiayin/article/details/122477776?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168301606916800222832721%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168301606916800222832721&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-122477776-null-null.142v86insert_down38v5,239v2insert_chatgpt&utm_term=cvx&spm=1018.2226.3001.4187

2.https://www.jianshu.com/p/69bf890e1b1d文章來源地址http://www.zghlxwxcb.cn/news/detail-479270.html

到了這里,關(guān)于MATLAB中CVX工具箱解決凸優(yōu)化問題的基本知識——語法、變量聲明、目標(biāo)函數(shù)、約束條件、cvx編程錯誤及解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • (轉(zhuǎn)載)matlab遺傳算法工具箱

    (轉(zhuǎn)載)matlab遺傳算法工具箱

    ????????以下內(nèi)容大部分來源于《MATLAB智能算法30個案例分析》,僅為學(xué)習(xí)交流所用。 ????????遺傳算法(genetic algorithm,GA)是一種進化算法,其基本原理是仿效生物界中的“物競天擇、適者生存”的演化法則。遺傳算法是把問題參數(shù)編碼為染色體,再利用迭代的方式進行選

    2024年02月07日
    瀏覽(26)
  • MATLAB cftool工具箱——曲線擬合

    MATLAB cftool工具箱——曲線擬合

    ? ? cftool工具箱可以將數(shù)據(jù)點擬合成曲線或曲面并直觀顯示出圖像。能實現(xiàn)多種類型的線性、非線性曲線/面擬合。 ? ? 有兩種方式打開cftool:(1)在命令行窗口輸入\\\"cftool\\\"并回車;(2)在MATLAB的\\\"APP\\\"選項欄中找到\\\"Curve Fitting\\\"程序打開即可。 ? ? 界面左上部分為數(shù)據(jù)區(qū)域,下拉框中

    2024年02月08日
    瀏覽(25)
  • 【MATLAB第57期】基于MATLAB的雙隱含層BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測模型(無工具箱版本及工具箱版本對比)

    【MATLAB第57期】基于MATLAB的雙隱含層BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測模型(無工具箱版本及工具箱版本對比)

    數(shù)據(jù)為案例數(shù)據(jù) 。103行樣本,7輸入1輸出數(shù)據(jù)。 訓(xùn)練集數(shù)據(jù)的R2為:0.9022 測試集數(shù)據(jù)的R2為:0.87266 訓(xùn)練集數(shù)據(jù)的MAE為:1.8189 測試集數(shù)據(jù)的MAE為:2.1658 訓(xùn)練集數(shù)據(jù)的MBE為:-0.00088469 測試集數(shù)據(jù)的MBE為:0.3059 數(shù)據(jù)與無工具版本相同,數(shù)據(jù)順序也相同。 訓(xùn)練集數(shù)據(jù)的R2為:1 測試

    2024年02月16日
    瀏覽(51)
  • Matlab樣條工具箱及曲線擬合

    Matlab樣條工具箱及曲線擬合

    Matlab樣條工具箱提供了樣條的建立、操作、繪制等功能. 建立一個樣條曲線或曲面,根據(jù)前綴可分為4類: 前綴 類別 cs* 三次樣條 pp* 分段多項式樣條 sp* B樣條,系數(shù)為基函數(shù)系數(shù) rp* 有理B樣條 函數(shù)操作:求值、求導(dǎo)數(shù)、求積分等; 節(jié)點操作:節(jié)點重數(shù)的設(shè)定、修改等. 1.三次

    2024年02月08日
    瀏覽(31)
  • 在Matlab中安裝LibSVM工具箱

    在Matlab中安裝LibSVM工具箱

    1 下載工具箱 地址:LibSVM下載地址 下拉網(wǎng)頁: 2 注意事項: 2.1 注意測試數(shù)據(jù) ==官網(wǎng)下載的數(shù)據(jù)包中沒有Matlab對應(yīng)的數(shù)據(jù)集格式,點此下載:heart_scale.mat.== 鏈接: https://pan.baidu.com/s/15LYMilm8asw9EYkHmifLyg 提取碼: trws 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機App,操作更方便哦 –來自百度

    2024年02月04日
    瀏覽(19)
  • 遺傳算法與Matlab GA工具箱

    遺傳算法與Matlab GA工具箱

    GA是一種進化算法,基本原理效仿生物界“物競天擇,適者生存”的演化法則。 一些基本概念 種群population:問題潛在的解集 個體individual:每一個可能的解,通過基因編碼一定數(shù)目的個體形成一個種群 適應(yīng)度fitness:由此判斷個體的優(yōu)良,進而進行選擇 選擇selection、交叉cr

    2024年02月09日
    瀏覽(20)
  • matlab機器人工具箱基礎(chǔ)使用

    資料:https://blog.csdn.net/huangjunsheng123/article/details/110630665 test1.m

    2024年02月12日
    瀏覽(101)
  • matlab系統(tǒng)辨識工具箱及其反向驗證

    matlab系統(tǒng)辨識工具箱及其反向驗證

    系統(tǒng)辨識工具箱 什么時候使用系統(tǒng)辨識,當(dāng)系統(tǒng)傳遞函數(shù)不確定(在多大程度上不確定?)時,通過對輸入輸出數(shù)據(jù)采集,通過數(shù)學(xué)迭代找到控制對象的近似模型。在找到近似模型(傳遞函數(shù))后,就可以使用線性化調(diào)參工具對系統(tǒng)控制參數(shù)進行整定,進行控制系統(tǒng)設(shè)計。 調(diào)用命

    2024年02月05日
    瀏覽(25)
  • 【Matlab】相機標(biāo)定(計算機視覺工具箱)

    【Matlab】相機標(biāo)定(計算機視覺工具箱)

    圖像處理和計算機視覺是Matlab的一個主要應(yīng)用領(lǐng)域,這部分包括4個工具箱——圖像處理、計算機視覺、雷達、醫(yī)學(xué)圖像。由于視覺的東西容易呈現(xiàn),所以先從計算機視覺工具箱學(xué)起。 官方文檔對計算機視覺工具箱的介紹如下:設(shè)計和測試計算機視覺、3D 視覺和視頻處理系統(tǒng)

    2024年02月05日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包