I'm writing a program to find the most optimal student schedule. I have a priority system in place to rank each schedule. This will evaluate each valid schedule based on *cringe* hard coded statements. I just have checkboxes for them.
I would like to expand this and bring out this wonderful option to the user but I am not entirely sure how. I thought of assigning a value to each time slot which would relate to how little you want that time to be used. ie. You do not want an early class but if you must have one you will take it.
This idea fails when you want m of n time slots open. The easiest one to visualize is lunch. My university has 3 blocks that are near lunch time, 10:00 - 11:30, 11:30 - 1:00 and 1:00 - 2:30. The user wants at least one of them the be left open, but does not care which one.
Now finally my question,
I am currently thinking of having a rule system where each rule when executed on a schedule will return how desirable it is (based on the user). Then the user can specify, ok I want rule 1 or rule 2 or rule 3, and rule 4 to be in effect. I have it written to take in each rule, but I am unsure how to pose it to the user in a friendly manner to do the boolean expression. This is written in Java using Swing to create the GUI.
my rule object has the following fields
desirability (int 0 means it is terrible to have open, 100 means it is excellent to have open)
start time
end time
Thanks, and if you got any questions, just ask.