为什么最后得分的分区搜索下降严重

0

的问题

我是新来的Optaplanner. 我想要实现良好的分通过的分区战略。 这是我非常基本的求解程序的配置:

<solutionClass>com.my.package.SolutionClass</solutionClass>
  <entityClass>com.my.package.EntityClass</entityClass>
  <scoreDirectorFactory>
    <constraintProviderClass>com.my.package.ConstraintsClass</constraintProviderClass>
  </scoreDirectorFactory>

  <partitionedSearch>
    <solutionPartitionerClass>com.my.package.PartitionerClass</solutionPartitionerClass>
    <localSearch>
      <termination>
        <secondsSpentLimit>60</secondsSpentLimit>
      </termination>
    </localSearch>
  </partitionedSearch>
</solver>

来测试它我分配我的问题在两个分问题。 当我看最好的成绩通过单一分区他们不是坏(-3hard/10soft,-2hard/15soft). 但是,一般"减少",这是你似乎如下:

[org.opt.cor.imp.par.DefaultPartitionedSearchPhase] (executor-thread-0) Partitioned Search phase (0) ended: time spent (60104), best score (-29hard/15soft), score calculation speed (7735/sec), step total (29), partCount (2), runnablePartThreadLimit (6).

为什么? 我失去了一些东西?

2

最好的答案

1

那是自然的分配搜索。 每个分区将单独优化,以及这些个别的分区将因此有体面的成绩。 然而,这两个分区则需要进行合并,合并到最终解决方案。 这个步骤不是最优化的,因此这是一些额外的低效率将来自何方。

你可能想试试运行的一个非分区求解在最终解决方案,看看那里得到你。 但如果你可以那么做,你可能不会一直在使用分配搜索在第一位。

OptaPlanner文件分搜索 的讨论其中的效率低下。

2021-11-23 16:04:38

好谢谢你,我得到它。 我如何得到分配的解决方案在Java? 求解。解决(的问题)只有返回的合并不良的解决方案。
Giulia Fois

据我所知,没有公共API做到这一点。
Lukáš Petrovický

你可以分隔他们之前给他们的解决只是使用正解决以解决他们独立(或允许一个单一的SolverManager这样做在行你的,每个分区正在一个工作)。
Geoffrey De Smet
1

[除了卢卡斯的细的答案]

分配只搜索工作,如果你的划分的兼容你的约束。 在你的情况下,我相信,你的分区程序是没有的。

例如,在雇员名册,假设没有硬约束分配至多10个班,每名雇员。 现在,如果你分8000变化在分区1000变化,但是不区的300名雇员--每个分区有300名员工的(这是错误). 然后分区1中可以分配9转移到安,不断硬限制(0hard). 同样的,分区2可以分配8转移到安,不断硬限制(0hard). 合并,然而,将有17转移分配给安一个硬分的7hard.

我觉得你是这么看你的 -3hard/10soft + -2hard/15soft = -29hard/15soft

2021-11-24 12:27:40

谢谢你,这个答案让我意识到我是错了!
Giulia Fois

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................