Dynamic scheduling problems are ubiquitous: traffic lights, elevators, planning of manufacturing plants, air traffic control, etc. Tasks have to be put on a timeline as smart as possible to reach certain goals. These goals may be related to production costs, the use of (scarce) resources, deadlines. These problems have often been regarded statically: a schedule is made that seems best for the situation as it is observed now. However, with dynamic problems, the situation changes continually. For example, you may assign passengers to elevators in a manner that seems optimal now, but a new passenger presses a button 3 seconds later, making you think: if I had known this before, I would have made a different schedule. This dissertation is about techniques to make schedules robust and/or flexible. A robust planning stands the tide of change: it only has to be modified slightly when change occurs. A flexible schedule makes it easy for future tasks to be inserted. Robustness and flexibility are two sides of the same medal. One is focused on currently known tasks, the other on future (yet unknown) tasks. The dissertation contains an elaborate case study on elevator dispatching. Various scheduling techniques have been tried, in simulation, on an existing building in Paris, of which detailed passenger data were available. Some of these techniques came out as promising. A remarkably successful technique involved advancing the scheduling horizon. Instead of focusing on individual passengers, this technique focused on elevators as a whole, making them finish whatever they're doing as soon as possible. On short term, this seemed worse for passengers (e.g., more stop overs), but on the long term, the average waiting and travelling times were significantly reduced.