I am writing a time table generator in java using AI approaches to satisfy tight constraints and help find the best solution. So far I have implemented both an iterative construct (the most limited first heuristic) and Simulated Annealing, and I am in the process of implementing a genetic algorithm.
Some information about the problem and how I present it then: I have a set of events, rooms, functions (which require events and rooms), students and slots The problem is to assign a slot and room to each event, so that none the student was not supposed to attend two events in one slot, all assigned numbers meet the necessary requirements.
I have a rating function that for each set, if assignments value soft constraint violations, so the point should minimize this.
As I implement GA, I start with the aggregate generated by the iterative construct (which can leave events unassigned), and then follow the usual steps: evaluate, select, cross, mutate, and preserve the best. Rinse and repeat.
My problem is that my solution seems to be improving too little. No matter what I do, populations are prone to random physical form and stuck there. Please note that this suitability is always different, but a lower limit will nevertheless appear.
I suspect the problem is in my crossover function, and here is the logic:
. A B. B ( B):
. 3 .
.
, , , . , .
, SA, , .
. , 100, GA () . - , ?
: