Optaplanner整合

问题描述 投票:0回答:1

我试图在我的项目中集成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));
    }

这是我在项目中需要实现的所有类和文件吗,还是我必须实现更多的类?

java maven spring-data-jpa optaplanner
1个回答
0
投票

在这里,我想说的是,在我的项目中,我需要使用Spring jpa、maven和mysql数据库来实现我的依赖关系,这样我就可以使用注解的方式来实现。https:/www.optaplanner.org 你可以下载一个可执行的演示。然而,它不仅仅是一个可执行的演示,还包含了例子的源代码(在 examples/source 文件夹)。) 在那里你可以看到 optaplanner 是如何在示例应用程序中使用的,你也可以在你的应用程序中做同样的事情。

一个好的起点是 https:/docs.opaplanner.org7.36.0.Finaloptaplanner-docshtml_singleindex.html#plannerConfiguration。 第4章及以后

© www.soinside.com 2019 - 2024. All rights reserved.