【教程12】OptaPlaner构造启发式算法

本文详细介绍了OptaPlanner中的多种构造启发式算法,包括首次适应法、首次适应法-递减、最弱适应法及其递减版、最强适应法及其递减版。这些算法用于在有限时间内构建初始解,虽然不保证最优,但能快速找到解决方案。文章还讨论了算法的配置、排序方式以及扩展性,包括初始化得分趋势、多规划变量处理和扩展技术等。
摘要由CSDN通过智能技术生成

构造启发式算法

1. 概述

构造启发式算法在有限时间内构建一个相当不错的初始解。它的解决方案并不总是可行的,但它能够快速找到一个解决方案,以便后续元启发式算法能够完成任务。

构造启发式算法会自动终止,因此通常无需专门配置构造启发式算法阶段的终止条件。

2. 首次适应法(First Fit)

2.1 算法描述

首次适应法算法按照默认顺序循环遍历所有的规划实体,并逐个初始化。它将规划实体分配给最佳的可用规划值,同时考虑已经初始化的规划实体。当所有的规划实体都被初始化后,算法终止。一旦规划实体被分配,就不再改变。

firstFitNQueens04

请注意,该算法从将皇后A放置在第0行开始(之后不再移动),这使得达到最优解成为不可能。可以通过添加元启发式算法来修复这个问题。

2.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>FIRST_FIT</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType>FIRST_FIT</constructionHeuristicType>
  <...MoveSelector/>
  <...MoveSelector/>
  ...
</constructionHeuristic>

如需进行扩展,请参考构造启发式算法的扩展配置。如需进行高级配置,请参考从队列中分配实体。

3. 首次适应法-递减(First Fit Decreasing)

3.1 算法描述

与首次适应法类似,但是首次适应法-递减先分配较困难的规划实体,因为它们更不容易适应剩余部分。因此,它会按照降序对规划实体进行排序

firstFitDecreasingNQueens04

要求模型支持规划实体的难度比较。

通常情况下,人们预期这个算法的结果比首次适应法更好。但并非总是如此。

3.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
  <...MoveSelector/>
  <...MoveSelector/>
  ...
</constructionHeuristic>

如需进行扩展,请参考构造启发式算法的扩展配置。如需进行高级配置,请参考从队列中分配实体。

4. 最弱适应法(Weakest Fit)

4.1 算法描述

最弱适应法类似于首次适应法,但是它先使用较弱的规划值,因为较强的规划值更有可能能够容纳后续的规划实体。因此,它按照规划值的强度递增顺序排序。

要求模型支持规划值的强度比较

请不要假设这个算法的结果比首次适应法更好,通常情况下并非如此。

4.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>WEAKEST_FIT</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType>WEAKEST_FIT</constructionHeuristicType>
  <...MoveSelector/>
  <...MoveSelector/>
  ...
</constructionHeuristic>

如需进行扩展,请参考构造启发式算法的扩展配置。如需进行高级配置,请参考从队列中分配实体。

5. 最弱适应法-递减(Weakest Fit Decreasing)

5.1 算法描述

结合了首次适应法-递减和最弱适应法。它将规划实体按照降序难度排序,将规划值按照递增强度排序。

要求模型支持规划实体的难度比较和规划值的强度比较。

请不要假设这个算法的结果比首次适应法-递减更好,通常情况下并非如此。但它通常优于最弱适应法。

5.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
  <...MoveSelector/>
  <...MoveSelector/>
  ...
</constructionHeuristic>

如需进行扩展,请参考构造启发式算法的扩展配置。如需进行高级配置,请参考从队列中分配实体。

6. 最强适应法(Strongest Fit)

6.1 算法描述

类似于首次适应法,但是最强适应法先使用强的规划值,因为强的规划值更有可能具有较低的软成本。因此,它按照规划值的强度递减顺序排序。

要求模型支持规划值的强度比较

请不要假设这个算法的结果比首次适应法或最弱适应法更好,通常情况下并非如此。

6.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>STRONGEST_FIT</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType>STRONGEST_FIT</constructionHeuristicType>
  <...MoveSelector/>
  <...MoveSelector/>
  ...
</constructionHeuristic>

如需进行扩展,请参考构造启发式算法的扩展配置。如需进行高级配置,请参考从队列中分配实体。

7. 最强适应法-递减(Strongest Fit Decreasing)

7.1 算法描述

结合了首次适应法-递减和最强适应法。它将规划实体按照降序难度排序,将规划值按照递减强度排序。

要求模型支持规划实体的难度比较和规划值的强度比较。

请不要假设这个算法的结果比首次适应法-递减或最弱适应法-递减更好,通常情况下并非如此。但它通常优于最强适应法。

7.2 配置

简单配置:

<constructionHeuristic>
  <constructionHeuristicType>STRONGEST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>

高级配置:

<constructionHeuristic>
  <constructionHeuristicType
  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值