目录

简介

全局最优化

局部优化

有约束优化问题

代码实现


简介

凸优化,或叫做凸最优化凸最小化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。

在金融学和经济学中,凸优化起着重要作用,这方面的例子包括市场数据校准和期权定价模型,或者效用函数的优化。

我们对下列函数fm进行这种优化

#coding:UTF-8
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib as mpl
import scipy.optimize as spodef fm(*args):return (np.sin(args[0])+0.05*args[0]**2+np.sin(args[1])+0.05*args[1]**2)x = np.linspace(-10,10,50)
y = np.linspace(-10,10,50)
x,y = np.meshgrid(x,y)
z = fm(x,y)fig = plt.figure(figsize=(9,6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(x,y,z,rstride=2,cstride=2,cmap=mpl.cm.coolwarm,linewidth=0.5,antialiased=True)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
fig.colorbar(surf,shrink=0.5,aspect=5)
plt.show()

全局最优化

def fo(*args):x = args[0][0]y = args[0][1]z = np.sin(x) + 0.05*x**2 + np.sin(y) + 0.05*y**2#print(x,y,z)return z
opt = spo.brute(fo,((-10,10,0.1),(-10,10,0.1)),finish=None)
print(opt)
print(fm(opt[0],opt[1]))

[-1.4 -1.4]
-1.7748994599769203Process finished with exit code 0

最优化参数现在是x=y=-1.4,全局最小化的最小函数大约-1.7749

局部优化

opt2 = spo.fmin(fo,(2.0,2.0),maxiter=250)
print(opt2)
print(fm(opt2[0],opt2[1]))
Optimization terminated successfully.Current function value: 0.015826Iterations: 46Function evaluations: 86
[4.2710728  4.27106945]
0.0158257532746805Process finished with exit code 0

有约束优化问题

现实中的问题往往是有约束条件的,在条件允许内,制定最优的解决方案,从而获得最好的结果。

例如如下情景:你可以选择投资两种证券,如何分配才能取得最大化收益呢?

已知假设如下,两种证券现价格为 =  = 10,收益受到u,d两种状态影响,一年后,u状态下的收益分别为15和5,而d下则为5和12,假设两种状态出现的概率相同,用=  = 0.5表示,而他们的收益则用,表示

你的预算为 = 100,

未知假设:未来财富率的效用函数如下如下 = ,a,b是投资者购买的证券数量,则如下公式成立

  •        总收益公式
  •                                总投资收到预算的约束
  •                                                每种证券的投资数量收到非负数约束

现在我们将数值带入,反向求解

  •      函数1
  •                         条件1
  •                                                条件2

代码实现

import scipy.optimize as spo
from math import sqrt
def Eu(*args): #函数一a = args[0][0]b = args[0][1]return -(0.5*sqrt(a*15+b*5)+0.5*sqrt(a*5+b*12))cons = ({'type':'ineq','fun':lambda a: 100-a[0]*10-a[1]*10 }) #条件一
bnds = ((0,1000),(0,1000))  #条件二
result = spo.minimize(Eu,[5,5],method='SLSQP',bounds=bnds,constraints=cons)
print(result)
     fun: -9.700883611487832jac: array([-0.48508096, -0.48489535])message: 'Optimization terminated successfully.'nfev: 21nit: 5njev: 5status: 0success: Truex: array([8.02547122, 1.97452878])Process finished with exit code 0

结果如上,你要购买8个a证券和2个b证券。

python3凸优化相关推荐

  1. 【BZOJ5311/CF321E】贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性)

    [BZOJ5311/CF321E]贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性) 题面 BZOJ CF 洛谷 辣鸡BZOJ卡常数!!!!!! 辣鸡BZOJ卡常数!!!!!! ...

  2. 详解GCN、GAT、凸优化、贝叶斯、MCMC、LDA

    如果你准备发AI方向的论文,或准备从事科研工作或已在企业中担任AI算法岗的工作.那么我真诚的向大家推荐,贪心学院<高阶机器学习研修班>,目前全网上应该找不到类似体系化的课程.课程精选了四大 ...

  3. 机器学习数学基础系列|凸优化——开启新世界的大门(上)

    在机器学习中,要做的核心工作之一就是根据实际问题,定义出一个目标函数,接着找到这个目标函数的最优解.在找这个最优解的过程中,你可能会生不如死~ 但是,上帝关上了你的门,总会给你打开一扇窗~ 有一类问题 ...

  4. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件

    机器学习+优化问题的种类.如何优化.凸优化.非凸优化.对偶问题.KKT条件 目录

  5. 干货丨从基础知识到实际应用,一文了解「机器学习非凸优化技术」

    文章来源:机器之心 优化作为一种研究领域在科技中有很多应用.随着数字计算机的发展和算力的大幅增长,优化对生活的影响也越来越大.今天,小到航班表大到医疗.物理.人工智能的发展,都依赖优化技术的进步. 在 ...

  6. dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)

    qwq 安利一个凸优化讲的比较好的博客 https://www.cnblogs.com/Gloid/p/9433783.html 但是他的暴力部分略微有点问题 qwq 我还是详细的讲一下这个题+这个知 ...

  7. 凸优化 [Convex Optimization] — [美] 鲍德(Stephen Boyd),Lieven Vandenberghe 著,王书宁,许鋆,黄晓霖 译

    <信息技术和电气工程学科国际知名教材中译本系列:凸优化>从理论.应用和算法三个方面系统地介绍凸优化内容. 凸优化在数学规划领域具有非常重要的地位.从应用角度看,现有算法和常规计算能力已足以 ...

  8. UA MATH567 高维统计专题3 含L1-norm的凸优化6 Stochastic Gradient Descent简介

    UA MATH567 高维统计专题3 含L1-norm的凸优化6 Stochastic Gradient Descent简介 Stochastic Gradient Descent的思想 Varian ...

  9. UA MATH567 高维统计专题3 含L1-norm的凸优化4 Nesterov方法与Accelerate Proximal Gradient

    UA MATH567 高维统计专题3 含L1-norm的凸优化4 一阶方法的加速 Nesterov方法 Accelerate Proximal Gradient (APG) 梯度下降与Proximal ...

最新文章

  1. Java™ 教程(字符流)
  2. linux之创建临时文件的方法
  3. IP管理提高业务网络安全性的3种方式——Vecloud
  4. RabbitMQ消息轮询重发消息(消息补偿)
  5. 35. 搜索插入位置-LeetCode
  6. 和我一起读Java8 LinkedList源码
  7. RAC环境创建本地数据文件的解决方法
  8. python很有用吗_Python之父:为什么操作符很有用?
  9. Improvements of Job Scheduler and Query Execution on Flink OLAP
  10. 前端工程师最常用的字体图标库
  11. Android Studio在线自动升级版本
  12. Android webview数据获取 webview抓取
  13. 酷我音乐android2.0,酷我音乐2012 2.0.0(For iphone)享受听歌“零“消费
  14. 20中氨基酸名称、简写及化学式
  15. 接触式光电位移传感器的原理是
  16. 在线教育的优势强调实时直播、实时互动
  17. sCrypt 合约中的椭圆曲线算法:第二部分
  18. Web漏洞-Xss跨站
  19. 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
  20. leetcode(力扣) 39. 组合总和(回溯 剪枝)

热门文章

  1. 2019spring exam 7-5 校庆
  2. 【转】《DOTA系列》蛰伏恐惧之路——复仇之魂攻略
  3. 清理软件CClearner
  4. c51语言1秒延时程序,KeilC51程序设计中几种精确延时方法
  5. STM32通用定时器输出带死区互补PWM/任意移相PWM
  6. python turtle方向_Python turtle.left()用法及代码示例
  7. Yii实战开发大型商城项目视频教程
  8. JavaScript的数组练习
  9. 大连美女仿生机器人火了,网友:人形电脑东北银
  10. flink1.12.0学习笔记第2篇-流批一体API