我正在尝试将OptaPlanner集成到我的项目中。我正在使用Spring、maven和mysql数据库。我已经实现了maven文件上的依赖项,所以我可以使用OptaPlanner的注释,但是我不知道如何使用它。我一直在阅读文档和示例,但我仍然不知道如何使用它。
我必须将菜谱和用户分配给一个名为FoodList的类。FoodList的每个对象都有id、2个枚举、菜谱、用户和日期,我显示:
@PlanningEntity()
@Entity
public class ListaComida {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
private Comida comida;
@Enumerated(EnumType.STRING)
private Plato plato;
@PlanningVariable()
@ManyToOne
private Receta receta;
@PlanningVariable()
@ManyToOne
private Usuario usuario;
@Column(nullable = false)
private LocalDate fecha;
...
}@PlanningSolution // OptaPlanner annotation
@TypeDef(defaultForType = HardSoftScore.class, typeClass = HardSoftScoreHibernateType.class) // Hibernate annotation
public class ListaComidaSolution {
@Columns(columns = {@Column(name = "hardScore"), @Column(name = "softScore")})
private HardSoftScore score;
@PlanningScore
public HardSoftScore getScore() {
return score;
}
public void setScore(HardSoftScore score) {
this.score = score;
}
}<!-- Score configuration -->
<scoreDirectorFactory>
<easyScoreCalculatorClass>src/main/java/es.uca.AutomaticFoodList/GenerarComidaEasyScoreCalculator</easyScoreCalculatorClass>
<!--<scoreDrl>org/optaplanner/examples/cloudbalancing/solver/cloudBalancingScoreRules.drl</scoreDrl>-->
</scoreDirectorFactory>
<!-- Optimization algorithms configuration -->
<termination>
<secondsSpentLimit>30</secondsSpentLimit>
</termination>
public class GenerarComidaEasyScoreCalculator implements EasyScoreCalculator<ListaComidaSolution> {
public HardSoftScore calculateScore(ListaComidaSolution listaComidaSolution){
int hardScore = 0, softScore = 0;
return HardSoftScore.of(hardScore, softScore);
}
}public static void generarListaComida(){
//SolverFactory<CloudBalance> solverFactory = SolverFactory.createFromXmlResource(
// "org/optaplanner/examples/cloudbalancing/solver/cloudBalancingSolverConfig.xml");
//Solver<CloudBalance> solver = solverFactory.buildSolver();
// Load a problem with 400 computers and 1200 processes
//CloudBalance unsolvedCloudBalance = new CloudBalancingGenerator().createCloudBalance(400, 1200);
// Solve the problem
//CloudBalance solvedCloudBalance = solver.solve(unsolvedCloudBalance);
// Display the result
//System.out.println("\nSolved cloudBalance with 400 computers and 1200 processes:\n"
// + toDisplayString(solvedCloudBalance));
}这些是我需要在项目中实现的所有类和文件吗?还是我必须实现更多的类?
发布于 2020-05-05 13:28:54
在https://www.optaplanner.org/上,您可以下载一个可执行的演示。但是,它不仅是一个可执行的演示,而且还包含示例的源代码(在examples/source文件夹中)。在这里,您可以看到optaplanner是如何在示例应用程序中使用的,您也可以在应用程序中这样做。
一个很好的起点也是https://docs.optaplanner.org/7.36.0.Final/optaplanner-docs/html_single/index.html#plannerConfiguration第4章及其后。
https://stackoverflow.com/questions/61591308
复制相似问题