凸优化算法之坐标上升法

原理

对于没有约束限制的优化问题,可以每次仅更新函数中的一维,固定其他参数,迭代多次以达到求解优化函数的目的。
这里写图片描述 (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的值不再变化或着变化幅度小于某个值即可
 

转载于:https://www.cnblogs.com/flyfatty/p/6684305.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值