首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Optaplanner集成

Optaplanner集成
EN

Stack Overflow用户
提问于 2020-05-04 11:34:54
回答 1查看 161关注 0票数 0

我正在尝试将OptaPlanner集成到我的项目中。我正在使用Spring、maven和mysql数据库。我已经实现了maven文件上的依赖项,所以我可以使用OptaPlanner的注释,但是我不知道如何使用它。我一直在阅读文档和示例,但我仍然不知道如何使用它。

我必须将菜谱和用户分配给一个名为FoodList的类。FoodList的每个对象都有id、2个枚举、菜谱、用户和日期,我显示:

  • FoodList类:

代码语言:javascript
复制
@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;
...
}
代码语言:javascript
复制
@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;
    }

}
代码语言:javascript
复制
<!-- 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>

代码语言:javascript
复制
public class GenerarComidaEasyScoreCalculator implements EasyScoreCalculator<ListaComidaSolution> {
    public HardSoftScore calculateScore(ListaComidaSolution listaComidaSolution){
        int hardScore = 0, softScore = 0;
        return HardSoftScore.of(hardScore, softScore);
    }
}

  • 这个类没有实现,但我认为我必须这样做。

代码语言:javascript
复制
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));
    }

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

EN

回答 1

Stack Overflow用户

发布于 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章及其后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61591308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档