当前位置: 首页 > 知识库问答 >
问题:

如何设置线程数或工具原型接口?

居乐池
2023-03-14

我们使用JavaMP协议接口来访问指示符约束。由于二进制变量的数量很大,问题的求解阶段通常需要几个小时才能运行。

proto接口使用一个包含模型和SolverType的MPModelRequest,然后将其传递给静态方法MPSolver。solveWithProto(mpModelRequest)。

无法为请求指定线程数,并且solveWithProto方法是静态的,因此我们想知道实例化MPSolver并设置线程数是否真的能达到预期效果。

原始代码: 1线程

final MPModelRequest mpModelRequest = MPModelRequest.newBuilder()
                .setEnableInternalSolverOutput(true)
                .setSolverType(MPModelRequest.SolverType.SCIP_MIXED_INTEGER_PROGRAMMING)
                .setModel(model)
                .build();

MPSolutionResponse response = MPSolver.solveWithProto(mpModelRequest); 

创建MPSolver:即使方法是静态的,它也会使用多个线程吗?

MPSolver mpSolver = MPSolver.createSolver(MPModelRequest.SolverType.SCIP_MIXED_INTEGER_PROGRAMMING.toString());
mpSolver.setNumThreads(8);
MPSolutionResponse response = mpSolver.solveWithProto(mpModelRequest); 

共有1个答案

羊舌琛
2023-03-14

SCIP并行性被破坏并禁用。总的来说,它带来的加速效果很小。

如果您的问题是完整的,您可以使用CP-SAT后端。它将受益于8个以上的线程。

 类似资料:
  • 每次运行程序时,我都会调整,以查看它的效果。 然后,我将作业(的实例)提交到池。每一个都增加一个,做一些工作(创建一个随机整数数组并对其进行洗牌),然后Hibernate一段时间。其思想是模拟一个web服务调用。最后,作业将自己重新提交到池中,这样我总是有作业在工作。 我正在测量吞吐量,例如每分钟处理的作业数。 现在的问题是:我得到了一个,作业超过了31,000个。我尝试过设置,但这没有帮助。我尝

  • 由来 并发在Java中算是一个比较难理解和容易出问题的部分,而并发的核心在线程。好在从JDK1.5开始Java提供了concurrent包可以很好的帮我们处理大部分并发、异步等问题。 不过,ExecutorService和Executors等众多概念依旧让我们使用这个包变得比较麻烦,如何才能隐藏这些概念?又如何用一个方法解决问题?ThreadUtil便为此而生。 原理 Hutool使用Global

  • 我学习打字稿。我想设置组件功能道具类型。但我不知道如何设置。 这是代码。 我不想设置“任何”。我设置了什么类型?

  • 我的多线程概念很弱,正在努力学习。 在Java中,我所知道的是,我们不能多次调用线程: 据我所知,当您再次调用时,它会引发异常,因为线程的关联堆栈一旦退出方法,并且您再次尝试初始化时就会被破坏。 在那种情况下,我对线程池的了解是,它给出了更好的性能&节省了时间,因为不需要创建新线程(我在这里读到)。 如果在线程池场景中不需要创建新的线程,那么它是如何与刚完成其run方法的同一线程一起工作的,该线程

  • 如何设置进程数 进程数是由count属性决定的(windows系统不支持进程数设置),例如下面代码 use WorkermanWorker; require_once __DIR__ . '/Workerman/Autoloader.php'; $http_worker = new Worker("http://0.0.0.0:2345"); // ## 启动4个进程对外提供服务 ## $ht

  • 问题内容: 我已经成功设置了Spring Batch项目教程。我真的很想知道是否有可能在“ Spring级别”使它成为多线程的。 我想要的基本思想是列出任务或任务步骤的列表,并让它们由独立的线程拾取和处理,理想情况下是从限制为“ n”个线程的池中进行。 这可能吗?如果是这样,怎么办?有人可以引导我到我目前所在的位置吗? 简单的项目我是从本教程在这里。它基本上具有不同的任务,这些任务将消息打印到屏幕