A technique that modifies gradient updates to satisfy constraints by projecting them onto allowed directions.