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

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

3天内不再提示

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

微云疏影 来源:佐佑思维 作者:佐佑思维 2022-12-07 10:26 次阅读

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

    文章

    4600

    浏览量

    92646
  • 函数
    +关注

    关注

    3

    文章

    4307

    浏览量

    62432
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28329
收藏 人收藏

    评论

    相关推荐

    SUMIF函数使用教程

    SUMIF函数是Excel中非常实用的函数之一,能够根据指定条件对数据进行筛选和求和操作。以下是对SUMIF函数使用方法的详细教程: 一、基本语法 SUMIF函数的基本语法为: =SU
    的头像 发表于 10-30 09:50 205次阅读

    工商业储能选型指南及参数详解

    行业普遍认为2023年是工商储元年。如今,工商储赛道仍然持续升温中,无数新玩家涌入。但令人眼花缭乱的选型配置成为不少玩家的第一道门槛,今天小固就手把手带你进行工商储选型,为你进行核心参数详解
    的头像 发表于 08-05 14:52 2442次阅读
    工商业储能选型指南及<b class='flag-5'>参数</b><b class='flag-5'>详解</b>

    python函数的万能参数

    我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数
    的头像 发表于 07-17 14:56 305次阅读
    python<b class='flag-5'>函数</b>的万能<b class='flag-5'>参数</b>

    MATLAB信号处理常用函数详解

    MATLAB是一款功能强大的数学软件,尤其在信号处理领域,它提供了众多的函数和工具箱,使得信号的分析、处理、仿真变得简单而高效。本文将详细介绍MATLAB在信号处理中常用的函数,并通过具体示例来阐述其应用。
    的头像 发表于 05-17 14:31 1759次阅读

    储能电池参数详解

    储能电池参数详解-古瑞瓦特 电池是电化学储能系统中最重要的部分之一,随着电池成本的降低、电池能量密度、安全性和寿命的提升,储能也迎来了大规模的应用,本文带大家了解储能电池的几个重要参数。 01
    的头像 发表于 04-23 18:44 877次阅读
    储能电池<b class='flag-5'>参数</b><b class='flag-5'>详解</b>

    C语言函数指针六大应用场景详解

    函数指针是一种非常强大的编程工具,它可以让我们以更加灵活的方式编写程序。在本文中,我们将介绍 6 个函数指针的高级应用场景,并贴出相应的代码案例和解释。
    的头像 发表于 04-23 18:19 844次阅读

    Go语言中的函数、方法与接口详解

    Go 没有类,不过可以为结构体类型定义方法。方法就是一类带特殊的接收者参数函数。方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。(非结构体类型也可以定义方法)
    的头像 发表于 04-23 16:21 753次阅读

    stm32g030优化等级高于optimize for debug时,main函数里的while()循环出现if()内语句不能正常执行的原因?

    芯片使用G030,优化等级高于optimize for debug时,就会出现 main函数里的while()循环出现if()内语句不能正常执行的问题
    发表于 03-26 06:24

    回调函数(callback)是什么?回调函数的实现方法

    回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在被调用函数执行完毕后被调用。回调函数
    发表于 03-12 11:46 2715次阅读

    浅谈C语言中的函数定义

    如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。 形式参数就像
    发表于 03-11 10:09 334次阅读

    函数指针与回调函数的应用实例

    通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数函数指针可以像一般函数一样,用于调用函数、传递
    的头像 发表于 03-07 11:13 375次阅读
    <b class='flag-5'>函数</b>指针与回调<b class='flag-5'>函数</b>的应用实例

    python中open函数的用法详解

    python中open函数的用法详解 Python中的open()函数用于打开文件。它接受文件名和模式作为参数,并返回一个文件对象。文件对象可用于读取、写入和管理文件。 open()
    的头像 发表于 01-30 15:31 1952次阅读

    XLOOKUP函数怎么使用

    的语法和参数 XLOOKUP函数的语法如下: =XLOOKUP(要查找的值,查找范围,返回范围,[未找到值的返回结果],[查找方式],[搜索模式]) 参数说明如下: 要查找的值:表示你需要查找的值,在查找范围中要匹配的值。 查找
    的头像 发表于 12-01 10:54 2159次阅读

    vlookup函数的四个参数含义

    VLOOKUP函数是一种用于在Excel中查找和提取数据的功能强大的函数。它的四个参数含义分别是:查找值、查找范围、返回列索引和区域或表标志。 首先,让我们来详细了解这四个参数的含义,
    的头像 发表于 12-01 09:57 6964次阅读

    sumif函数的使用技巧

    的范围,criteria表示要判断的条件,sum_range为可选参数,表示要进行求和操作的范围。 当我们使用SUMIF函数
    的头像 发表于 11-30 16:30 1249次阅读