Programowanie liniowe to klasa problemów programowania matematycznego, w której wszystkie warunki ograniczające oraz funkcja celu posiadają osoba liniową. Warunki ograniczające posiadają postać:



Mamy zmaksymalizować albo zminimalizować funkcję celu, także liniową:

Zmienne xi są liczbami rzeczywistymi.
Naturalnie nie stale taki problem ma jakiekolwiek rozwiązanie, np.:


Być może też żadne rozwiązanie nie jest optymalne, albowiem potrafimy uzyskać dowolnie dużą wartość funkcji celu, np.:
- Zmaksymalizuj
przy warunku

Programowanie liniowe znalazło szerokie zastosowanie w teorii decyzji, np. do optymalizacji planu produkcyjnego. Wiele problemów optymalizacyjnych znajduje rozwiązanie poprzez sprowadzenie ich do postaci dylematu programowania liniowego.
Osoba standardowa
Osoba standardowa to taka, w której funkcja celu ma być maksymalizowana, są tylko warunki postaci:

oraz na każdą zmienną nałożony jest warunek:

Można więc zapisać:


czyli ograniczenia w postaci standardowej da się w sposób ogólny zapisać bardziej zwięźle:

Jeszcze zwięźlej ujmuje się to zagadnienie w postaci macierzowej:
Zmaksymalizować funkcję celu 

przy ograniczeniach

gdzie:

Sprowadzanie do postaci standardowej
Żeby przekształcić problem do postaci standardowej, zamiany maksymalizacji na minimalizacje, oraz warunków mniejsze-równe, na większe-równe dokonuje się przez zamiane znaków przy współczynnikach. Jeśli mamy warunek:

To jest on równoważny parze warunków:


Czyli:


Jeśli na zmienną
nie ma ograniczenia, że musi przyjmować tylko wartości dodatnie, wprowadzamy 2 nowe zmienne
oraz
oraz zamieniamy wszystkie wystąpienia tej zmiennej na
. Na obie nowe zmienne możemy już nałożyć ograniczenie, że są one nieujemne.
Osoba równościowa
Osoba równościowa (kanoniczna) to taka, w której funkcja celu ma być zmaksymalizowana, wszystkie warunki są równościami, a na wszystkie zmienne nakłada się warunek, że są nieujemne.
Żeby pozbyć się nierówności:

Wprowadzamy nową zmienną
, która może przyjmować tylko wartości nieujemne oraz przekształcamy równanie do postaci:


I analogicznie dla mniejsze-równe, z odwróconym znakiem.
Zwykle chcemy przepisać te równania do postaci:

Tak, że zmienne występujące po lewej stronie równań nie są nigdzie indziej (ani po prawej stronie równań, ani w funkcji celu).
Z układem takim wiąże się rozwiązanie podstawowe – takie, w którym wszystkie zmienne oprócz lewostronnych posiadają przypisaną wartość zero, natomiast wszystkie lewostronne oraz funkcja celu posiadają wartość równą wartości odpowiednich stałych.



Rozwiązaniem podstawowym tego układu jest (0, 0, 0, 5, -2), oraz wartością funkcji celu jest 2.
Rozwiązanie podstawowe nie stale musi spełniać wszystkie warunki nieujemności (w tym przypadku niespełniony jest warunek na
). Przekształcenie równania, które zachowuje zbiór prawidłowych rozwiązań może zmieniać nam rozwiązanie podstawowe – taka jest zresztą idea podstawowego algorytmu programowania liniowego, algorytmu sympleksu.
Sprawdź też
Linki zewnętrzne