praca_magisterska/pytania/odpowiedzi/30-modelowanie-matematyczne-decyzje.md

283 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
1. **Model:** Zmienne + funkcja celu + ograniczenia
2. **Big-M:** Unikaj dużych M, tight formulation
3. **Symetria:** Symmetry breaking constraints
4. **Walidacja:** Extreme cases, known solutions
5. **Wrażliwość:** Shadow prices, reduced costs
---
## 📖 Źródła
1. Williams - "Model Building in Mathematical Programming"
2. Wolsey - "Integer Programming"
3. Nemhauser, Wolsey - "Integer and Combinatorial Optimization"