I'm in a project where we need to automaticly create a matchmaking schedule.
The schedule is used to match companies to other companies and make new buinessrelations.

We have fixed companies that has a unique room and we have flexible companies that moves around
to the different fixed companies.
The fixed companies can either choose to start at the standard time or can start later if, for example, the fixed company is delayed for some reason. Also if a fixed company should have denied to meet a specific flexible company, they should not have a sheduled meeting.

The algorithm should create a optimal schedule from these companies where the flexible companies meetings should be as close as possible so the delay between meetings is minimal.

I have some ideas but I would like to hear some of your advise on these, or maybe help me to design the algorithm?