在实际的数学建模应用中,我们会遇到很多约束条件是二次的,三次的或者是高次函数的情况,这样用 optimize.linprog()来解决就显得不适用了,因此我们使用scipy.optimize下得minimize函数来解决这个问题。

官方文档:
SciPy API referencehttps://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize

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

fun:是目标函数,是一个函数形式传入,

x0:初步猜测。大小为 (n,) 的实数元素数组,其中 n 是自变量的数量。

constraints:约束定义。仅适用于COBYLA,SLSQP和trust-constr.传入字典类型的数据,其数据是约束条件,可以是等式,也可以是不等式约束。

bounds:参数范围限定,即限定求解的x的取值范围。

求解约束条件下得最小值:

导入头文件,建立目标函数:

from scipy import optimizef = lambda x: x[0] ** 2 + x[1] **2 + x[2] ** 2 + 8

建立约束条件函数:

cons = ({'type': 'ineq', 'fun': lambda x: x[0]**2 - x[1] + x[2]**2},{'type': 'ineq', 'fun': lambda x: -x[0] - x[1] - x[2]**3 + 20},{'type': 'eq', 'fun': lambda x: -x[0] - x[1]**2 + 2},{'type': 'eq', 'fun': lambda x: x[1] + 2 * x[2]**2 - 3})

type表示约束条件的等式类型,如ineq是不等式,eq是等式。

初始化x,限定x范围,传入参数:

x=(0,0,0)
bounds=[[0,None],[0,None],[0,None]]res = optimize.minimize(f, x0=x,bounds=bounds, constraints=cons)

得到结果如下:

最小值为10.65,x的取值为0.55,1.20,0.94

同时也可以无约束求最值:不传入约束条件即可

res = optimize.minimize(f, x0=x,bounds=bounds)

结果:

python数学建模之用scipy.optimize.minimize解决高次非线性规划问题相关推荐

  1. python数学建模之用scipy.optimize.linprog实现线性规划

    在做数学建模时,我们经常会遇到在约束条件下求解目标的最优解的情况,如:在如下约束条件下求解-x0+4x1的最小值. 在求解这个问题的过程中,我们可以使用不同的工具去解决,如MATLAB.Java等语言 ...

  2. python scipy.optimize.minimize多变量多参数优化

    python scipy.optimize.minimize多变量多参数优化 x是一维变量,无超参数 x是二维变量,无超参数,带bounds x是二维变量,有一个超参数,带bounds x是二维变量, ...

  3. python非线性规划scipy.optimize.minimize介绍

    目录 0. 官方说明 1. Parameters 2. Returns 3. 案例 1)无约束求极值 2)有约束求极值 参考资料 0. 官方说明 在 python 里用非线性规划求极值,最常用的就是 ...

  4. python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)

    文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...

  5. 有关python建模的学习笔记(3)(参考自哔站python数学建模及菜鸟教程)

    规划类模型(线性规划.整数规划.非线性规划) 线性规划 1.1  scipy库解决(参考自https://www.bilibili.com/video/BV12h411d7Dm?p=4及https:/ ...

  6. Python数学建模系列(四):数值逼近

    文章目录 前言 往期文章 1. 一维插值 ​1.1 线性插值与样条插值(B-spline) 1.2 高阶样条插值 2. 二维插值 2.1 图像模糊处理--样条插值 2.2 二维插值的三维图 3. 最小 ...

  7. Python数学建模系列(五):微分方程

    文章目录 前言 往期文章 1.微分方程分类 2.微分方程解析解 3.微分方程数值解 3.1 场线图与数值解 3.2 洛伦兹曲线与数值解 4.传染病模型 模型一:SI-Model 模型二:SIS mod ...

  8. 非线性规划(scipy.optimize.minimize)

    1.minimize() 函数介绍 在 python 里用非线性规划求极值,最常用的就是 scipy.optimize.minimize(). [官方介绍点这里](Constrained minimi ...

  9. Scipy优化scipy.optimize.minimize

    如果喜欢请点赞,收藏,谢谢! 要解决一个优化问题 m i n i m i z e x [ 0 ] , x [ 1 ] \mathrm{minimize}_{x[0],x[1]} minimizex[0 ...

最新文章

  1. AIFramework基本概念整理
  2. Swift初探 1 helloWord
  3. [Swift通天遁地]九、拔剑吧-(9)创建支持缩放、移动、裁切的相机视图控制器
  4. java k线绘制,用Java绘制K线图[Java编程]
  5. 一名优秀的初创企业员工怎么做好工作计划
  6. 从Delphi 7升级到Delphi XE
  7. 那些年陪我走过一个又一个加班夜晚的程序员鼓励师们
  8. Qt中字符串之间的转换
  9. RedHat Linux 7.3基础环境搭建
  10. 十、简单线性回归的python实现(详解)
  11. JAVA maven Spring 开发 webservice 步骤
  12. html5-了解元素的属性
  13. Python3机器学习工具包基础复习
  14. cgi php是什么意思,cgi,fastcgi,php-cgi,php-fpm 是什么
  15. Springboot+高校考勤小程序 毕业设计-附源码131039
  16. Ubuntu20.04、22.04安装nvidia显卡驱动
  17. 用CSS实现立方体360度旋转
  18. 氟虫腈-13C2,15N2同位素内标的基质效应
  19. 微信第一个支持小程序版本号与服务器不符,微信功能又又又更新!第一个就让人不淡定…...
  20. 分享5款堪称神器的免费软件,建议先收藏再下载

热门文章

  1. Android Stduio(as,安卓)实现简易创意电话接听拨打,短信收发,手机传感器
  2. java双重for循环 效率_Java优化for循环嵌套的高效率方法
  3. 计算机科学与技术系石礼昕,度“计算机世界奖学金”揭晓
  4. 同站 和 同源 你理解清楚了么?
  5. ADB(Android Debug Bridge)学习
  6. OWASP ZAP安全扫描基础流程
  7. VMware Pro v14.1.1 激活密钥
  8. 创业失败也值得,因为积累了人脉
  9. 05-获取已连接wifi路由器密码
  10. CSS position:fixed定位时 “高度坍塌” 问题的解决