python scipy.optimize 非线性规划 求解局部最优和全局最优

1. 非线性规划 求解局部最优

首先展示一个最简单的示例:

from scipy.optimize import minimize

def fun_convex(x):
    return (x - 1) ** 2 + 3

minimize(fun=fun_convex, x0=0, bounds=[(-10,10)])

在这里插入图片描述

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: 变量的初始猜测值,如果有多个变量,需要给每个变量一个初始猜测值
args: 常数值,fun中的可变常量
method: 求极值的方法,官方文档给了很多种。一般使用默认
constraints: 约束条件,针对fun中为参数的部分进行约束限制

scipy.optimize.minimizel 官方说明文档
通过scipy.optimize.minimize,我们可以很轻松的求解凸函数的局部最优的数值解,这里有几个注意点:
①求解函数为非凸函数时,所求结果为局部最优
②求解函数为凸函数时,所求结果为最小值
③所求皆为数值解而不是理论解

下面展示一个非凸函数的示例:

from scipy.optimize import minimize

def fun_nonconvex(x): 
    if x<0:
        return ( x + 2 ) ** 2 + 1
    else:
        return ( x - 2 ) ** 2 + 2

minimize(fun=fun_nonconvex, x0=0, bounds=[(-10,10)])

在这里插入图片描述
我们可以发现,所求的x=2并非为全局最优解(应该是x=-2)而是局部最优解,所求结果与设置的初值x0有很大关系。

2. 求解全局最优

通过以上内容我们可以发现,scipy.optimize.minimize只能求解局部最优解,那么我们该如何求解全局最优呢?本文介绍scipy.optimize的3种方法:
brute():网格搜索优化,属于暴力全局优化。 brute官方说明文档
differential_evolution():差分进化本质上是随机的(不使用梯度方法)来寻找最小值,并且可以搜索大面积的候选空间,但通常需要比传统的基于梯度的技术更多的函数评估。 differential_evolution官方说明文档
basinhopping():Basin-hopping 是一种two-phase 方法,它将全局步进算法与每一步的局部最小相结合,会在每次随机跳跃后使用局部松弛,旨在模拟原子簇能量最小化的自然过程。 basinhopping官方说明文档

使用蛮力的brute()就不深入探讨,接下来给出differential_evolution()basinhopping()的简单例程:

from scipy.optimize import differential_evolution, basinhopping

def fun_nonconvex(x): 
    if x<0:
        return ( x + 2 ) ** 2 + 1
    else:
        return ( x - 2 ) ** 2 + 2

res_differential_evolution = differential_evolution(func=fun_nonconvex, bounds=[(-10,10)])
print('differential_evolution()的结果为:\n', res_differential_evolution)

res_basinhopping = basinhopping(func=fun_nonconvex, x0=0, niter=1000)
print('\n basinhopping()的结果为:\n', res_basinhopping)

这两种方法均可以求得全局最优解:
在这里插入图片描述

DooDoo~
关注 关注
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
python 线性规划全局最优解_使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)...
weixin_39560064的博客
12-09 1403
1.线性规划模型:2.使用pythonscipy.optimize linprog求解模型最优解:scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None,method='simplex',callback=None,options=None)method = 'simplex'(单纯...
python 非线性规划(from scipy.optimize import minimize)
chl183的博客
07-13 5672
python 非线性规划(from scipy.optimize import minimize)库方法介绍拓展 库方法介绍 官方文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html 方法的入参: scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=Non
python模块:Scipy.optimize.minimize规划问题求解
qq_58539881的博客
08-19 2万+
多元标量函数的最小化,是数学规划模型中更为一般的模型,该模块包括有限制性约束和无限制性约束的最小化,而对于限制性约束又分为线性约束和非线性约束。这种更为一般的模型需要针对具体的问题假设选择特定的方法进行求解。 在数学规划模型中,minimize提供的方法能够解决无/有(线性、非线性)约束的多个决策变量目标函数的最优化问题,但是由于该模块是依据函数导数与梯度进行求解,不能够求解整数规划、01规划等问题。
Python求解线性规划(Scipy库)
最新发布
albert_31415的博客
08-09 354
c:上述标准型中的模板向量;bounds:决策向量的下界和上界所组成的n个元素的元组(bounds的默认取值是下界为0,上界为正无穷)。在Python中,有很多库都提供了线性规划的求解方法,比如Scipy和cvxopt。例题某种商品有6个仓库的存货量,8个客户的需求量,单位商品运价表如图。就先不放输出了,那300多行看着操心,下次专门开讲一节如何看这些说明的好了,帮助你们快速入手。注意:该式子只能求最小值,且不等式约束只能是小于等于限制,所以要求最大值或存在大于等于约束时要在处理前转化一下。
python 非线性规划方式(scipy.optimize.minimize)
01-21
一、背景: 现在项目上有一个用python 实现非线性规划的需求。非线性规划可以简单分两种,目标函数为凸函数 or 非凸函数。 凸函数的 非线性规划,比如fun=x^2+y^2+x*y,有很多常用的python库来完成,网上也有很多资料,比如CVXPY 非凸函数的 非线性规划(求极值),从处理方法来说,可以尝试以下几种: 1.纯数学方法,求导求极值; 2.使用神经网络,深度学习来处理,可参考反向传播算法中链式求导的过程; 3.寻找一些python库来做,本文介绍scipy.optimize.minimize的使用方法 二、库方法介绍 官方文档:https://docs.scipy.org/do
python scipy优化器模块(optimize
weixin_30835923的博客
07-15 864
pyhton数据处理与分析之scipy优化器及不同函数求根 1、Scipy的优化器模块optimize可以用来求取不同函数在多个约束条件下的最优化问题,也可以用来求取函数在某一点附近的根和对应的函数值;2、scipy求取函数最优解问题(以多约束条件下的最小值为例)如下所示:import numpy as np #导入数据结构nmupy模块impor...
python科学计算——scipy.optimize
It’s All Uphill From Here
09-05 6983
SciPyoptimize模块提供了许多数值优化算法,下面对其中的一些记录。 非线性规划scipy.optimize.minimize) 一.背景: 现...
Python非线性全局优化
微小冷的学习笔记
08-11 1641
optimize模块非常强大,封装了诸多成熟且高效的算法,久经考验。对于参加数学竞赛的同学来说,辛辛苦苦撸出来的遗传算法、模拟退火算法,在scipy所实现的双退火或是差分进化算法面前,就显得十分稚嫩。
优化 | 利用SciPy求解非线性规划问题
fengdu78的博客
01-09 6282
作者:莫斑炜编者按:本文使用SciPyoptimize模块来求解非线性规划问题,结合实际例子,引入非线性规划问题的求解算法及相应函数的调用。本文提纲一维搜索/单变量优化问题无约束多元优...
python非线性规划问题_python 非线性规划方式(scipy.optimize.minimize)
weixin_39973410的博客
11-29 651
一、背景:现在项目上有一个用python 实现非线性规划的需求。非线性规划可以简单分两种,目标函数为凸函数 or 非凸函数。凸函数的 非线性规划,比如fun=x^2+y^2+x*y,有很多常用的python库来完成,网上也有很多资料,比如CVXPY非凸函数的 非线性规划(求极值),从处理方法来说,可以尝试以下几种:1.纯数学方法,求导求极值;2.使用神经网络,深度学习来处理,可参考反向传播算法中链...
python非线性规划问题_python 非线性规划方式(scipy.optimize.minimize)
weixin_39938165的博客
11-29 529
一、背景:现在项目上有一个用python 实现非线性规划的需求。非线性规划可以简单分两种,目标函数为凸函数 or 非凸函数。凸函数的 非线性规划,比如fun=x^2+y^2+x*y,有很多常用的python库来完成,网上也有很多资料,比如CVXPY非凸函数的 非线性规划(求极值),从处理方法来说,可以尝试以下几种:1.纯数学方法,求导求极值;2.使用神经网络,深度学习来处理,可参考反向传播算法中链...
经典遗传算法(SGA)解非线性最优化问题的python代码实现
10-24
经典遗传算法(SGA)解非线性最优化问题的原理及其python代码实现
python实现非线性优化算法
08-15
使用Python语言实现四种非线性优化算法,并探究学习率对其优化效果的影响。
python利用scipyoptimize实现非线性最小二乘算法进行球心拟合
09-07
python利用scipyoptimize实现非线性最小二乘算法进行球心拟合
python scipy.optimize
06-28
Python scipy.optimizePython科学计算库scipy中的一个模块,它提供...scipy.optimize模块还支持并行计算和大规模优化问题的求解。无论是初学者还是专业人士,都可以使用Python scipy.optimize来解决他们的优化问题。
python科学计算最佳实践_python科学计算之scipy——optimize用法
weixin_39673293的博客
11-28 326
写在前面SciPyoptimize模块提供了许多数值优化算法,下面对其中的一些记录。非线性方程组求解SciPy中对非线性方程组求解是fslove()函数,它的调用形式一般为fslove(fun, x0),fun是计算非线性方程组的误差函数,它需要一个参数x,fun依靠x来计算线性方程组的每个方程的值(或者叫误差),x0是x的一个初始值。"""计算非线性方程组:5x1+3 = 04x0^2-2si...
python求非线性优化问题_python求非线性优化问题_用python优化非线性函数
weixin_39957805的博客
02-21 457
我在python中有一个函数,如下所示:import numpy as npdef fun(Gp,Ra,Mr,Pot,Sp,Mc,Keep):if(Keep==True):return(Pot*np.tanh((Gp+Ra+Mr+ Mc)*Sp ))假设以下数据:^{2}$我总共有100个GP,我想适当地分配它们为了最大化objective_function:在全部约束下,3个元素正根据this的...
Scipy教程 - 优化和拟合库scipy.optimize
热门推荐
皮皮blog
04-09 9万+
http://blog.csdn.net/pipisorry/article/details/51106570 最优化函数库Optimization 优化是找到最小值或等式的数值解的问题。scipy.optimization子模块提供了函数最小值(标量或多维)、曲线拟合和寻找等式的根的有用算法。 from scipy import optimize 皮皮blog
写文章

热门文章

  • Gunicorn配置详解 10970
  • 【Nas/群晖/服务器】FRP内网穿透实现外网访问 9169
  • 【MySQL入门】(一)安装与配置MySQL 5229
  • 3种谷歌多语言翻译接口的调用方法(Python) 4051
  • python scipy.optimize 非线性规划 求解局部最优和全局最优 3978

分类专栏

  • Python 12篇
  • 地图 3篇
  • NoSQL 1篇
  • Leetcode 1篇
  • MySQL 5篇
  • 服务器 2篇

最新评论

  • Tkinter滚动Frame封装类(支持滚轮),复制可用

    DooDoo~: 不会呀,你看动图效果,鼠标不需要悬停在滚动条上,但是鼠标应该要在ScrollableFrame区域内。

  • Tkinter滚动Frame封装类(支持滚轮),复制可用

    ゞωáиɡホ辛鴻ゾ: 鼠标必须悬停在滚动条上滚轮才起作用,是怎么回事呢

  • Python通过高德API获取全国省市区行政区边界

    DooDoo~: 你需要执行到df2才会有下属区的polyline,因为高德的API只会返回当前查询对象的polyline和它的下属行政区划分,但是不会返回下级的polyline,所以需要再对df进行一次search来获取它下级的所有polyline。

  • Python通过高德API获取全国省市区行政区边界

    我不是豪人: 你好,我想问一下,我将中华人民共和国改为了北京市,df里的polyline只有北京市有,下面划分北京城区、朝阳、海淀polyline都没有值是什么原因

  • Python通过高德API获取全国省市区行政区边界

    DooDoo~: 可以参考我的另一篇博客哈~

大家在看

  • 基于django+vue慧园后勤管理系统【开题报告+程序+论文】-计算机毕设
  • 秋招面试Java八股文总结
  • 数据结构与算法——初识
  • Java程序中的API数据接口:连接数据的桥梁
  • 解决Springboot中注入RedisTemplate的Bean对象注入失败的问题

最新文章

  • Python通过OSM获取全国屋顶数据(经纬度、轮廓、面积、地址等)
  • Python通过高德API获取全国省市区行政区边界
  • Python通过Tesseract实现OCR
2023年8篇
2022年15篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王徐州网站建设优化宣传无锡优化网站公司电话站内网站优化有哪些问题需重视松江区搜索引擎网站优化方案莆田企业网站优化武汉网站优化一年多少钱教育行业网站优化好处怎么上传网站优化无锡网无锡网站建设站优化北京搜索引擎网站优化河北网站优化托管收费沂水同城网沂水网站优化seo网站关键词优化是什么刷关键词排名优化网站徐州网站搜索引擎优化贵阳做网站优化正规网站优化哪家好美容整容网站怎么优化铜山区网站推广优化价格高埗服装网站优化好不好密山网站关键字优化樟木头网站优化方案昆明网站推广优化公司房地产网站优化技巧企业如何优化网站平台珠海网站优化搜索庐江网站首页优化哪里有企业如何优化网站优化网站价目表网站的推广和优化方案怎么写香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化