Оптапланерная интеграция - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь интегрировать OptaPlanner в свой проект. Я работаю с базой данных Spring jpa, maven и mysql. Я реализовал зависимости для моего файла maven, поэтому я могу использовать аннотации OptaPlanner, но я не знаю, как его использовать. Я читал документацию и примеры, но я все еще не знаю, как ее использовать.

Я должен назначить рецепты и пользователя для класса под названием FoodList. Каждый объект FoodList имеет идентификатор, 2 перечисления, рецепт, пользователя и дату, я показываю:

  • Класс FoodList:
@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));
    }

Это все? классы и файлы, которые мне нужны для реализации этого в моем проекте? Или мне нужно реализовать больше классов?

1 Ответ

0 голосов
/ 05 мая 2020

На https://www.optaplanner.org/ вы можете загрузить исполняемый демонстрационный ролик. Однако это не просто исполняемая демонстрационная программа, но также содержит исходный код примеров (в папке examples/source). Там вы можете увидеть, как optaplanner используется в примерах приложений, и вы можете сделать то же самое в вашем приложении.

Хорошая отправная точка также https://docs.optaplanner.org/7.36.0.Final/optaplanner-docs/html_single/index.html#plannerConfiguration глава 4 и далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...