Java 项目作业调度示例的相同基准结果(增强)

Java 项目作业调度示例的相同基准结果(增强),java,optaplanner,Java,Optaplanner,我使用以下功能增强了optaplanner示例中的项目作业调度示例: 基于优先级的项目:执行顺序将从优先级较高的项目开始 休息时间功能:添加另一个名为breakTime的阴影变量,并在分配与休息时间重叠时计算它(即假日) 将延迟的值提供程序范围更改为15000 然后,我运行基准测试,对LA500,LA1000,LA2000得到相同的结果,它表明所有这些都是最受欢迎的。这是基准测试的有效结果吗?请有人帮我分析我的基准测试结果。我已附上我的基准测试结果。 谢谢 如果分数函数非常平坦,它们可能给

我使用以下功能增强了optaplanner示例中的项目作业调度示例:

  • 基于优先级的项目:执行顺序将从优先级较高的项目开始
  • 休息时间功能:添加另一个名为breakTime的阴影变量,并在分配与休息时间重叠时计算它(即假日)
  • 将延迟的值提供程序范围更改为15000
  • 然后,我运行基准测试,对LA500,LA1000,LA2000得到相同的结果,它表明所有这些都是最受欢迎的。这是基准测试的有效结果吗?请有人帮我分析我的基准测试结果。我已附上我的基准测试结果。 谢谢


    如果分数函数非常平坦,它们可能给出相同的结果。可能是1个约束类型使所有其他约束类型相形见绌,从而使分数持平

    problemStatisticType BEST_SCORE图看起来也完全一样吗?这不太可能

    1) 启用以下统计信息(6.2.CR1中新增)并再次运行基准测试:

    <singleStatisticType>CONSTRAINT_MATCH_TOTAL_BEST_SCORE</singleStatisticType>
    
    CONSTRAINT\u MATCH\u TOTAL\u BEST\u SCORE
    
    该选项将告诉您哪些约束类型会影响最佳分数(请参阅文档“14.6.2.约束匹配随时间变化的总最佳分数统计”)。如果一种约束类型使其他约束类型相形见绌,则会使其可见


    2) 运行解算器后检查实际解决方案(默认情况下,基准测试者不会编写最佳解决方案,因此,要么配置该解决方案,要么直接运行解算器)。检查约束会导致您得到的分数。

    我只是将constructionHeuristicType更改为FIRST\u FIT\u Desculation,并添加一个新的类分配困难比较程序。为什么它会在这个规划解决方案中产生如此大的影响?它是FIRST_FIT_Desculation不适合延迟验收和实体禁忌?哦,还有一件事,在我的计划问题领域,时间的度量单位是分钟而不是天,这不好吗?因为每项工作都会持续很长时间。我试着用你的例子,并根据我的要求加以改进。然后我对你的示例数据(A-10)运行它,它仍然以良好的结果求解,平均每秒计算(35945),而使用我的数据它甚至没有给出可行的解决方案(硬约束为负)。我想这是因为我的数据持续时间太长了,大约是240-1200年,你认为杰弗里怎么样?我认为我的规划问题的根源是int-valueRange工厂。在示例中,它被设置为500,而我的计划问题可能会延迟500分钟以上。当我尝试在执行模式下降低持续时间时,它提供了与示例类似的性能。有没有更好的方法代替使用int-ValueRangeFactory?我尝试过使用BigDecimal ValueRangeFactory,但在处理大型数据集时,它的性能仍然很差。BigDecimal总是比Int慢。坚持使用ints。您可以尝试几件事:如果延迟以秒表示,但分钟(或每10秒)的粒度就足够了,那么更改代码,使其在该粒度下工作。这大大减少了搜索空间(请参阅文档中“计算搜索空间大小”一章)。我也在研究IntvalueRanges的nearbySelection,但这不会成为6.2。