0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

scipy.optimize.linprog函数参数最全详解

微云疏影 来源:佐佑思维 作者:佐佑思维 2022-08-09 10:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 线性规划概念

定义:在线性等式和不等式约束下,最小化线性目标函数。

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(可选参数):不等式约束矩阵, A_{ub} 的每一行指定 x 上的线性不等式约束的系数;数据类型:二维数组

b_ub(可选参数):不等式约束向量,每个元素代表 A_{ub}x 的上限;数据类型:一维数组

A_eq(可选参数):等式约束矩阵, A_{eq}的每一行指定 x 上的线性等式约束的系数;数据类型:二维数组

b_eq(可选参数):等式约束向量,A_{eq}x 的每个元素必须等于 b_{eq} 的对应元素;数据类型:一维数组

bounds(可选参数):定义决策变量 x 的最小值和最大值;数据类型:(min, max)序列对

None:使用None表示没有界限,默认情况下,界限为(0,None)(所有决策变量均为非负数)

如果提供一个元组(min, max),则最小值和最大值将用作所有决策变量的界限。

method(可选参数):算法,{‘interior-point’, ‘revised simplex’, ‘simplex’}以上三种算法可选;数据类型:输入如上三种字符串

callback(可选参数):调用回调函数,我的理解是等待被调用的参数 ,如果提供了回调函数,则算法的每次迭代将至少调用一次。回调函数必须接受单个 scipy.optimize.OptimizeResult由以下字段组成:

x:当前解向量; 数据类型:一维数组

fun:目标函数的当前值(c^Tx); 数据类型:浮点数

success:当算法成功完成时为 True;数据类型:布尔值

slack:不等式约束的松弛值(名义上为正值) b_{ub} ? A_{ub}x; 数据类型:一维数组

con:等式约束的残差(名义上为零) b_{eq} ? A_{eq}x;数据类型:一维数组

phase:正在执行算法的阶段; 数据类型:整数

status:表示算法退出状态的整数; 数据类型:整数

0 : 优化按名义进行

1 : 达到了迭代限制

2 : 问题似乎不可行

3 : 问题似乎是不收敛

4 : 遇到数值困难

nit:当前的迭代次数; 数据类型:整数

message:算法状态的字符串描述符; 数据类型:字符串

options(可选参数)——求解器选项字典,所有方法都接受以下选项:

数据类型:字典

maxiter:整数,要执行的最大迭代次数

disp:布尔值,设置为True以打印收敛消息,默认值:False

autoscale:布尔值,设置为True以自动执行平衡,如果约束中的数值分开几个数量级,请考虑使用此选项,默认值:False

presolve:布尔值,设置为False可禁用自动预解析,默认值:True

rr:布尔值,设置为False可禁用自动移除冗余,默认值:True

x0(可选参数):猜测决策变量的值,将通过优化算法进行优化。当前仅由’ revised simplex’ 方法使用此参数,并且仅当 x0 表示基本可行的解决方案时才可以使用此参数。 数据类型:一维数组

’‘’

4 输出格式

‘’‘

x:在满足约束的情况下将目标函数最小化的决策变量的值;数据类型:一维数组

fun:目标函数的最佳值(c^Tx);数据类型:浮点数

slack:不等式约束的松弛值(名义上为正值) b_{ub}-A_{ub}x;数据类型:一维数组

con:等式约束的残差(名义上为零)b_{eq}-A_{eq}x;数据类型:一维数组

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.64441

message: ‘The algorithm terminated successfully and determined that the problem is unbounded.’#算法成功终止,确定问题是无界的

nit: 3

slack: array([0.89897776, 1.20204449])

status: 3

success: False

x: array([-1.75641833e+09, -1.75641833e+09])

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4762

    浏览量

    97195
  • 矩阵
    +关注

    关注

    1

    文章

    441

    浏览量

    35828
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    14109
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Optimize 属性范例 (VB)

    Optimize 属性范例 (VB)本范例演示 Field 对象的动态 Optimize 属性。Pubs 数据库的 Authors 表的 Zip 字段未被索引。将 zip 字段的 Optimize
    发表于 01-08 10:23

    线性规划函数 linprog exitflag -4

    \private\lipsol at 697In linprog at 272In DEA_environment at 76 Exiting: cannot converge because
    发表于 09-07 06:45

    最全的晶体管参数查询软件

    本帖最后由 太子的空间 于 2016-11-29 21:07 编辑 最全的晶体管参数查询软件
    发表于 11-21 20:57

    最全的C语言库函数

    最全的C语言库函数,希望大家多多下载。
    发表于 04-01 02:24

    在 MaxCompute UDF 中运行 Scipy

    摘要: 新版 MaxCompute Isolation Session 支持 Python UDF。也就是说,Python UDF 中已经可以跑二进制包。刚才以 Scipy 为例踩了一下坑,把相关
    发表于 05-17 19:30

    在PyODPS DataFrame自定义函数中使用pandas、scipy和scikit-learn

    的,MaxCompute 的 Python 环境只包含了 numpy 这一个第三方包,用户常常问的问题是,如何在自定义函数里使用 pandas、scipy 或者 scikit-learn 这样的包含c
    发表于 05-17 19:48

    PICC库函数详解

    PICC库函数详解
    发表于 04-18 20:13 132次下载

    Android开发手册—API函数详解

    Android开发手册—API函数详解
    发表于 10-17 09:01 13次下载
    Android开发手册—API<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    基于Android开发手册—API函数详解

    基于Android开发手册—API函数详解
    发表于 10-24 09:06 18次下载
    基于Android开发手册—API<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    SCipy and NUMPY的电子书免费下载

    SciPy是面向数学、科学和工程的开源软件。SciPy库是为使用NumPy数组而构建的,它提供了许多用户友好且高效的数值例程。它们结合在一起很容易使用,但强大到足以被一些世界领先的科学家和工程师所依赖。
    发表于 01-02 08:00 7次下载

    Linux内核GPIO操作函数详解分析

    本文档的主要内容详细介绍的是Linux内核GPIO操作函数详解分析免费下载。
    发表于 01-22 16:58 28次下载

    Scipy-lecture-notes Python在科学计算的资料和指南

    scipy-lecture-notes.zip
    发表于 04-19 11:37 0次下载
    <b class='flag-5'>Scipy</b>-lecture-notes Python在科学计算的资料和指南

    scipy.optimize.linprog函数参数最全详解

     callback(可选参数):调用回调函数,我的理解是等待被调用的参数 ,如果提供了回调函数,则算法的每次迭代将至少调用一次。回调函数必须
    的头像 发表于 12-07 10:26 2286次阅读
    <b class='flag-5'>scipy.optimize.linprog</b><b class='flag-5'>函数</b><b class='flag-5'>参数</b><b class='flag-5'>最全</b><b class='flag-5'>详解</b>

    Scipy是什么?Scipy子模块有哪些呢?

    `Scipy`库是`Python`生态系统中一个隐藏的 **「高手」** ,实力强大,历史悠久,却不那么为人熟知。
    的头像 发表于 08-09 15:58 3533次阅读
    <b class='flag-5'>Scipy</b>是什么?<b class='flag-5'>Scipy</b>子模块有哪些呢?

    STM32库函数SystemInit()详解

    STM32库函数SystemInit()详解
    的头像 发表于 09-18 15:45 5649次阅读
    STM32库<b class='flag-5'>函数</b>SystemInit()<b class='flag-5'>详解</b>