SCIP求解速度加速

背景

实际使用中遇到scip求解速度慢,需要加速或者牺牲一定的精度换取时间。

方法

1、Gap 参数

SCIP_PARAM_LIMITS/GAPTOL: 这个参数用于控制最优解的可接受程度,通常可以设置为一个小的正数,例如 0.01,表示当最优解与最优界限的差距小于 1% 时,求解可以终止。

复制代码
model.setRealParam("limits/gap", 0.01)  # 设置优化求解的最大间隙

是否有效:有

2、时间限制:

SCIP_PARAM_TIMING/CLOCKTYPE: 这个参数用于选择 SCIP 在求解时使用的时钟类型,通常可以设置为 2,表示使用墙上时钟。通过设置时间限制,你可以强制 SCIP 在一定时间内终止求解,这对于控制求解时间很有用。

复制代码
model.setIntParam("timing/clocktype", 2)  # 使用墙上时钟
model.setRealParam("limits/time", 60)  # 设置求解时间限制为 3600 秒

是否有效:有

3、线程数:

SCIP_PARAM_THREADS: 这个参数用于设置 SCIP 使用的线程数。通过增加线程数,可以加速求解过程,但需要考虑计算机硬件的限制。

复制代码
model.setIntParam("lp/threads", 4)  # 设置线性规划求解的线程数

是否有效:有

4、启用/禁用特定求解方法:

SCIP_PARAM_PRESOL/PRELINEAR: 这个参数可以用于启用或禁用线性预处理,根据问题的特性,可能会影响求解速度。

复制代码
# 启用线性预处理
#model.setIntParam("presol/presolving", 1)

是否有效:待确认

5、启发式方法

SCIP_PARAM_HEURISTICS/USERRULES: 这个参数可以用于启用或禁用用户定义的启发式规则,你可以根据问题来选择是否启用特定的启发式方法。

复制代码
#model.setBoolParam("separating/cuts", True)  # 启用切平面生成

是否有效:待确认

6、快速混合整数规划

SCIP_PARAM_FASTMIP: 这个参数可以用于启用或禁用快速混合整数规划(Faster MIP)方法,这是一种用于加速 MIP 求解的技术。

复制代码
# 启用快速混合整数规划方法
model.setIntParam("misc/fastmip", 1)

7、起始解

SCIP_PARAM_STARTSOLUTION: 如果你有一个好的初始解,可以将其设置为 SCIP 的起始解。

参考

python调用SCIP求解p-center和p-median选址问题_南军Opt的博客-CSDN博客

开源求解器SCIP的python接口学习手册

干货 | 嘿,双11快递,这里有份数学规划求解器SCIP超详细的使用教程,请你收下 - 知乎规划求解Solver: 三种求解方法的应用(原创) - 知乎

SCIP与Python------优秀的数学建模解决方案_笔记大全_设计学院

相关推荐
怕浪猫1 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
高洁012 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
无线通信科研笔记2 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
朝朝辞暮i2 小时前
VLA 系统学习第 1 课:VLA 到底在干什么?
人工智能·python·计算机视觉·vla
2601_962885723 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
北冥有鱼被烹3 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python
caoerzhong3 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律4 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
databook4 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
北冥有鱼被烹6 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python