Sepp Hofbauer
Sepp Hofbauer

Reputation: 1

Extend the school timetable example (quarkus guide)

I want to extend the timetable example of the quarkus guide with the entity student. Each student grades all courses (eg. 1-6, more is better). Each student can visit all courses. I am looking for a student - course - allocation, so that the global sum of grades is maximal.

Can I do this with only 1 PlanningEntity or must I have 2?

Is there a trick to add a PlanningVariable List<Student> to Lesson?

Upvotes: 0

Views: 78

Answers (1)

Geoffrey De Smet
Geoffrey De Smet

Reputation: 27312

I 'd argue this is a different planning problem, with a different Solver configuration (so a different @PlanningSolution and @PlanningEntity class) but which can reuse problem fact classes (Room, Timeslot, etc).

In practice, I'd remove the @PlanningEntity annotation (and the @PlanningVariable annotations) from the Lesson class, because the lesson to room/timeslot assignments will be part of the input, not part of the planning optimization. I am not sure if you even need room/timeslot information at all.

We don't support lists of planning variable (@PlanningVariableCollection) yet and I doubt it would be a good fit here because the order of the students in the list doesn't matter. A set might, but we don't support that either yet. It is being worked on. In any case, there's a much simpler solution:

Create a planning entity StudentToCourseAssignment class. Follow the docs chapter 22 domain modeling guide to decide if the planning variable is on the student field xor the course field.

Also replace the TimeTable class accordingly.

Upvotes: 1

Related Questions