A variant of dynamic programming that first estimates unknown functions (like demand) from data, then uses those estimates for optimization.