OptaPlanner - 在ConstraintProvider中使用Double变量
在OptaPlanner中使用Double类型变量直接求和的可行性
结论:可以直接使用
groupBy(ConstraintCollectors.sum(x))对Double类型变量进行求和操作,无需先将Double变量转换为整数形式。细节说明:
OptaPlanner的ConstraintCollectors.sum()原生支持包括Double在内的所有数值类型求和。不过需要注意浮点数的固有特性:多次累加Double类型数值可能会产生微小的精度误差。如果你的业务场景对精度要求极高(比如金融类计算),需要自行评估误差是否在可接受范围内;但对于普通的数值求和场景,直接使用原Double变量完全满足需求。示例代码:
Constraint calculateTotalX(ConstraintFactory factory) { return factory.from(YourPlanningEntity.class) .groupBy(ConstraintCollectors.sum(YourPlanningEntity::getX)) // getX()返回Double类型 .reward("Total X reward", HardSoftScore.ONE_SOFT, total -> total); }
内容的提问来源于stack exchange,提问作者yassine
相关产品推荐
相关产品推荐

