1. 等式約束優化 (可行點)
之前,講的下降方法以及Newton方法都是在無約束條件的前提下的。這里討論的是在等式約束(線性方程)的前提下討論的。我們研究的是下面的凸優化問題:
其中
請不要懷疑 條件的可靠性,否則,只需找出其線性無關組即可。而且,顯然,如果 如果無解,那麼優化問題同樣無解。
通過對對偶問題,及KKT條件的分析,可以知道,該優化問題存在最優解的充要條件是,存在 滿足:
我們首先確定矩陣 和向量 ,用以參數化可行集:
只需, 為 的一個特解即可。 是值域為 的零空間的任何矩陣(滿足 ,即 可以取得所有 的解)。於是等式約束問題就可以變為無約束問題:
我們也可以為等式約束構造一個最優的對偶變數 :
我們希望導出等式約束問題:
在可行點 處䣌Newton方向 ,將目標函數換成在x附近的二階泰勒近似:
注意上述問題時關於 的優化問題。
根據我們在文章開頭提到的最優性條件,可以得到:
我們可以將Newton方向 及其相關向量 解釋為最優性條件
的線性近似方程組的解。
我們用 代替 ,用 代替 ,並將第二個方程中的梯度項換成其在 附近的線性近似,從而得到:
利用 ,以上方程變成:
這上面定義的一樣。
我們將等式約束問題的Newton減量定義為:
這和無約束情況表示的是一樣的,因此也可以進行同樣的解釋。
在 處的二階泰勒近似為:
與二次模型之間的差值滿足:
從上面可以看出, 對 處的 給出了基於二次模型的一個估計,這可以作為設計好的停止准則的基礎。
注意,下面的演算法初始點為可行點。
對原始問題採用Newton方法的迭代過程和對利用消除法簡化後採用Newton方法過程完全一致,證明翻閱《凸優化》。
2. abaqus網格太小算不了,網格太大精度不夠怎麼辦
在Mesh功能模塊中選擇菜單Adaptivity---Remeshing rule---Create,定義需要網格重劃的區域、誤差因子(error indicator)的相關變數和目標、以及網格重劃的控制參數。
需要注意的是,對於三維實體模型,必須使用四面體單元網格;
對於二維模型,必須使用三角形單元或以進階演算法(advancing front)生成的四邊形單元網格,否則在提交分析時將會提示錯誤。
在Job功能模塊中選擇菜單Adaptivity---Manage,在彈出的Adaptivity Process Manager對話框中單擊Create按鈕,創建自適應分析作業系列(adaptivity process),指定最大重復次數(Maximum iterations),
然後單擊這個對話框中的Submit按鈕提交分析,注意不是通常所用的Job Manager對話框中的Submit按鈕。
ABAQUS/CAE會自動完成以下自適應網格重劃過程:首先提交一個基於當前網格的分析作業,在分析完成後,根據得到的結果計算誤差因子,根據這個誤差因子重新生成網格(在JOB功能模塊中可以看到新的網格),然後重新提交分析。
以上過程將會自動重復,直到達到第一步設定的網格重劃目標或在第二步中設定的最大重復次數。
/Standard的大變形分析中,盡管也要以設定ALE自適應網格,但不會起到明顯的作用。
3. excel規劃求解提高精度到0.0001後找不到合適的解,但我需要這個精度怎麼辦
你將原數據放大10000倍,得到結果後再縮小10000倍就可以了。
4. 求解matlab約束優化問題
該極小值約束優化問題可以用fmincon()優化函數來解決。
解決方法:
1、自定義目標函數 myfun(x)
2、自定義約束函數 mycon(x)
3、運用fmincon()函數
x0=[3;3] %初值
[x,fval] = fmincon(@(x) myfun(x),x0,[],[],[],[],[],[],@(x) mycon(x)); %使用格式
4、運行結果
5. pso的約束優化
約束優化問題的目標是在滿足一組線性或非線性約束的條件下,找到使得適應值函數最優的解。對於約束優化問題,需要對原始PSO演算法進行改進來處理約束。
一種簡單的方法是,所有的微粒初始化時都從可行解開始,在更新過程中,僅需記住在可行空間中的位置,拋棄那些不可行解即可。該方法的缺點是對於某些問題,初始的可行解集很難找到。或者,當微粒位置超出可行范圍時,可將微粒位置重置為之前找到的最好位置,這種簡單的修正就能成功找到一系列Benchmark問題的最優解。Paquet讓微粒在運動過程中保持線性約束,從而得到一種可以解決線性約束優化問題的PSO演算法。Pulido引入擾動運算元和約束處理機制來處理約束優化問題。Park提出一種改進的PSO演算法來處理等式約束和不等式約束。
另一種簡單的方法是使用懲罰函數將約束優化問題轉變為無約束優化問題,之後再使用PSO演算法來進行求解。Shi將約束優化問題轉化為最小—最大問題,並使用兩個共同進化的微粒群來對其求解。譚瑛提出一種雙微粒群的PSO演算法,通過在微粒群間引入目標信息與約束信息項來解決在滿足約束條件下求解目標函數的最優化問題。Zavala在PSO演算法中引入兩個擾動運算元,用來解決單目標約束優化問題。
第三種方法是採用修復策略,將微粒發現的違反約束的解修復為滿足約束的解。
約束滿足
PSO演算法設計的初衷是用來求解連續問題,,對微粒的位置和速度計算公式進行了重新定義,使用變數和它的關聯變數存在的沖突數作為微粒的適應度函數,並指出該演算法在求解約束滿足問題上具有一定優勢。Lin在Schoofs工作的基礎上研究了使用PSO演算法來求解通用的n元約束滿足問題。楊輕雲在Schoofs工作的基礎上對適應度函數進行了改進,把最大度靜態變數序列引入到適應度函數的計算中。
6. 關於用MATLAB優化函數fmincon進行約束優化編程的問題
1 function [c,ceq]=yueshufun(x)
x1=x(1);x2=x(2);x3=x(3);
c=[(x2^2+x3^2-(1-x1)^2)/2*x2*x3-sqrt(3)/2;
sqrt(2)/2-(x2^2+x3^2-(1-x1)^2)/2*x2*x3];
ceq=[]; %%非線性約束關系函數的輸入是一個矩陣
2 function H=goal_func(x)
x1=x(1);x2=x(2);x3=x(3);x4=x(4);
F=0;
for i=1:20;
%w表示輸入角θ。輸入角變化180度,分20次,每次變化9度。
wi=1*pi*i./20;
G=(atan(x1*sin(x4)/(1-x1*cos(x4)))+acos((x1^2-x2^2+x3^2+1-2*x1*cos(x4))...
/(2*x3*sqrt(x1^2+1-2*x1*cos(x4))))-atan((x1*sin(x4+wi))/(1-x1*cos(x4+wi)))...
-acos((x1^2-x2^2+x3^2+1-2* x1*cos(x4+wi))/(2*x3*sqrt(x1^2+1-2*x1*cos(x4+wi))))-6*sin(pi*wi/180)/pi)^2;
F=F+G;
end %運算之後是數學模型中的目標函數。
H=F-r*(log(-x1-x2+x3+1)+log(-x1+x2-x3+1)+log(-x1+x2+x3-1)+log(x1-0.1)+log(-x1+0.5)...
+log(x2-0.1)+log(-x2+1.4)+log(x3-0.1)+log(-x3+0.9)...
+log(x2^2+x3^2-(1-x1)^2)/2*x2*x3-sqrt(3)/2+log(sqrt(2)/2-(x2^2+x3^2-(1-x1)^2)/2*x2*x3)); %%目標函數中r沒有定義,在目標函數中定義r。
3 A中,樓主要求的參數是3個,但是G中用到了x4,那你的x中就必須有四個值,而不是三個值;
4 x0=[0.3;1;0.6;2*pi/3;];初始值x0應該是列向量
5 options=optimset('Largescale','on','display','iter','tolx',1e-4); 是用來控制fmincon的各種參數,tolx是優化終止條件;LargeScale是採用的演算法;display選擇iter顯示迭代次數;
6 注意log(a)a不能為0,我測試了下,提示log運算中a出現0的情況;
7. 在做圖像處理時,如何提高識別演算法的設計與效果的精度
總結
這些技巧是希望大家在不知道如何去做的時候可以快速的找到提高的思路。
還有無數其他方法可以進一步優化你的深度學習,但是上面描述的這些方法只是深度學習優化部分的基礎。
圖像處理
8. 機會約束規劃求解的精度問題
機會約束規劃的解法大致有兩種。其一,將機會約束規劃轉化為確定性規劃,然後用確定性規劃的理論去解決;其二,通過隨機模擬技術處理機會約束條件,並利用遺傳演算法的優勝劣汰,得到機會約束規劃的目標函數最優值和決策變數最優解集。
機會約束規劃的目標函數最優值及決策變數的最優解集與模型中的隨機系數有關,因而具有隨機性。從數理統計的角度看,對這種隨機的目標函數最優值以及決策變數的最優解集可以作出某種置信水平的區間估計。衡量區間估計的精度的一個重要指標是估計區間的長度,估計區間長度越小,估計精度就越大;反之,估計區間長度越大,估計精度就越小。