我试图在我的项目中集成OptaPlanner。我在使用Spring jpa,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));
}
这是我在项目中需要实现的所有类和文件吗,还是我必须实现更多的类?
在这里,我想说的是,在我的项目中,我需要使用Spring jpa、maven和mysql数据库来实现我的依赖关系,这样我就可以使用注解的方式来实现。https:/www.optaplanner.org 你可以下载一个可执行的演示。然而,它不仅仅是一个可执行的演示,还包含了例子的源代码(在 examples/source
文件夹)。) 在那里你可以看到 optaplanner 是如何在示例应用程序中使用的,你也可以在你的应用程序中做同样的事情。
一个好的起点是 https:/docs.opaplanner.org7.36.0.Finaloptaplanner-docshtml_singleindex.html#plannerConfiguration。 第4章及以后