首页 文章

SCIP自定义设置未加载

提问于
浏览
3

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

设置包含

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

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

使用

  • 默认设置(参见附图),和

  • 在/ check / results目录下找不到参数文件 .

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

customized settings not loaded

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

2 回答

  • 3

    还有更多 . 我记得你使用SCIP的 make test 功能运行自动化测试(顺便提一句,你应该在你的问题中提到) . 您提供的设置会被读入,但会再次被覆盖(魔术一如既往地发生在"check/configuration_tmpfile_setup_scip.sh"中,另请参阅related question) .

    您必须将这些特定的配置参数作为选项传递给 make ,如下所示:

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

    如果你没有传递这些标志,它们(当前)默认为

    • TIME = 3600

    • MEM = 6144

    • THREADS = 1

    您可以在"make/make.project"下找到定义 . 一些更多可用(在您的情况下可能需要阅读)选项可在How to run automated tests How to run automated tests部分找到 .

    这是一种防止您在进行自动化测试时意外使用具有不受欢迎的时间限制(甚至可能是无限限制)的设置的方法 . 我承认这看起来有点复杂 . 虽然这种方法为我们节省了几乎无限的CPU处理时间,但我们已将其纳入我们的议程,以便于测试系统及其可访问性 .

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

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

  • 1

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

    ln -s settings/yoursettings.set scip.set
    

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

    最好的,雅各布

相关问题