We consider the problem of dynamically routing a driver to cover a sequence of tasks (with no consolidation), using a complex set of driver attributes and operational rules. Our We consider the problem of routing and scheduling a heterogeneous set of drivers to cover a known set of tasks. There is a reward for covering each task, and not all the tasks have to be covered. The reward received can depend on when a task is covered, and the cost of covering a task can be dependent, in an arbitrary way, on the characteristics of the driver. After a driver has finished one task, he may be free to cover another task, although subsequent assignments have to obey hours of service regulations and service commitments on tasks. A driver may or may not have to return home at the end of a shift, and we may be planning tours for the driver for several days into the future. A driver can handle only one task at a time; there is no in-vehicle consolidation. A task might represent a job that has to be performed at a specific location, but our work is motivated by applications where the task involves moving a load of freight from one location to another, thereby adding a spatial element to the problem.The construction of each tour is subject to various constraints, such as government regulations on driver hours and constraints associated with each task. For example, each task has an associated time window and the driver must arrive at the origin and destination of the task between their respective time windows. Other constraints might reflect driver capabilities and load characteristics; for example, the load might require a driver with certain training or a specific type of tractor. Because there are very few hard constraints in real-time operations, assignments that violate stated goals are assessed penalties according to a function that varies according to the constraint violation. Similar penalty functions can also be constructed for other assignment rules and calibrated to simulate the human decision process. This paper presents two algorithms, which are optimization-based heuristics, that solve this type of problem, which we refer to as the dynamic assignment problem. Our work is motivated by the need to solve these problems in a real-time setting. This need imposes three constraints on our solution approach. First, the run times must be exceptionally fast. In real problems, data updates can come in every few seconds, so the algorithm must be able to produce a revised solution very quickly for problems with perhaps 500 drivers. As a result, the algorithm must be amenable to finding new solutions given 50 Transportation Science,