scipy.optimize.linprog函数参数最全详解
scipy.optimize.linprog函数
- 1、线性规划概念
- 2、输入格式
- 3、参数设置:
- 4、输出格式:
- 5、例子
- 6、若有更多Python的问题,请挪步“佐佑思维”公众号→回复免费
- 7、 ★佐佑思维二维码★
1、线性规划概念
定义:在线性等式和不等式约束下,最小化线性目标函数。
minxcTxs.t.Aubx≤bub,Aeqx=beq,l≤x≤u\underset{x}{min}\ c^{T}x\\ s.t. \ A_{ub}x \le b_{ub},\\ A_{eq}x = b_{eq},\\ l \le x \le u xmin cTxs.t. Aubx≤bub,Aeqx=beq,l≤x≤u
其中 x 是决策变量的向量;c、bub、beq、l、u是向量;和AubA_{ub}Aub、AeqA_{eq}Aeq是矩阵。
2、输入格式
scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None,method='interior-point',callback=None,options=None,x0=None)
3、参数设置:
c:线性目标函数的系数
- 数据类型:一维数组
A_ub(可选参数):不等式约束矩阵,AubA_{ub}Aub的每一行指定xxx上的线性不等式约束的系数
- 数据类型:二维数组
b_ub(可选参数):不等式约束向量,每个元素代表AubxA_{ub}xAubx的上限
- 数据类型:一维数组
A_eq(可选参数):等式约束矩阵,AeqA_eqAeq的每一行指定xxx上的线性等式约束的系数
- 数据类型:二维数组
b_eq(可选参数):等式约束向量,AeqxA_{eq}xAeqx的每个元素必须等于beqb_{eq}beq的对应元素
- 数据类型:一维数组
bounds(可选参数):定义决策变量xxx的最小值和最大值
- 数据类型:
(min, max)
序列对 - None:使用None表示没有界限,默认情况下,界限为(0,None)(所有决策变量均为非负数)
- 如果提供一个元组
(min, max)
,则最小值和最大值将用作所有决策变量的界限。
- 数据类型:
method(可选参数):算法,
{‘interior-point’, ‘revised simplex’, ‘simplex’}
以上三种算法可选- 数据类型:输入如上三种字符串
callback(可选参数):调用回调函数,我的理解是等待被调用的参数 ,如果提供了回调函数,则算法的每次迭代将至少调用一次。回调函数必须接受单个
scipy.optimize.OptimizeResult
由以下字段组成:- x:当前解向量
- 数据类型:一维数组
- fun:目标函数的当前值(cTxc^TxcTx)
- 数据类型:浮点数
- success:当算法成功完成时为
True
- 数据类型:布尔值
- slack:不等式约束的松弛值(名义上为正值)bub−Aubxb_{ub}-A_{ub}xbub−Aubx
- 数据类型:一维数组
- con:等式约束的残差(名义上为零)beq−Aeqxb_{eq}-A_{eq}xbeq−Aeqx
- 数据类型:一维数组
- phase:正在执行算法的阶段
- 数据类型:整数
status:表示算法退出状态的整数
数据类型:整数
0
: 优化按名义进行1
: 达到了迭代限制2
: 问题似乎不可行3
: 问题似乎是不收敛4
: 遇到数值困难
nit:当前的迭代次数
- 数据类型:整数
message:算法状态的字符串描述符
- 数据类型:字符串
- x:当前解向量
options(可选参数):求解器选项字典,所有方法都接受以下选项:
数据类型:字典
maxiter
:整数,要执行的最大迭代次数disp
:布尔值,设置为True
以打印收敛消息,默认值:False
autoscale
:布尔值,设置为True
以自动执行平衡,如果约束中的数值分开几个数量级,请考虑使用此选项,默认值:False
presolve
:布尔值,设置为False
可禁用自动预解析,默认值:True
rr
:布尔值,设置为False
可禁用自动移除冗余,默认值:True
x0(可选参数):猜测决策变量的值,将通过优化算法进行优化。当前仅由’ revised simplex’ 方法使用此参数,并且仅当 x0 表示基本可行的解决方案时才可以使用此参数。
- 数据类型:一维数组
4、输出格式:
x:在满足约束的情况下将目标函数最小化的决策变量的值
- 数据类型:一维数组
fun:目标函数的最佳值(cTxc^TxcTx)
- 数据类型:浮点数
slack:不等式约束的松弛值(名义上为正值)bub−Aubxb_{ub}-A_{ub}xbub−Aubx
- 数据类型:一维数组
con:等式约束的残差(名义上为零)beq−Aeqxb_{eq}-A_{eq}xbeq−Aeqx
- 数据类型:一维数组
success:当算法成功找到最佳解决方案时为
True
- 数据类型:布尔值
status:表示算法退出状态的整数
数据类型:整数
0
: 优化成功终止1
: 达到了迭代限制2
: 问题似乎不可行3
: 问题似乎是不收敛4
: 遇到数值困难
nit:在所有阶段中执行的迭代总数
- 数据类型:整数
message:算法退出状态的字符串描述符
- 数据类型:字符串
5、例子
import scipy
from scipy import optimize
import numpy
c = numpy.array([2,3]) #最值等式未知数系数矩阵
A_ub = numpy.array([[-1,1],[2,-2]]) #<=不等式左侧未知数系数矩阵
B_ub = numpy.array([1,1]) #<=不等式右侧常数矩阵
#A_eq = numpy.array() 等式左侧未知数系数矩阵
#B_eq = numpy.array() 等式右侧常数矩阵
x = (None,1) #未知数取值范围
y = (None,None) #未知数取值范围
res = scipy.optimize.linprog(c,A_ub,B_ub,bounds = (x,y)) #默认求解最小值,求解最大值使用-c并取结果相反数
print(res)
#结果:无解情况con: array([], dtype=float64)fun: -8782091626.64441message: 'The algorithm terminated successfully and determined that the problem is unbounded.'#算法成功终止,确定问题是无界的nit: 3slack: array([0.89897776, 1.20204449])status: 3success: Falsex: array([-1.75641833e+09, -1.75641833e+09])
可以修改问题参数,从而达到有解,欢迎大家尝试!
6、若有更多Python的问题,请挪步“佐佑思维”公众号→回复免费
7、 ★佐佑思维二维码★
scipy.optimize.linprog函数参数最全详解相关推荐
- python scatter参数详解_Python中scatter函数参数及用法详解
最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...
- python scatter参数详解_Python 中 scatter 函数参数及用法详解
Python 中 scatter 函数参数及用法详解 Python 中 scatter 函数参数及用法详解 这里有新鲜出炉的 Python 教程, 程序狗速度看过来! Python 编程语言 Pyth ...
- scipy.optimize.linprog()函数--求解线性规划问题
这里写目录标题 关于方程组的标准形式 参数 c A_ub b_ub A_eq b_eq bounds method callback options maxiter disp presolve 返回值 ...
- python中函数分为哪四类_Python函数参数分类原理详解
1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号,隔开 案列: # 利用函数的参数,定义一个可以完成任意两个数 ...
- javascript中函数参数是evt详解
一般情况下,在js中函数可能没有参数,也有特殊情况,举个例子: function toggleColor(evt){ if (vet){ var thisSquare = evt.target;} e ...
- matlab中scatter函数怎么用,Python中scatter函数参数及用法详解
最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...
- python scatter函数参数,Python中scatter函数参数及用法详解
最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...
- scatter python_Python中scatter函数参数及用法详解
最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...
- python模块:Scipy.optimize.linprog线性规划求解
目录 一.模块介绍 二.模块源分析与参数解释 三.实例求解 四.参考 一.模块介绍 1.1模块功能 Scipy.optimize是Scipy中一个用于解决数学模型中优化类模型的子包,该子包中又包含了多 ...
最新文章
- 简单动态启停图 js jquery css3
- 关卡设计快速入门P_4. 放置Actor
- 每日一皮:这年头没点绝活连洗车都不行...
- Anaconda :利用Anaconda Prompt (Anaconda3)建立、设计不同python版本及对应库函数环境之详细攻略
- 多种时间格式字符串转换为Date对象
- Python手写神经网络实现3层感知机
- nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
- Linux系统基础知识
- 【ZOJ 4070】Function and Function
- 51nod 1285山峰和分段
- Atitit java字符串模板渲染总结 目录 1. 总结:指标	1 1.1. 支持中文变量 提升可读性	1 1.2. 变量placeholder简单性,,velo可以直接¥前导简单。。Free的
- 实验室信息管理系统是基础软件吗
- 清理c盘、c盘哪些文件可以删、图形显示文件大小软件
- 浏览器打开就是360导航(浏览器被360劫持)
- gps测试软件搜索不到星,手机搜不到星 搜星慢终极解决方法!
- debian7 修改系统时间
- 【福利】百度云2018最新限速破解软件
- jQuery教程_编程入门自学教程_菜鸟教程-免费教程分享
- 支付宝小程序分享转发
- 90后技术宅研发Magi一夜爆红,新一代知识化结构搜索新时代来了?