Programowanie liniowe (optymalizacja liniowa) – klasa problemów programowania matematycznego, w której funkcja celu oraz wszystkie warunki ograniczające mają postać liniową. Celem optymalizacji jest znalezienie maksimum lub minimum funkcji celu. Programowanie liniowe znalazło szerokie zastosowanie w teorii decyzji, np. do optymalizacji planu produkcyjnego. Wiele problemów optymalizacyjnych znajduje rozwiązanie poprzez ich sprowadzenie do postaci problemu programowania liniowego.
Definicja problemu optymalizacji liniowej thumb|Optymalizacja liniowa w przestrzeni dwuwymiarowej . Funkcja kosztu jest przedstawiona po lewej za pomocą niebieskich linii poziomic, a po prawej jako niebieska płaszczyzna. Zbiór rozwiązań dopuszczalnych tworzy zielony pięciokąt.|300x300px
thumb|right|Zamknięty obszar dopuszczalny zagadnienia optymalizacyjnego z trzema zmiennymi ma postać wypukłego wielościanu. Powierzchnie odpowiadające stałym wartościom funkcji celu są płaszczyznami (nie pokazano).