使用OptaPlanner解决一个包含多个节点的数据集。

huangapple go评论76阅读模式
英文:

optaplanner solving of one dataset with multiple nodes

问题

我对在Kubernetes集群上部署Optaplanner解决方案很感兴趣。主要的兴趣在于水平扩展解决特定数据集的能力。

我看过一个使用Optaplanner操作符实现的Optaplanner集群示例,但据我理解,它在提交多个问题时进行扩展(每个问题一个Pod)。

所以这不是我要找的方式。

我正在寻找一种在多个Pod之间“多线程”计算问题的方法(就像使用move-thread-count一样),但我不确定Optaplanner是否支持这样做...

这个答案说目前还不支持原生方式,但提到可以手动实现。

你有什么入门的建议吗?
我宁愿找到一种不进行分区求解的方法,因为那样可能会错过最优解...

英文:

I'm interested in deploying an optaplanner solution on a Kubernetes cluster. The main interest would be to scale horizontaly the solving of a specific dataset.

I have seen an example of optaplanner with a cluster (implemented thanks to an Optaplanner operator) but in my understanding it scales when multiple problems are submitted (one pod per problem)

So this is not what I'm looking for.

I'm looking for a way to "multithread" the computation of the problem (like with the move-thread-count) but accross multiple pods.

Do you know or have heard of any way to do it? I'm not even sure that Optaplanner supports it...

this answer says it's not yet supported natively but speak about doing it manually.

Do you have any tips to give for a start?
I would rather find a way to not do partitionned solving since it can miss the optimal solution..

答案1

得分: 1

这取决于情况。

如果我们在谈论多重投注解决方案,即同时在N个克隆中运行求解器,并从中选择最佳的单个结果,那么操作员也可以帮助解决这个问题。

如果我们在谈论以分布式方式解决相同问题,即不同的机器执行不同的移动,然后将它们合并为一个单一的解决方案,那么目前没有现成的解决方案,我也没有看到任何定制的实现。

老实说,我不认为这样做有什么好处-异步开销(和网络延迟!)会降低性能。多线程求解器已经受到这个问题的困扰,而且它是在单台机器上运行的。

我的观点是:对我来说,让一个Pod运行N个线程比让N个Pod运行一个线程更有意义。

英文:

That depends.

Are we talking about multi-bet solving? Essentially running the solver in N clones simultaneously, and picking the best single result out of them? If so, that's where the Operator can help as well.

If we're talking about solving the same problem in a distributed manner, with different machines executing different moves and then incorporating them into one single solution, then no, there is no out-of-the-box solution for that, and I haven't seen any custom implementations of that either.

Honestly, I don't see the benefits of that - the async overhead (and network latency!) will kill performance. The multi-threaded solver already suffers from that, and that's running on a single machine.

My opinion: Having 1 pod run N threads makes just so much more sense to me than having N pods run 1 thread.

huangapple
  • 本文由 发表于 2023年8月9日 00:05:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/76861349.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定