凸優化算法之坐標上升法


原理

對於沒有約束限制的優化問題,可以每次僅更新函數中的一維,固定其他參數,迭代多次以達到求解優化函數的目的。
這里寫圖片描述 (W表示待求凸函數,α向量是待求解)
具體過程如下
這里寫圖片描述

舉例
求解問題   f(x 1,x 2) = 3x 1 2 + x 2 2 + 4x 1x 2 - 8
迭代次數計數
          {
1、固定x 2更新x 1     x 1 = - 2/3 x 2
2、固定x 1更新x2   x 2 = -2 x 1
}
figure_1-5.png
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 05 18:09:41 2017
@author: LoveDMR
坐標上升法
"""
import numpy as np
import matplotlib.pyplot as plt
delta = 0.025
x1 = np.arange( -5 , 5 , delta )
x2 = np.arange( -5 , 5 , delta )
X1 , X2 = np.meshgrid( x1 , x2 )
Y = X1**2 + 5 * X2**2 + 3 * X1 * X2 - 6
plt.figure()
bg_fig = plt.contour(X1,X2,Y)
a , b = [] , []
a.append(-4)
b.append(3)
j = 1
for i in xrange(1,150):
    a_tmp = - 1.5 * b[j-1]
    a.append( a_tmp )
    b.append( b[j-1] )
    
    j = j + 1
    
    b_tmp = - 0.3 * a[j-1]
    b.append( b_tmp )
    a.append( a[j-1] )
    
plt.plot(a , b)
plt.title( "Coordinate Ascent" )
plt.xlabel('x1')
plt.ylabel('x2')
plt.show()

  

另外可以迭代到W的值不再變化或着變化幅度小於某個值即可
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM