我正在尝试解决整数编程问题.我试过使用SCIP和LPSolve
例如,给定A和B的最终值,我想在以下C#代码中求解valA:
Int32 a = 0, b = 0;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
// a == -86561, b == -32299
Run Code Online (Sandbox Code Playgroud)
我以lp格式实现了这个整数程序(截断分区导致一些复杂化):
min: ;
+valA >= 0;
+valA < 92;
remAA_sign >= 0;
remAA_sign <= 1;
remAA <= 2;
remAA >= -2;
remAA +2 remAA_sign >= …Run Code Online (Sandbox Code Playgroud) mathematical-optimization cplex scip gurobi integer-programming
在 SCIP 参数列表中,我看到三种类型的线程使用引用:
lp/threads(根据这个问题,用于求解LP的线程在使用SoPlex时并不重要)。
parallel/{min, max}threads(并行求解期间的线程数)。
concurrent/*(与并发模式下使用线程相关的参数)。
我的问题是:使用默认安装时 SCIP 中如何使用线程?这些参数仅与并发求解器parallel/{min, max}threads相关吗?如果我不打开并发求解器,SCIP 是否会使用可用线程来并行求解分支定界子问题?
提前致谢!
我是LP的新手,并且只PuLP在Python中使用过.
为什么SCIP 3.2.1 - CPLEX 12.63和之间存在速度差异CPLEX 12.6.3?SCIP是否仍然使用CPLEX进行求解?
为什么有人将SCIP与CPLEX求解器一起使用,而不是直接使用CPLEX?
我不知道如何设置 MIP 间隙阈值,以便当原始解和对偶解之间的相对差异在某个值内时求解器将终止。我正在使用 PySCIPOpt 与 SCIP 交互。
我确信有一个简单的方法(例如,如果我使用 Gurobi 的 python 接口m.Params.MIPGap = x,它m就是模型实例在哪里)。
任何帮助是极大的赞赏!
我有一个关于 SCIP 的一般性问题。我需要使用 SCIP 作为我的问题的分支和价格框架,我用 C++ 编码,所以我使用 VRP 示例作为模板。在某些情况下,代码在分数解处停止并将其作为最佳解返回,我认为出了问题,我是否必须设置一些参数才能告诉 SCIP 寻找整数解,或者我犯了一个错误,我相信它不应该停止,而是在分数解上分支,直到达到整数解(没有任何其他负降低成本列)。我也最优地解决了子问题!有什么评论吗?!
我正在尝试安装 Pyscipopt 来做作业。学校网站上有安装指南,问题是它不适用于我的笔记本电脑。我必须在 Anaconda Prompt 中编写“pip install pyscipopt”,但收到错误“pyscipopt 构建轮失败”。我不知道这意味着什么或如何解决这个问题,有人可以帮助我吗?
(base) C:\Users\claire>pip install pyscipopt
Collecting pyscipopt
Using cached https://files.pythonhosted.org/packages/a7/47/e3d5fcc37138c0eb9695d7c26e22b999c1274b06606db183c2aa36f98e5a/PySCIPOpt-2.2.0.tar.gz
Building wheels for collected packages: pyscipopt
Building wheel for pyscipopt (setup.py) ... error
ERROR: Complete output from command 'C:\Users\claire\Anaconda3\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'C:\\Users\\claire\\AppData\\Local\\Temp\\pip-install-zja79xrm\\pyscipopt\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\claire\AppData\Local\Temp\pip-wheel-jnmor4q4' --python-tag cp37:
ERROR: Using include path <C:\Users\claire\AppData\Local\Temp\pip-install-zja79xrm\pyscipopt\src>.
Using SCIP library <scip> at <C:\Users\claire\AppData\Local\Temp\pip-install-zja79xrm\pyscipopt\lib>.
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.7
creating build\lib.win-amd64-3.7\pyscipopt
copying src\pyscipopt\Multidict.py -> build\lib.win-amd64-3.7\pyscipopt
copying …Run Code Online (Sandbox Code Playgroud) 我想使用 SCIP 解决具有 267 个变量 [1] 的混合整数二次规划问题。
CPLEX 可以在大约 30 秒内解决该问题,并且在不到一秒的时间内就已经找到了非常接近最优解的解决方案 [2, 3]。
不幸的是,SCIP 确实在解决这个问题上遇到了困难,即使运行了 20 多分钟也无法找到接近最佳的解决方案 [4]。
为什么是这样?CPLEX 在 MIQP 方面真的比SCIP 好得多吗?我是否没有正确配置 SCIP?如何使用 SCIP 解决这个问题?
在我看来,SCIP 找到的解决方案与松弛的解决方案相去甚远。我的印象是 SCIP 首先解决松弛问题,然后尝试在此基础上找到整数解。这不正确吗?如果是的话,为什么解决方案还那么遥远?
我目前正在尝试在 Windows 上的 Python 分支和价格框架中实现通用护士排班问题 (NRP)。
我尝试使用 Gurobi,但显然这是不可能的,请参阅讨论: https://support.gurobi.com/hc/en-us/community/posts/360043240312-Branch-and-price-example
我正在搜索一个关于如何在 Python 中使用 SCIP 设置分支和价格框架的小示例 - 开始。我只能找到 C 和 C++ 的例子,这是我不熟悉的语言。
我正在尝试使用Pyomo解决非线性优化问题。最初,我尝试了Ipopt求解器,然后一切正常运行。然后,我想尝试求解器Scip尝试进行全局优化,因为Ipopt是本地求解器。但是,出现一个我无法理解的错误。
与Pyomo一起使用Scip并不是一件容易的事,但是通过Internet上的一些帮助以及一些反复试验,我可以从这里获取适用于Windows的scip可执行文件。我将可执行文件命名为scipampl并将其添加到我的PATH中。
当我运行以下命令时,Pyomo能够看到求解器,它返回True。
SolverFactory('scip').available()
Run Code Online (Sandbox Code Playgroud)
确信自己已使一切正常,然后尝试运行代码。我将我的Solverfactory设置如下:
solver = 'scip'
solver_io = 'nl'
opt = SolverFactory(solver, solver_io = solver_io)
Run Code Online (Sandbox Code Playgroud)
但令我失望的是,最终我收到以下错误消息:
[Errno 2] No such file or directory: 'C:\\Users\\NITINN~1.SIN\\AppData\\Local\\Temp\\tmpc0hzo5_7.pyomo.sol'
Run Code Online (Sandbox Code Playgroud)
我试图在互联网上了解这是什么意思,但到目前为止我还很走运。如果有人可以提出一些可能的原因,我将不胜感激。
谢谢。