You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OptaPlanner自定义分数定义已弃用,未来应如何实现?

替代已弃用的scoreDefinitionClass实现自定义分数

问题场景

此前通过@PlanningScore注解的scoreDefinitionClass字段指定自定义分数定义:

@PlanningScore(scoreDefinitionClass = MyCustomScoreDefinition.class)
private MyCustomScore score;

但该字段现已被弃用,需调整实现方式。

解决方案

现在无需在@PlanningScore注解中指定scoreDefinitionClass,按以下步骤操作即可:

  • 确保自定义分数类实现Score接口:
    你的MyCustomScore必须实现OptaPlanner的Score接口,并重写add、subtract、compareTo等核心方法,保证分数的运算与比较逻辑合规。

  • 保留并完善ScoreDefinition实现类:
    继续使用MyCustomScoreDefinition,确保它实现ScoreDefinition接口,完成自定义分数的创建、解析、序列化等核心逻辑的封装。

  • 让框架自动识别或手动配置分数定义:
    如果你的ScoreDefinition类遵循[自定义分数类名]Definition的命名规则(比如MyCustomScore对应MyCustomScoreDefinition),OptaPlanner会自动识别并加载它。
    若命名不符合规则,可在Solver配置中手动指定:

    <solver>
      <scoreDefinitionClass>com.yourpackage.MyCustomScoreDefinition</scoreDefinitionClass>
      <!-- 其他Solver配置 -->
    </solver>
    

    或采用编程式配置:

    SolverConfig solverConfig = new SolverConfig();
    solverConfig.setScoreDefinitionClass(MyCustomScoreDefinition.class);
    
  • 简化@PlanningScore注解写法:
    移除scoreDefinitionClass参数,直接声明分数字段类型:

    @PlanningScore
    private MyCustomScore score;
    

内容的提问来源于stack exchange,提问作者Jon Britton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:54:27