我在名为scip.set的文件中定义了自定义设置,并将其放入myscipdir / settings中。
设置包含
limits/time = 86400
limit/memory = 61440
lp/threads = 6
但是,SCIP似乎没有加载自定义设置,而是
我可以知道这样做的正确方法是什么?我可以从make test命令行设置时间和内存限制,但我还需要设置更多的线程。
注意,在图中,SCIP表示“未找到用户参数文件scip.set - 使用默认参数”,这是误导性的,因为在下一行中,它表示“加载参数文件...”。 如果scip.set真的不在/ settings中,SCIP会弹出一个错误,说明找不到文件并中止。
答案 0 :(得分:3)
还有更多。我记得你使用SCIP的make test
功能运行自动化测试(顺便提一下,你应该在你的问题中提到)。您提供的设置会被读入,但会再次被覆盖(一如既往,魔术就会发生在" check / configuration_tmpfile_setup_scip.sh",另请参阅您的related question)。
您必须将这些特定配置参数作为选项传递给make
,如下所示:
make test TIME=86400 THREADS=6 MEM=61440 [optional: SETTINGS=scip]
如果你没有传递这些标志,它们(当前)默认为
您可以在" make / make.project"下找到定义。一些更多可用(在您的情况下可能是必要的)选项可以在"高级选项"部分中找到。在How to run automated tests。
这是一种防止您在进行自动化测试时意外使用具有不受欢迎的时间限制(甚至可能是无限限制)的设置的方法。我承认这看起来有点复杂。虽然这种方法为我们节省了几乎无限的CPU处理时间,但我们已将其纳入我们的议程,以便于测试系统及其可访问性。
关于SCIP在设置文件中阅读行为的奖励问题:混淆是因为您将设置命名为" scip.set"。每次打开交互式shell时,SCIP都会在此名称的当前工作目录中查找自定义设置,但如果此类文件不存在则使用默认设置。但是,如果您通过SETTINGS
- 标志指定了设置文件,但如果测试脚本无法在设置目录中找到此文件,则脚本将中止以使用不存在的设置来节省计算时间。
EDIT1:顺便说一下:由于您使用的是SoPlex作为LP解算器,因此您无需担心LP线程编号; SoPlex是单线程的。
答案 1 :(得分:1)
SCIP尝试从scip目录加载标准scip.set文件,而不是从settings目录加载。您可以添加符号链接
ln -s settings/yoursettings.set scip.set
现在,SCIP默认加载您的设置文件。
最佳, 雅各布