在SCIP参数列表中,我看到了三种使用线程的引用:
lp/threads
(根据liquibase.exception.DatabaseException: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703问题,用于解决LP的线程,在使用SoPlex时并不重要)。
parallel/{min, max}threads
(并行求解期间的线程数)。
concurrent/*
(与在并发模式下使用线程有关的参数)。
我的问题是:使用默认安装时,SCIP中如何使用线程? parallel/{min, max}threads
参数是否仅与并发求解器相关?如果我不打开并发求解器,SCIP会使用可用线程来并行解决分支定界子问题吗?
谢谢!
答案 0 :(得分:0)
SCIP参数空间的“ parallel /”和“ concurrent /”部分中的所有参数仅影响并发模式。
默认情况下,SCIP是单线程的,但是可以使用DataFrame.reset_index
或通过启用并发模式来并行化。
答案 1 :(得分:0)
并发优化是通过交互式外壳程序中的“ concurrentopt”或C API中的方法“ SCIPsolveConcurrent()”启动的。可以通过并行/最小线程和并行/最大线程控制线程的数量。如果设置了严格的内存限制,则线程数可能会进一步减少。
当您在汉斯·米特尔曼(Hans Mittelmann)的网页上查看无标度的求解时间时,您会发现FiberSCIP的速度有所提高。您之所以说会变慢,可能是因为最佳解决方案的相对性能更差。
通常:对于这两种并行化方案,很大程度上取决于并行化是否具有提高性能的潜力。