假设我有一个ConstraintProvider
的实现。
package com.example.solver;
import com.example.domain.Lesson;
import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore;
import org.optaplanner.core.api.score.stream.Constraint;
import org.optaplanner.core.api.score.stream.ConstraintFactory;
import org.optaplanner.core.api.score.stream.ConstraintProvider;
import org.optaplanner.core.api.score.stream.Joiners;
public class TimeTableConstraintProvider implements ConstraintProvider {
@Override
public Constraint[] defineConstraints(ConstraintFactory constraintFactory) {
return new Constraint[] {
roomConflict(constraintFactory),
teacherConflict(constraintFactory),
};
}
private Constraint roomConflict(ConstraintFactory constraintFactory) {
return constraintFactory.from(Lesson.class)
.join(Lesson.class,
Joiners.equal(Lesson::getTimeslot),
Joiners.equal(Lesson::getRoom),
Joiners.lessThan(Lesson::getId))
.penalize("Room conflict", HardSoftScore.ONE_HARD);
}
private Constraint teacherConflict(ConstraintFactory constraintFactory) {
return constraintFactory.from(Lesson.class)
.join(Lesson.class,
Joiners.equal(Lesson::getTimeslot),
Joiners.equal(Lesson::getTeacher),
Joiners.lessThan(Lesson::getId))
.penalize("Teacher conflict", HardSoftScore.ONE_HARD);
}
将@constraintconfiguration
与@constraintweight
一起使用。一些OptaPlanner示例使用了它。
@ConstraintWeight("Teacher conflict")
// To disable, change to HardSoftScore.ZERO
private HardSoftScore teacherConflict = HardSoftScore.ONE_HARD;
然后使用penalizeConfigurable()
代替penalize()
:
constraintFactory.from(Lesson.class)
.join(...)
.penalizeConfigurable("Teacher conflict")
我正试图用OptaPlanner解决时间表问题,但我面临的问题可能与克隆问题有关。为什么我的计划实体收集方法看起来像这样 我犯错了 但是,当方法看起来像 一切都还好。有什么理由呢?为什么我会出现这个错误?谢谢你的帮助。
本文向大家介绍python基于property()函数定义属性,包括了python基于property()函数定义属性的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接的实现对
我发现约束流无论如何都不适合我的目的,因为我无法在使用奖励或惩罚函数时控制基于匹配实体的分数级别。我将继续使用drools语法。
我正在评估OptaPlanner的一个规划问题。我已经看到了几个关于这个话题的回应,但没有一个完全像我正在寻找的。 似乎OptaPlanner在求解时需要静态数量的实体/变量。 如有任何指示,将不胜感激。
我正在编写一个定制的spring starter,其中需要根据应用程序中定义的属性注册一个相同类型的bean列表。属性 我在应用程序中有以下属性。属性 自动配置类的当前实现如下 我想简单地在spring boot应用程序中用qualifer自动连接我的bean,如下所示 如何更改autoconfigure类以创建多个具有属性文件中定义的不同名称的bean(在本例中,如何创建bean mybean2
比方上面的类型,如果我想要 value 的类型在type为 'string' 时为 string ,在 type 为 'number' 的时候为 number。 要怎么定义这两个属性之间的类型约束?