Agent-based architecture for the dynamic timetabling problem