问题标签 [scip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
552 浏览

scip - 是否可以让 SCIP 和 python-zibopt 在 Windows 下工作?

最近我想尝试一些开源求解器而不是 CPLEX。我发现 PICOS + zibopt 可能是一个不错的选择。但是,我只能找到有关如何使 zibopt 在 windows 下正确使用 python 的说明。我下载了scip的windows库(.dll文件),并尝试根据命令“python setup.py install”安装python-zibopt。总是弹出错误“ blockmemshell/memory.h no such file”。我觉得是因为我的编译器VS120COMNTOOL没有找到scip求解器。我现在有没有机会让 scip 在 Windows 下工作?

0 投票
1 回答
378 浏览

scip - 使用 IPOPT 构建 TSP 示例

我正在尝试为非线性问题开发松弛处理程序。我想以 TSP 为例并对其进行修改。所以首先,我想用 ipopt 构建 TSP 问题。

我下载了 scipoptsuite 3.1.0 和 Ipopt 3.11.9。我已经用 ipopt 构建了 scip,并且我还从它的标准 makefile 构建了 TSP 示例。但是,TSP 示例的标准 makefile 不使用 ipopt 支持构建它。

如何构建具有 IPOPT 支持的 TSP 示例?

谢谢

2014 年 10 月 31 日更新:

所以我尝试了 IPOPT=true,看起来一切正常,但运行时出现问题。现在我迷路了。

调用制作:

make 说它应该做什么:

2014 年 11 月 4 日更新:

所以我从来没有想过如何用 IPOPT 构建 TSP。我的目标是添加一个使用 IPOT 的插件。我发现从一个干净的示例文件夹开始比从 TSP 代码开始更容易。我还没有弄清楚如何使用 IPOP 构建 TSP makefile。scip makefile 系统很难理解。

我如何添加使用 IPOPT 的插件:0)确保 bison 和 yacc 在您的路径中 1)在 scipoptsuite-3.1.0 中,运行 make READLINE=false IPOPT=true ZIMPL=false VERBOSE=true 3)保存输出。记下 o 文件是如何构建的,以及主 exe 文件是如何构建的。4) 将这些 g++ 命令保存/修改到 scip-3.1.0 中的 bash 脚本中,并在开发时运行它。

这个

0 投票
2 回答
567 浏览

optimization - 用于 scip 优化的 lapack 库

我有一个线性约束的二次优化问题,我想用SCIP. 我想要最小化的优化矩阵是半正定的(准确地说是某些变量的方差)。我的文件CPLEX LP格式有问题,当我优化时SCIP,我收到消息

所以SCIP开始优化假设矩阵是不确定的并且需要大量的时间。我已经在源代码和二进制文件所在的文件夹中安装LAPACK甚至复制liblapack.a了文件并重新安装。但是,我不断收到上述消息。libSCIPSCIP

有没有办法SCIP利用LAPACK图书馆?SCIP如果能确定矩阵是半正定的,我相信优化会非常快。

0 投票
1 回答
1447 浏览

matlab - Matlab、SCIP 和 Opti 工具箱

我正在使用 Opti Toolbox,这是一个用于 Matlab 的免费优化工具箱。我正在求解一个混合整数非线性程序,一个 MINLP。在 Opti Toolbox 中,使用的 MINLP 求解器是 SCIP。

我将自己的目标定义为一个单独的函数( Opti 中的fun参数),并且该函数需要调用其他采用双参数的 matlab 函数。

问题是,每当 Opti 调用我的函数来评估目标时,它首先使用“ scipvar ”对象的向量调用它,然后使用“ double ”对象的向量再次调用它。我的 obj 函数不适用于 scipvar 对象,它会返回错误。

我尝试(仅用于测试)在类型为“ scipvar ”时将函数的输出设置为固定的东西,而当类型为“ double ”时设置为实际的东西,这不起作用,实际上更改了固定值改变最终的最优值。

我基本上需要将 scipvar 对象转换为 double,这可能吗?或者还有其他选择吗?

谢谢你。

0 投票
1 回答
249 浏览

scip - 超过 scip 最大深度级别

优化多项式时出现最大深度级别错误。在下面的输出中,我注意到 LP 迭代似乎停止了。为什么 scip 会在很多变量上分支并且不再调用 LP 求解器?我正在使用 Ipopt 运行它。

我无法尝试增加最大深度级别,因为它#defined 为 65535,并且我不想重建 scip。

下面是我的输入文件和输出。

0 投票
1 回答
104 浏览

ampl - 在 scipampl 中显示剪切类型

我使用 scipampl 作为 AMPL 中的 MILP 求解器。我想知道产生了什么削减。虽然 scipampl 显示了求解过程中的切割数量,但它没有显示切割的种类。要找出削减,我知道的唯一方法是为 scip 打开交互式 shell 并在求解后显示统计信息。但是当我需要解决 AMPL 中的许多问题并在运行后收集数据时,这种方法对我不起作用。

我想知道是否有一种方法可以让 scipampl 在不启动交互式 shell 的情况下打印出切割信息(或其他信息,如 LP 调用)。

另一个相关问题是如何显示部分统计信息。不是显示所有内容,而是有一个像“显示统计数据削减”这样的命令。

我查看了“scip.set”中的选项,但显示选项似乎没有提供我正在寻找的东西。

0 投票
1 回答
276 浏览

scip - 解决 SCIP 语法错误

我有一个小问题,其中 gurobi 返回错误,因为 Q 矩阵不是半正定(PSD)。

鉴于 gurobi 生成的“.lp”,我尝试检查 SCIP 是否可以解决此模型。我正在使用带有预编译二进制文件的“scip-3.1.0.win.x86_64.msvc.opt.spx.ld”版本。不幸的是,SCIP 回归

我的问题是,(a)你知道这个错误是什么以及如何克服它吗?

(b) 比如说,如果这个错误是固定的,SCIP 会自动线性化这个约束吗?这是一个凸模型,但不是二阶锥体。SCIP 会用外部近似(或任何其他方法)来放松它吗?

(c) 如果不是,如果受到 gurobi 生成格式的限制,您会推荐任何我可以快速编写以便 SCIP 解决的建模语言吗?

0 投票
2 回答
645 浏览

c++ - SCIP中的分支和价格

我有一个关于使用 SCIP 在分支和价格中进行分支的问题。SCIP 通常会在原始变量上分支吗?例如,在 VRP 示例中,它是在主问题变量还是原始问题变量上分支?如果我想在原始变量上进行分支,是否需要添加自己的分支规则?

0 投票
0 回答
995 浏览

scip - 如何在 Visual Studio 中编译 SCIP

我花了几天时间尝试使 SCIP 与 C++/Windows 7 一起工作。我安装了 Microsoft Visual Studio,2008-2013。

我对 SCIP 有点陌生。我通读了安装过程并尝试安装 SCIP。但我无法清楚地理解安装过程。我查看了可调用库示例,但找不到 SCIP.h。谁能告诉我如何一步一步用VC安装SCIP,并设置一个例子。

非常感谢。

0 投票
1 回答
443 浏览

scip - 如何更新节点的下限和上限

我正在尝试编写一个新的 scip 放松处理程序。对于每个节点,我想用我想出的值来更新它的下限和上限。然后我希望 scip 在其求解过程中自然地使用这些更好的界限。但我得到了奇怪的结果。

我的问题是如何更新分支和边界中当前节点的下限和上限?

在我的关系处理程序中,我有这个调试代码:

输出是

scip stage 9 是 SCIP_STAGE_SOLVING,看起来不错。

带有“scip”的行是节点的 scip 边界。带有“my b”的中间线是指我的新界限。

SCIPupdateLocalLowerbound(scip, -10)在当前下限为 -1e14 时调用,因此该调用后新的下限应为 10。但是,下限变为 1e20,这是一个巨大的错误。

我希望这SCIPupdateLocalLowerbound(scip, -10);会使SCIPgetLocalLowerbound(scip)return -10not 1e20。我究竟做错了什么?

另外,我没有看到一个名为 的函数SCIPupdateLocalUpperbound(),那么如何更新节点的上限?

编辑 2015/03/13 感谢 Gregor 解释 scip 的那一部分。我还有一个小问题。

为了完整起见,我将本地节点的最小化问题的下限设置为

我正在设置最小化问题的全局上限

SCIPprimalSetUpperbound 的第二个参数采用

我正在传递一个在 scip->mem 中找到的 blkmem。这是正确的,还是我应该传递一些其他干净的块内存?我是否覆盖了一些重要的东西?

编辑 2015/03/19

现在我在设置目标函数时不明白输出。提醒一下(对我来说),原来的主问题是最大化问题,而 scip 的转换问题是最小化问题。如果我看一下结果

输出是:

所以 scip 的这个节点的最小值的界限是 -1.10142e+08 <= 100000,我这个节点的最小值的界限是 -1.37597e+08 <= 2.11197e+08,在这种情况下更糟。

为什么 SCIPgetObjlimit = -1.97183e+08?为什么不是-100000?如果 100000 是转换空间中的当前上限(最小化),那么 -100000 是我原始问题的当前全局下限。