pulp.apis
求解器接口
- class pulp.apis.CHOCO_CMD(path=None, keepFiles=False, mip=True, msg=True, options=None, timeLimit=None)[源代码]
基类:
LpSolver_CMD
CHOCO_CMD 求解器
- 参数:
- name = 'CHOCO_CMD'
- class pulp.apis.COINMP_DLL(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
COIN_MP LP MIP 求解器(通过 DLL 或 linux so)
- 参数:
- name = 'COINMP_DLL'
- class pulp.apis.COIN_CMD(mip=True, msg=True, timeLimit=None, gapRel=None, gapAbs=None, presolve=None, cuts=None, strong=None, options=None, warmStart=False, keepFiles=False, path=None, threads=None, logPath=None, timeMode='elapsed', maxNodes=None)[源代码]
基类:
LpSolver_CMD
COIN CLP/CBC LP 求解器现在仅使用 cbc
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
threads (int) – 设置最大线程数
options (list) – 传递给求解器的附加选项列表
warmStart (bool) – 如果为真,求解器将使用变量的当前值作为起点。
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
logPath (str) – 日志文件的路径
presolve (bool) – 如果为真,则添加预解。
cuts (bool) – 如果为真,则在探测时添加针对背包问题的 Gomory 割。
strong (bool) – 如果为真,则添加强调
timeMode (str) – “elapsed”: 计算墙钟时间到时间限制;”cpu”: 计算CPU时间
maxNodes (int) – 分支过程中的最大节点数。达到此数目时停止求解。
- name = 'COIN_CMD'
- class pulp.apis.COPT(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
通过其Python接口的COPT优化器
COPT 变量在求解后可以在 var.solverVar 中获取,约束在 constraint.solverConstraint 中,模型在 prob.solverModel 中。
- 参数:
- name = 'COPT'
- class pulp.apis.COPT_CMD(path=None, keepFiles=0, mip=True, msg=True, mip_start=False, warmStart=False, logfile=None, **params)[源代码]
基类:
LpSolver_CMD
COPT 命令行求解器
初始化命令行求解器
- actualSolve(lp)[源代码]
解决一个形式良好的线性规划问题
此函数借用了 CPLEX_CMD.actualSolve 和 GUROBI_CMD.actualSolve 的实现,并进行了一些修改。
- name = 'COPT_CMD'
- class pulp.apis.COPT_DLL(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
COPT 动态库求解器
- 参数:
- err = TypeError('expected str, bytes or os.PathLike object, not NoneType')
- name = 'COPT_DLL'
- class pulp.apis.CPLEX_CMD(mip=True, msg=True, timeLimit=None, gapRel=None, gapAbs=None, options=None, warmStart=False, keepFiles=False, path=None, threads=None, logPath=None, maxMemory=None, maxNodes=None)[源代码]
基类:
LpSolver_CMD
CPLEX LP 求解器
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
threads (int) – 设置最大线程数
options (list) – 传递给求解器的附加选项列表
warmStart (bool) – 如果为真,求解器将使用变量的当前值作为起点。
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
logPath (str) – 日志文件的路径
maxMemory (float) – 在求解过程中使用的最大内存。达到此限制时停止求解。
maxNodes (int) – 分支过程中的最大节点数。达到此数目时停止求解。
- name = 'CPLEX_CMD'
- class pulp.apis.CPLEX_PY(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
CPLEX LP/MIP 求解器(通过 Python 绑定)
此求解器封装了 CPLEX 的 Python API。它已经针对 CPLEX 12.3 进行了测试。对于此求解器中未封装的 API 函数,请使用基础 CPLEX 类。
- 参数:
- err = ModuleNotFoundError("No module named 'cplex'")
- name = 'CPLEX_PY'
- class pulp.apis.FSCIP_CMD(path=None, mip=True, keepFiles=False, msg=True, options=None, timeLimit=None, gapRel=None, gapAbs=None, maxNodes=None, threads=None, logPath=None)[源代码]
基类:
LpSolver_CMD
SCIP 优化求解器的多线程 FiberSCIP 版本
- 参数:
msg (bool) – 如果为 False,则不显示日志
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
options (list) – 传递给求解器的附加选项列表
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
maxNodes (int) – 分支过程中的最大节点数。达到此数目时停止求解。
threads (int) – 设置最大线程数
logPath (str) – 日志文件的路径
- FSCIP_STATUSES = {'Final Solution': 1, 'No Solution': 0}
- NO_SOLUTION_STATUSES = {-2, -1, 0}
- name = 'FSCIP_CMD'
- class pulp.apis.GLPK_CMD(path=None, keepFiles=False, mip=True, msg=True, options=None, timeLimit=None)[源代码]
基类:
LpSolver_CMD
GLPK LP 求解器
- 参数:
- name = 'GLPK_CMD'
- class pulp.apis.GUROBI(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
Gurobi LP/MIP 求解器(通过其 Python 接口)
Gurobi 变量在求解后可通过 var.solverVar 访问,约束在 constraint.solverConstraint 中,模型在 prob.solverModel 中。
- 参数:
- env = None
- name = 'GUROBI'
- class pulp.apis.GUROBI_CMD(mip=True, msg=True, timeLimit=None, gapRel=None, gapAbs=None, options=None, warmStart=False, keepFiles=False, path=None, threads=None, logPath=None, mip_start=False)[源代码]
基类:
LpSolver_CMD
GUROBI_CMD 求解器
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
threads (int) – 设置最大线程数
options (list) – 传递给求解器的附加选项列表
warmStart (bool) – 如果为真,求解器将使用变量的当前值作为起点。
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
logPath (str) – 日志文件的路径
- name = 'GUROBI_CMD'
- class pulp.apis.HiGHS(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
- 参数:
- name = 'HiGHS'
- class pulp.apis.HiGHS_CMD(path=None, keepFiles=False, mip=True, msg=True, options=None, timeLimit=None, gapRel=None, gapAbs=None, threads=None, logPath=None, warmStart=False)[源代码]
基类:
LpSolver_CMD
HiGHS_CMD 求解器
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径(您可以从 https://github.com/JuliaBinaryWrappers/HiGHS_jll.jl/releases 获取适用于您平台的二进制文件,或者从源代码编译 - https://highs.dev)
threads (int) – 设置最大线程数
logPath (str) – 日志文件的路径
warmStart (bool) – 如果为真,求解器将使用变量的当前值作为起点。
- class pulp.apis.LpSolver(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
object
一个通用的线性规划求解器
- 参数:
- getCplexStyleArrays(lp, senseDict=None, LpVarCategories=None, LpObjSenses=None, infBound=1e+20)[源代码]
返回适合传递给 cdll Cplex 或其他类似求解器的数组
版权所有 (c) Stuart Mitchell 2007
- name = 'LpSolver'
- to_dict()
- to_json(filename, *args, **kwargs)
- class pulp.apis.LpSolver_CMD(path=None, keepFiles=False, *args, **kwargs)[源代码]
基类:
LpSolver
一个通用的命令行线性规划求解器
- 参数:
- name = 'LpSolver_CMD'
- class pulp.apis.MIPCL_CMD(path=None, keepFiles=False, mip=True, msg=True, options=None, timeLimit=None)[源代码]
基类:
LpSolver_CMD
MIPCL_CMD 求解器
- 参数:
- name = 'MIPCL_CMD'
- class pulp.apis.MOSEK(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
Mosek lp 和 mip 求解器(通过 Mosek 优化器 API)。
- 参数:
- name = 'MOSEK'
- class pulp.apis.PULP_CBC_CMD(mip=True, msg=True, timeLimit=None, gapRel=None, gapAbs=None, presolve=None, cuts=None, strong=None, options=None, warmStart=False, keepFiles=False, path=None, threads=None, logPath=None, timeMode='elapsed', maxNodes=None)[源代码]
基类:
COIN_CMD
此求解器使用随包提供的预编译版 cbc
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
threads (int) – 设置最大线程数
options (list) – 传递给求解器的附加选项列表
warmStart (bool) – 如果为真,求解器将使用变量的当前值作为起点。
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
logPath (str) – 日志文件的路径
presolve (bool) – 如果为真,则添加预解。
cuts (bool) – 如果为真,则在探测时添加针对背包问题的 Gomory 割。
strong (bool) – 如果为真,则添加强调
timeMode (str) – “elapsed”: 计算墙钟时间到时间限制;”cpu”: 计算CPU时间
maxNodes (int) – 分支过程中的最大节点数。达到此数目时停止求解。
- name = 'PULP_CBC_CMD'
- pulp_cbc_path = '/Users/cw/baidu/code/fin_tool/github/pulp/pulp/solverdir/cbc/osx/64/cbc'
- class pulp.apis.PYGLPK(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
glpk LP/MIP 求解器(通过其 Python 接口)
版权所有 Christophe-Marie Duquesne 2012
glpk 变量在求解后可在 var.solverVar 中获取。glpk 约束可在 constraint.solverConstraint 中获取。模型在 prob.solverModel 中。
- 参数:
- name = 'PYGLPK'
- pulp.apis.Parser
ConfigParser
的别名
- class pulp.apis.SCIP_CMD(path=None, mip=True, keepFiles=False, msg=True, options=None, timeLimit=None, gapRel=None, gapAbs=None, maxNodes=None, logPath=None, threads=None)[源代码]
基类:
LpSolver_CMD
SCIP 优化求解器
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
options (list) – 传递给求解器的附加选项列表
keepFiles (bool) – 如果为真,文件将保存在当前目录中,并且在求解后不会被删除
path (str) – 求解器二进制文件的路径
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
gapAbs (float) – 求解器的绝对间隙容差以停止
maxNodes (int) – 分支过程中的最大节点数。达到此数目时停止求解。
threads (int) – 设置最大线程数
logPath (str) – 日志文件的路径
- NO_SOLUTION_STATUSES = {-2, -1, 0}
- SCIP_STATUSES = {'gap limit reached': 1, 'infeasible': -1, 'infeasible or unbounded': 0, 'memory limit reached': 0, 'node limit reached': 0, 'optimal solution found': 1, 'restart limit reached': 0, 'solution improvement limit reached': 0, 'solution limit reached': 0, 'stall node limit reached': 0, 'time limit reached': 0, 'total node limit reached': 0, 'unbounded': -2, 'unknown': -3, 'user interrupt': 0}
- name = 'SCIP_CMD'
- class pulp.apis.SCIP_PY(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
SCIP 优化套件(通过其 Python 接口)
在调用solve后,SCIP的内部结构可以通过以下方式访问: - 每个变量在 variable.solverVar 中 - 每个约束在 constraint.solverConstraint 中 - 模型在 problem.solverModel 中
- 参数:
- name = 'SCIP_PY'
- class pulp.apis.XPRESS(mip=True, msg=True, timeLimit=None, gapRel=None, options=None, keepFiles=False, path=None, heurFreq=None, heurStra=None, coverCuts=None, preSolve=None, warmStart=False)[源代码]
基类:
LpSolver_CMD
使用子进程中的 XPRESS 命令行工具的 XPRESS LP 求解器
初始化 Xpress 求解器。
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
heurFreq – 启发式方法在树搜索中使用的频率
heurStra – 启发式策略
coverCuts – 顶部节点提升覆盖不等式的轮数
preSolve – 是否应在主算法之前执行预解
options – 添加更多选项,例如 options = [“NODESELECTION=1”, “HEURDEPTH=5”] 更多关于 Xpress 选项和控制参数的信息请参见 https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter7.html
warmStart (bool) – 如果为真,则使用当前变量值作为起点
- name = 'XPRESS'
- class pulp.apis.XPRESS_PY(mip=True, msg=True, timeLimit=None, gapRel=None, heurFreq=None, heurStra=None, coverCuts=None, preSolve=None, warmStart=None, export=None, options=None)[源代码]
基类:
LpSolver
使用 XPRESS Python API 的 XPRESS LP 求解器
初始化 Xpress 求解器。
- 参数:
mip (bool) – 如果为 False,即使存在整数变量,也假设为 LP。
msg (bool) – 如果为 False,则不显示日志
timeLimit (float) – 求解器的最大时间(以秒为单位)
gapRel (float) – 求解器的相对间隙容差以停止(以分数表示)
heurFreq – 启发式方法在树搜索中使用的频率
heurStra – 启发式策略
coverCuts – 顶部节点提升覆盖不等式的轮数
preSolve – 是否应在主算法之前执行预解
warmStart (bool) – 如果设置,则使用当前变量值作为热启动
export (string) – 如果设置,模型将在求解前导出到此文件
options – 添加更多选项。这是一个列表,其元素要么是 (名称, 值) 对,要么是字符串 “名称=值”。更多关于 Xpress 选项和控制参数的信息,请参见 https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter7.html
- callSolver(lp, prepare=None)[源代码]
从 actualSolve() 或 actualResolve() 执行实际求解。
- 参数:
prepare – 一个以 lp 为参数的函数,允许在低级求解开始之前对 lp.solverModel 进行最后的调整。
- name = 'XPRESS_PY'
- class pulp.apis.YAPOSIB(mip=True, msg=True, options=None, timeLimit=None, *args, **kwargs)[源代码]
基类:
LpSolver
COIN OSI (通过其Python接口)
版权所有 Christophe-Marie Duquesne 2012
yaposib 变量在求解后可在 var.solverVar 中获取。yaposib 约束可在 constraint.solverConstraint 中获取。模型在 prob.solverModel 中。
- 参数:
- name = 'YAPOSIB'
- pulp.apis.byref(C instance[, offset=0]) byref-object
返回一个类似于指针的C实例,仅可用作函数参数
- pulp.apis.clock()
monotonic() -> float
单调时钟,不能倒退。
- pulp.apis.coptstr(x)
- pulp.apis.ctypesArrayFill(myList, type=<class 'ctypes.c_double'>)[源代码]
从Python列表类型创建一个ctypes的C数组,C数组的类型是
- pulp.apis.getSolverFromDict(data)[源代码]
从包含其数据的字典实例化一个求解器
- 参数:
data (dict) – 一个字典,至少包含一个“solver”键,其值为要创建的求解器的名称
- 返回:
类型为
LpSolver
的求解器- 抛出:
PulpSolverError – 如果字典中没有“solver”键
- 返回类型:
- pulp.apis.mktemp(suffix='', prefix='tmp', dir=None)[源代码]
用户可调用的函数,用于返回一个唯一的临时文件名。文件不会被创建。
参数类似于 mkstemp,除了不接受 ‘text’ 参数,并且不支持 suffix=None、prefix=None 和字节文件名。
此函数不安全,不应使用。文件名可能指向某个时间点不存在的文件,但当你准备创建它时,可能已经有人抢先一步了。
- pulp.apis.to_string(_obj)