内点法介绍这篇博文写的很好https://blog.csdn.net/dymodi/article/details/46441783,在这篇文章的基础上,本文给出障碍函数法代码和一个算例。

障碍函数内点法的主要思想是:把不等式约束放进目标函数里。以下面的问题为例

不等式约束放进目标函数,变成如下形式:

时,函数特别大,我们希望这个函数像下图红虚线的样子,

但那样不可导,所以我们用如下形式的函数去近似。

图中,时由下往上的的3根蓝线,对应的值是依次增大。障碍函数内点法在迭代的时候,t初值给一个小值,t逐渐增大,使可行域越来越接近红虚线。

在 t 的每一步迭代中,原问题转化为如下子问题:

求解子问题,得到一个最优解,这个是 t 下一步迭代的x初值。

子问题的求解可以用拉格朗日乘子法

拉格朗日乘子法中,通过牛顿迭代法(Newton-Raphson method)求解。

牛顿迭代法解非线性方程组

H(f)是Hessian矩阵。

得到子问题的最优解,然后继续迭代 t

障碍函数内点法的算法步骤如下:(节选自Stephen Boyd的《Convex Optimization》)

迭代终止条件中的m就是不等式约束的个数那个m,为什么以这个条件为终止的原因,参见文章开头提到的博客,Boyd的书里也有详细的证明,是通过原问题的对偶问题证明得到的。是一个大于1的参数,使t每次迭代增大。

算例:

求解如下二次规划问题(解为 x1=0.5,x2=2.25):

转化为如下子问题:

完整python代码如下:

import numpy as np
import timedef grad_f(t, x1, x2):return np.array([[t * (2 * x1 - x2 - 1) + 3 / (6 - 3 * x1 - 2 * x2) - 1 / x1],[t * (-1 * x1 + 4 * x2 - 10) + 2 / (6 - 3 * x1 - 2 * x2) - 1 / x2]])def Hessian_f(t, x1, x2):return np.array([[2*t - 9 / pow((6-3*x1-2*x2), 2) + 1 / pow(x1, 2), -t - 6 / pow((6-3*x1-2*x2), 2)],[-t - 6 / pow((6-3*x1-2*x2), 2), 4*t - 4 / pow((6-3*x1-2*x2), 2) + 1 / pow(x2, 2)]])def NewtonRaphson(t, x1, x2):gf = grad_f(t, x1, x2)Hf = Hessian_f(t, x1, x2)Hf_inv = np.linalg.inv(Hf)deltaX = 0.1 * np.matmul(Hf_inv, gf)res = np.linalg.norm(deltaX, 2)return x1 - deltaX[0, 0], x2 - deltaX[1, 0], resif __name__ == "__main__":time_start = time.time()t = 2x1 = 1x2 = 2while True:while True:x1, x2, res = NewtonRaphson(t, x1, x2)if res < 0.0001:break# print(x1, x2, res)# print("------")if 3.0 / t < 0.0001:time_end = time.time()print('consume time:', time_end - time_start)print("t:{}, x1:{}, x2:{}".format(t, x1, x2))breakt = 2 * t

内点法(interior point method)求解二次规划,附python代码相关推荐

  1. 未知数数量大于方程数量,如何求解,附Python 代码

    未知数如果大于方程数量,意味着限制少于自由度,方程要么无解,要么有无穷个解. 怎么办?我就要部分答案,只要满足方程限制就行? 示例如下: import sympy as sp x, y, z = sp ...

  2. 材料力学求解器-刚架与桁架杆系的计算机求解(附matlab代码)

    材料力学求解器-刚架与桁架杆系的计算机求解(附matlab代码) 1 刚架的计算机求解 1.1位移法与刚度矩阵 1.2 matlab程序 2 桁架的计算机求解 材料力学是一门非常成熟的学科,里面有大量 ...

  3. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只 ...

  4. 机器学习系列(12)_XGBoost参数调优完全指南(附Python代码)

    机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) 原文链接:http://blog.csdn.net/han_xiaoyang/article/details/5266539 ...

  5. python重点知识归纳_一文了解机器学习知识点及其算法(附python代码)

    一文了解机器学习知识点及其算法(附python代码) 来源:数据城堡 时间:2016-09-09 14:05:50 作者: 机器学习发展到现在,已经形成较为完善的知识体系,同时大量的数据科学家的研究成 ...

  6. 教程 | 理解和实现自然语言处理终极指南(附Python代码)

     教程 | 理解和实现自然语言处理终极指南(附Python代码) 时间 2017-02-16 14:41:39 机器之心 原文  http://www.jiqizhixin.com/article ...

  7. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

  8. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  9. python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...

    原标题:推荐 :一文读懂随机森林的解释和实现(附python代码) 作者:WilliamKoehrsen:翻译:和中华:校对:李润嘉 本文约6000字,建议阅读15分钟. 本文从单棵决策树讲起,然后逐 ...

  10. Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

最新文章

  1. hdu4267线段树段更新,点查找,55棵线段树.
  2. 计算机科学类书籍(转)
  3. python代码 程序员编程艺术 2.1
  4. 读书笔记:Information Architecture for the World Wide Web, 3rd Edition 北极熊 第一部分 1-3...
  5. 闪退没由报错_关于floor()报错注入,你真的懂了吗?
  6. python的动态参数
  7. Spark的动态资源分配ExecutorAllocationManager
  8. 【leetcode 简单】 第六十七题 回文链表
  9. c++中的enum类
  10. 功夫小子实践开发-Menu家族学习及开始菜单场景的实现
  11. cat 大众点评 mysql_大众点评-CAT监控平台
  12. 数据化、信息化、数字化和智能化之间联系和区别解析
  13. Nginx不解析PHP,无法打开PHP文件
  14. 线性代数学习笔记——第六讲——矩阵的转置
  15. 小米3手机无法打开WLAN ,WIFI 的解决方法,不需刷机
  16. 辽宁粮食产量438亿斤 农业供给侧结构性改革不断优化
  17. RaisAjax结合
  18. 如何批量生成矩阵25码
  19. 平板电脑 中柏4s pro 重装win10 系统
  20. SSM与Spring

热门文章

  1. 使用pyecharts绘制新冠肺炎疫情地图
  2. WPS简历模板的图标怎么修改_新媒体运营-简历模板范文,【工作经历+项目经验+自我评价】怎么写?...
  3. 22_多易教育之《yiee数据运营系统》用户画像-消费行为性别预测篇
  4. 易如意php,易如意网络验证系统1.1【开源】
  5. 100-网络编程——第五章流式套接字
  6. 易语言服务器ping,Ping网络IP地址易语言源码
  7. 佳能MP145/140打印机 出现错误代码“E5”怎么处理
  8. python编程机械_机器人Python编程与开发
  9. 大数据Hadoop(一):​​​​​​​Hadoop介绍
  10. 产品配件类目税目分类_2018商品和服务税收分类编码表