4

我在一个名为 scip.set 的文件中定义了自定义设置,并将其放入 myscipdir/settings 中。

设置包含

limits/time = 86400
limit/memory = 61440
lp/threads = 6

但是,SCIP 似乎没有加载自定义设置,而是,

  1. 使用默认设置(见附图),和
  2. 在 /check/results 目录下找不到参数文件。

我可以知道这样做的正确方法是什么吗?我可以从 make test 命令行设置时间和内存限制,但我还需要设置更多的线程数。

未加载自定义设置

请注意,在图中,SCIP 表示“未找到用户参数文件 scip.set - 使用默认参数”,这是一种误导,因为在下一行中,它表示“已加载参数文件...”。如果 scip.set 确实不在 /settings 中,SCIP 会弹出一个错误,指出该文件未找到并中止。

4

2 回答 2

3

不止于此。我记得您使用 SCIP 的功能运行自动化测试make test(顺便说一下,您应该在问题中始终提及)。您提供的设置被读入,但随后再次被覆盖(魔术总是发生在“check/configuration_tmpfile_setup_scip.sh”中,另请参见您的相关问题)。

相反,您必须将这些特定的配置参数作为选项传递,以便make像这样:

make test TIME=86400 THREADS=6 MEM=61440 [optional: SETTINGS=scip]

如果您不传递这些标志,它们(当前)默认为

  • 时间=3600
  • 内存=6144
  • 线程= 1

您可以在“make/make.project”下找到定义。在如何运行自动化测试的“高级选项”部分中可以找到更多可用的选项(在您的情况下可能需要阅读) 。

这是一种防止您在进行自动化测试时意外使用具有不希望的时间限制(甚至可能是无限限制)的设置的方法。我承认这可能看起来有点复杂。尽管该方法为我们节省了几乎无限量的 CPU 处理时间,但我们将其列入议程以促进测试系统及其可访问性。

关于设置文件中 SCIP 读取行为的额外问题:混淆是因为您将设置命名为“scip.set”。每次打开交互式 shell 时,SCIP 都会在此名称的当前工作目录中查找自定义设置,但如果此类文件不存在,则使用默认设置。但是,如果您通过SETTINGS-flag 指定了一个设置文件,但如果测试脚本未能在设置目录中找到此文件,则脚本将中止以节省您不存在的设置的计算时间。

EDIT1:顺便说一句:由于您使用 SoPlex 作为 LP 求解器,因此您无需担心 LP 线程数;SoPlex 是单线程的。

于 2014-10-23T08:04:15.957 回答
1

SCIP 尝试从 scip 目录而不是从设置目录加载标准 scip.set 文件。您可以添加符号链接

ln -s settings/yoursettings.set scip.set

现在,SCIP 默认加载您的设置文件。

最好的,雅各布

于 2014-10-23T07:26:20.067 回答