Mixed-model assembly lines are used to produce many different products without carrying large inventories. The effective utilization of these lines requires that a schedule for assembling the different products be determined. For Just-In-Time (JIT) production systems, which require producing only the necessary products in the necessary quantities at the necessary times, the objective is to keep a constant rate of usage of all parts used by the line. This is called levelling or balancing the schedule. This paper develops a theoretical basis for scheduling these systems, and presents new scheduling algorithms and heuristics.