9.2 KiB
Pytanie 30: Modelowanie matematyczne dla problemów decyzyjnych
Pytanie
"Omówić metody oraz typowe problemy w modelowaniu matematycznym dla problemów decyzyjnych i optymalizacyjnych."
Przedmiot: MOM (Metody Optymalizacji Matematycznej)
📚 Odpowiedź główna
1. Struktura modelu matematycznego
┌─────────────────────────────────────────────────────────────────┐
│ MODEL OPTYMALIZACYJNY │
├─────────────────────────────────────────────────────────────────┤
│ │
│ min/max f(x) ← Funkcja celu │
│ │
│ subject to: │
│ g_i(x) ≤ 0 ← Ograniczenia nierównościowe │
│ h_j(x) = 0 ← Ograniczenia równościowe │
│ x ∈ X ← Dziedzina zmiennych │
│ │
│ gdzie x = (x₁, x₂, ..., xₙ) ∈ ℝⁿ (lub ℤⁿ, {0,1}ⁿ) │
│ │
└─────────────────────────────────────────────────────────────────┘
2. Metody modelowania
2.1 Etapy tworzenia modelu
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ PROBLEM │ → │ MODEL │ → │ ROZWIĄZANIE│ → │ WALIDACJA │
│ RZECZYWISTY│ │ MATEMATYCZNY│ │ OPTYMALNE │ │ I WDROŻENIE│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
↓ ↓ ↓ ↓
Analiza Zmienne, Solver, Interpretacja,
wymagań funkcja celu, algorytm analiza wrażliwości
ograniczenia
2.2 Typy modeli
| Typ | Charakterystyka | Przykład |
|---|---|---|
| LP (Linear Programming) | Liniowa f(x), liniowe g, h | Transport, alokacja |
| QP (Quadratic) | Kwadratowa f(x), liniowe ograniczenia | Portfolio |
| NLP (Nonlinear) | Nieliniowe f, g lub h | Engineering design |
| MIP (Mixed Integer) | Zmienne ciągłe + całkowite | Scheduling, routing |
| MINLP | Całkowitoliczbowe + nieliniowe | Najtrudniejsze |
3. Typowe problemy w modelowaniu
3.1 Wybór zmiennych decyzyjnych
Problem: Ile zmiennych? Jakie typy?
Przykład - planowanie produkcji:
Źle: x = "plan produkcji" (zbyt ogólne)
Dobrze:
x_it = ilość produktu i w okresie t (ciągła)
y_it = czy produkujemy i w t (binarna)
z_ijt = transport z i do j w t (całkowita)
Zasady:
✓ Zmienne muszą być mierzalne
✓ Zmienne muszą być kontrolowalne
✓ Minimalna liczba dla pełnego opisu
3.2 Problem Big-M
Modelowanie implikacji: y=1 → x ≤ 5
Zła formulacja (słaba relaksacja):
x ≤ 5 + M(1-y), gdzie M = 10^6
Lepsza formulacja:
x ≤ 5 + (UB_x - 5)(1-y), gdzie UB_x = upper bound na x
Indicator constraints (jeśli solver wspiera):
y = 1 → x ≤ 5 (bezpośrednio)
Problem: Duże M → słaba LP relaxation → wolny B&B
3.3 Symetria
Problem: Wiele równoważnych rozwiązań optymalnych
Przykład - bin packing:
Bin 1: {A, B}, Bin 2: {C}
Bin 1: {C}, Bin 2: {A, B} ← ta sama wartość!
Rozwiązanie - symmetry breaking:
x[i][1] ≥ x[i][2] ≥ x[i][3] ... (lexicographic ordering)
Lub: użyj indeksu pierwszego użycia pojemnika
3.4 Walidacja modelu
| Test | Opis |
|---|---|
| Extreme cases | Czy model działa dla skrajnych danych? |
| Known solutions | Czy odtwarza znane rozwiązania? |
| Dimensional analysis | Czy jednostki się zgadzają? |
| Sensitivity analysis | Jak rozwiązanie reaguje na zmiany? |
| Infeasibility | Czy model ma rozwiązanie dopuszczalne? |
4. Techniki modelowania
4.1 Linearyzacja
Problem: xy (iloczyn zmiennych ciągłych)
McCormick envelopes:
w ≥ x·LB_y + y·LB_x - LB_x·LB_y
w ≥ x·UB_y + y·UB_x - UB_x·UB_y
w ≤ x·LB_y + y·UB_x - LB_y·UB_x
w ≤ x·UB_y + y·LB_x - UB_y·LB_x
Problem: |x| (wartość bezwzględna)
Modelowanie:
min z
z ≥ x
z ≥ -x
4.2 Modelowanie warunków logicznych
Alternatywa (OR): x ≤ 5 ∨ y ≤ 3
x ≤ 5 + M(1-z)
y ≤ 3 + Mz
z ∈ {0,1}
Koniunkcja (AND): x ≤ 5 ∧ y ≤ 3
x ≤ 5
y ≤ 3 (po prostu oba ograniczenia)
4.3 Piece-wise linear functions
f(x) = różne liniowe segmenty
f(x)
↑
│ /
│ /
│ /
│ /____
│/
└────────→ x
Modelowanie SOS2 (Special Ordered Set type 2):
f(x) = Σ λ_i · f(breakpoint_i)
x = Σ λ_i · breakpoint_i
Σ λ_i = 1
λ ≥ 0, max 2 sąsiednie λ_i > 0
5. Wielokryterialne podejmowanie decyzji
min f₁(x), f₂(x), ..., f_k(x) ← konfliktujące cele
Metody:
1. WEIGHTED SUM:
min Σ w_i · f_i(x)
Problem: nie znajduje wszystkich Pareto-optymalnych
2. ε-CONSTRAINT:
min f₁(x)
s.t. f_i(x) ≤ ε_i, i=2..k
3. GOAL PROGRAMMING:
min Σ |f_i(x) - target_i|
4. PARETO FRONT:
Znajdź wszystkie niezdominowane rozwiązania
6. Analiza wrażliwości
┌─────────────────────────────────────────────────────────────────┐
│ Co się zmieni gdy zmienią się dane wejściowe? │
├─────────────────────────────────────────────────────────────────┤
│ Shadow price (dual variable): │
│ - Ile warta jest jednostka zasobu? │
│ - Δf = λ · Δb (dla małych zmian RHS) │
│ │
│ Reduced cost: │
│ - O ile musi się zmienić c_j żeby x_j wszedł do bazy? │
│ │
│ Range analysis: │
│ - Przedział zmian parametrów bez zmiany optymalnej bazy │
└─────────────────────────────────────────────────────────────────┘
7. Częste błędy
| Błąd | Konsekwencja | Rozwiązanie |
|---|---|---|
| Brak bounds | Unbounded lub słaba relaxation | Zawsze definiuj LB, UB |
| Za duże M | Numerical issues, wolne | Tight big-M |
| Redundantne ograniczenia | Wolniejsze, confusion | Minimalizuj |
| Zła skala | Numerical instability | Scaling, rescaling |
| Over-modeling | Za złożone, wolne | Simplify, aggregate |
🧠 Mnemoniki
"VCO = Variables, Constraints, Objective":
Trzy elementy modelu matematycznego
"Big-M = Big Mistake (jeśli źle użyte)":
Unikaj dużych M, tight bounds
"PASS = Pareto, Analysis, Sensitivity, Symmetry":
Kluczowe zagadnienia zaawansowane
❓ Pytania dodatkowe
Q1: "Jak sprawdzić czy model jest poprawny?"
Odpowiedź: Testy na znanych instancjach, extreme cases, dimensional analysis, sprawdzenie czy relaksacja LP daje sensowne wyniki, analiza IIS dla infeasible.
Q2: "Kiedy linearyzować a kiedy użyć NLP?"
Odpowiedź: Linearyzuj gdy: nieliniowość jest "miękka", solver MIP szybszy niż NLP, potrzebujesz gwarancji optimum. NLP gdy: silna nieliniowość, ciągłe zmienne, akceptowalny local optimum.
Q3: "Jak obsłużyć niepewność w modelu?"
Odpowiedź: Stochastic programming (scenariusze), robust optimization (worst-case), chance constraints, sensitivity analysis. Wybór zależy od charakteru niepewności.
🎯 Kluczowe punkty
- Model: Zmienne + funkcja celu + ograniczenia
- Big-M: Unikaj dużych M, tight formulation
- Symetria: Symmetry breaking constraints
- Walidacja: Extreme cases, known solutions
- Wrażliwość: Shadow prices, reduced costs
📖 Źródła
- Williams - "Model Building in Mathematical Programming"
- Wolsey - "Integer Programming"
- Nemhauser, Wolsey - "Integer and Combinatorial Optimization"