• 凸函数的非线性规划

minimize 求解的是局部最优解

简单的函数,无所谓 复杂的函数 初始值的设定很重要

scipy.optimize.minimize(fun,x0,args=(),method=None,jac=None,hess=None,hessp=None,bounds= None,constaints=() , tol= None,Callback= None, options=None)

fun:求最小值的目标函数

args:常数值

constraints :约束条件

method:求极值方法,一 般默认。

xO:变量的初始猜测值,注意minimize是局部最优

  • instance1

计算1/x + x 的最小值

from scipy.optimize import minimize
import numpy as np def fun(args):
a = args
v = lambda x: a / x[0] + x[0]
return v if __name__ == '__main__':
args = (1,) #使用元组
x0 = np.asanyarray((2,))
res = minimize(fun(args), x0, method='SLSQP')
print(res.fun)
print(res.success)
print(res.x)

2.0000000815356342
True
[1.00028559]

  • instance2

计算(2+x1)/(1+x2)−3x1+4x3的最小值,其中x1、x2、x3范围在0.1 到 0.9 之间

from scipy.optimize import minimize
import numpy as np def fun(args):
a, b, c, d = args
v = lambda x: (a + x[0]) / (b + x[1]) - c * x[0] + d * x[2]
return v def con(args):
# 0.1 0.9 0.1 0.9
x1min, x1max, x2min, x2max, x3min, x3max = args
# eq 等式等于零 ineq 等式大于零
# x1 - 0.1 > 0
cons = ({'type': 'ineq', 'fun': lambda x: x[0] - x1min},
# 0.9 - x1 > 0 这样就将x 限制在0.1 ~ 0.9 之中
{'type': 'ineq', 'fun': lambda x: -x[0] + x1max},
{'type': 'ineq', 'fun': lambda x: x[1] - x2min},
{'type': 'ineq', 'fun': lambda x: -x[1] + x2max},
{'type': 'ineq', 'fun': lambda x: x[2] - x3min},
{'type': 'ineq', 'fun': lambda x: -x[2] + x3max})
return cons if __name__ == '__main__':
args = (2, 1, 3, 4,)
args1 = (0.1, 0.9, 0.1, 0.9, 0.1, 0.9,)
cons = con(args1) # 初始猜想值 要设的好
x0 = np.asarray((0.5, 0.5, 0.5,))
res = minimize(fun(args), x0, method='SLSQP', constraints=cons)
print(res.fun)
print(res.success)
print(res.x)

-0.773684210526435
True
[0.9 0.9 0.1]



												

最新文章

  1. 《ES6基础教程》之 map、forEach、filter indexOf 用法
  2. [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
  3. AJAX格式
  4. 基于 VLC 的 Android 多媒体解决方案
  5. dijkstra,SPFA,Floyd求最短路
  6. 推荐一个很棒的JS绘图库Flot
  7. 转载-Python学习笔记之文件读写
  8. Fedora 19 vim c语言开发环境
  9. 2013长沙网络赛H题Hypersphere (蛋疼的题目 神似邀请赛A题)
  10. CentOS 6下编译安装MySQL 5.6
  11. OAuth 2.0 认证的原理与实践
  12. DC3求后缀数组板子
  13. Oracle数据库常用的sql语句
  14. 第一次项目上Linux服务器(二:——安装jdk)
  15. CSS currentColor研究
  16. 如何让bat,cmd文件后台运行?如何把文件打包成EXE?
  17. js array.filter实例(数组去重)
  18. Centos下安装并设置nginx开机自启动
  19. promise你懂了吗?
  20. python开发_tkinter

热门文章

  1. KingbaseES的表空间
  2. Springboot pageHelper总结
  3. [机器学习]-分类问题常用评价指标、混淆矩阵及ROC曲线绘制方法
  4. Html飞机大战(十七): 优化移动端
  5. 第一个Django应用 - 第一部分:请求与响应
  6. Ceph分布式存储详述
  7. 银河麒麟安装node,mysql,forever环境
  8. Java线程同步的四种方式详解(建议收藏)
  9. EasyExcel实现文件导入
  10. Optional 常用方法总结