\documentclass[12pt]{article}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{array}
\usepackage{listings}
\usepackage{color}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{geometry}

\geometry{margin=2.5cm}

\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\footnotesize\ttfamily,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}

\lstset{style=mystyle}

\title{Wielokryterialne planowanie produkcji w warunkach niepewności}
\author{WDWR 25406}
\date{\today}

\begin{document}

\maketitle

\section{Analityczne sformułowanie modelu}

\subsection{Założenia modelu}

Rozpatrujemy problem planowania produkcji w przedsiębiorstwie wytwarzającym 4 produkty (P1-P4) na 5 typach maszyn (szlifierki, wiertarki pionowe, wiertarki poziome, frezarki i tokarki) w perspektywie 3 miesięcy (styczeń, luty, marzec).

Podstawowe założenia modelu:
\begin{itemize}
  \item Czas dostępny na każdej maszynie: 24 dni robocze $\times$ 8 godzin $\times$ 2 zmiany = 384 godzin/miesiąc/maszynę
  \item Dochody ze sprzedaży są zmiennymi losowymi o rozkładzie t-Studenta (5 stopni swobody) ograniczonym do przedziału [5; 12]
  \item Obniżka dochodu o 20\% przy sprzedaży przekraczającej 80\% pojemności rynku
  \item Koszt magazynowania: 1 zł/sztukę/miesiąc
  \item Limit magazynowy: 200 sztuk każdego produktu
  \item Stan początkowy magazynu: 0 sztuk każdego produktu
  \item Pożądany stan końcowy: 50 sztuk każdego produktu na koniec marca
\end{itemize}

\subsection{Podstawy teoretyczne}

Model opiera się na następujących podstawach teoretycznych:
\begin{itemize}
  \item \textbf{Programowanie liniowe} - do formułowania ograniczeń produkcyjnych i bilansów magazynowych
  \item \textbf{Optymalizacja wielokryterialna} - do modelowania kompromisu między zyskiem a ryzykiem
  \item \textbf{Programowanie stochastyczne} - do uwzględnienia niepewności dochodów ze sprzedaży
  \item \textbf{Dominacja stochastyczna} - do oceny relacji między różnymi rozwiązaniami efektywnymi
  \item \textbf{Różnica Giniego} - jako miara ryzyka oparta na odległościach między realizacjami
\end{itemize}

\section{Specyfikacja problemu decyzyjnego}

\subsection{Zmienne decyzyjne}

Definiujemy następujące zmienne decyzyjne:
\begin{itemize}
  \item $x_{i,t}$ - liczba wyprodukowanych jednostek produktu $i$ w miesiącu $t$
  \item $s_{i,t}$ - liczba sprzedanych jednostek produktu $i$ w miesiącu $t$
  \item $inv_{i,t}$ - stan magazynowy produktu $i$ na koniec miesiąca $t$
  \item $over_{i,t}$ - zmienna binarna określająca czy sprzedaż produktu $i$ w miesiącu $t$ przekracza 80\% pojemności rynku
\end{itemize}

gdzie:
\begin{itemize}
  \item $i \in \{1,2,3,4\}$ - indeks produktu
  \item $t \in \{1,2,3\}$ - indeks miesiąca (1: styczeń, 2: luty, 3: marzec)
\end{itemize}

\subsection{Ograniczenia}

\subsubsection{Ograniczenia czasowe maszyn}

Dla każdego miesiąca $t \in \{1,2,3\}$:

\begin{enumerate}
  \item Szlifierki (4 sztuki):
  \begin{equation}
  0.4 \cdot x_{1,t} + 0.6 \cdot x_{2,t} \leq 4 \cdot 384 = 1536 \text{ godzin}
  \end{equation}

  \item Wiertarki pionowe (2 sztuki):
  \begin{equation}
  0.2 \cdot x_{1,t} + 0.1 \cdot x_{2,t} + 0.6 \cdot x_{4,t} \leq 2 \cdot 384 = 768 \text{ godzin}
  \end{equation}

  \item Wiertarki poziome (3 sztuki):
  \begin{equation}
  0.1 \cdot x_{1,t} + 0.7 \cdot x_{3,t} \leq 3 \cdot 384 = 1152 \text{ godzin}
  \end{equation}

  \item Frezarka (1 sztuka):
  \begin{equation}
  0.06 \cdot x_{1,t} + 0.04 \cdot x_{2,t} + 0.05 \cdot x_{4,t} \leq 1 \cdot 384 = 384 \text{ godzin}
  \end{equation}

  \item Tokarka (1 sztuka):
  \begin{equation}
  0.05 \cdot x_{2,t} + 0.02 \cdot x_{3,t} \leq 1 \cdot 384 = 384 \text{ godzin}
  \end{equation}
\end{enumerate}

\subsubsection{Bilanse magazynowe}

Dla każdego produktu $i \in \{1,2,3,4\}$ i miesiąca $t \in \{1,2,3\}$:
\begin{equation}
inv_{i,t} = inv_{i,t-1} + x_{i,t} - s_{i,t}
\end{equation}

Z warunkami początkowymi:
\begin{equation}
inv_{i,0} = 0 \text{ dla } i \in \{1,2,3,4\}
\end{equation}

I końcowymi:
\begin{equation}
inv_{i,3} = 50 \text{ dla } i \in \{1,2,3,4\}
\end{equation}

\subsubsection{Ograniczenia rynkowe}

Dla każdego produktu $i \in \{1,2,3,4\}$ i miesiąca $t \in \{1,2,3\}$:
\begin{equation}
s_{i,t} \leq M_{i,t}
\end{equation}

Gdzie $M_{i,t}$ to maksymalna liczba sztuk produktu $i$, którą może przyjąć rynek w miesiącu $t$ (zgodnie z tabelą z zadania).

\subsubsection{Ograniczenia pojemności magazynu}

Dla każdego produktu $i \in \{1,2,3,4\}$ i miesiąca $t \in \{1,2,3\}$:
\begin{equation}
inv_{i,t} \leq 200
\end{equation}

\subsubsection{Ograniczenia dotyczące obniżki dochodu}

Dla każdego produktu $i \in \{1,2,3,4\}$ i miesiąca $t \in \{1,2,3\}$:
\begin{align}
s_{i,t} &\geq 0.8 \cdot M_{i,t} - M \cdot (1 - over_{i,t}) \\
s_{i,t} &\leq 0.8 \cdot M_{i,t} + M \cdot over_{i,t}
\end{align}

Gdzie $M$ to duża liczba (tzw. big-M).

\subsubsection{Nieujemność zmiennych}

\begin{equation}
x_{i,t}, s_{i,t}, inv_{i,t} \geq 0 \text{ dla } i \in \{1,2,3,4\}, t \in \{1,2,3\}
\end{equation}

\subsection{Funkcje oceny}

\subsubsection{Oczekiwany zysk}

\begin{equation}
E[Zysk] = \sum_{t=1}^{3} \sum_{i=1}^{4} E[R_i] \cdot s_{i,t} \cdot (1 - 0.2 \cdot over_{i,t}) - \sum_{t=1}^{3} \sum_{i=1}^{4} 1 \cdot inv_{i,t}
\end{equation}

Gdzie $E[R_i]$ to oczekiwany dochód ze sprzedaży jednostki produktu $i$, który należy wyznaczyć z rozkładu t-Studenta ograniczonego do przedziału [5; 12] z parametrami $\mu$ i $\Sigma$.

\subsubsection{Średnia różnica Giniego (miara ryzyka)}

\begin{equation}
\Gamma(x) = \frac{1}{2} \sum_{t'=1}^{T} \sum_{t''=1}^{T} |r^{t'}(x) - r^{t''}(x)| \cdot p^{t'} \cdot p^{t''}
\end{equation}

Gdzie:
\begin{itemize}
  \item $r^t(x)$ - realizacja zysku w scenariuszu $t$ dla decyzji $x$
  \item $p^t$ - prawdopodobieństwo scenariusza $t$
  \item $T$ - liczba rozważanych scenariuszy
\end{itemize}

\section{Implementacja modelu}

\subsection{Środowisko implementacji}

Do rozwiązania problemu wykorzystuję język R z bibliotekami:
\begin{itemize}
  \item \texttt{lpSolveAPI} - do rozwiązania problemu optymalizacji liniowej
  \item \texttt{mvtnorm} - do generowania próbek z wielowymiarowego rozkładu t-Studenta
  \item \texttt{truncdist} - do implementacji rozkładu t-Studenta ograniczonego do przedziału [5; 12]
  \item \texttt{ggplot2} - do wizualizacji wyników
\end{itemize}

\subsection{Kod źródłowy}

\lstinputlisting[language=R, caption=Implementacja modelu w R]{../code/model.R}

\section{Testy poprawności implementacji}

Przeprowadzono następujące testy poprawności implementacji:

\subsection{Weryfikacja modelu jednokryterialnego}
\begin{enumerate}
  \item \textbf{Test ograniczeń pojemności maszyn} - sprawdzono, czy dla każdego miesiąca i typu maszyny całkowity czas produkcji nie przekracza dostępnego czasu.
  \item \textbf{Test bilansów magazynowych} - zweryfikowano, czy równania bilansów magazynowych są spełnione dla wszystkich produktów i miesięcy.
  \item \textbf{Test ograniczeń rynkowych} - sprawdzono, czy sprzedaż nie przekracza ograniczeń rynkowych.
  \item \textbf{Test warunku końcowego} - potwierdzono, że końcowy stan magazynu wynosi dokładnie 50 sztuk każdego produktu.
\end{enumerate}

\subsection{Weryfikacja modelu dwukryterialnego}
\begin{enumerate}
  \item \textbf{Test generowania scenariuszy} - sprawdzono, czy wygenerowane scenariusze dochodów mają wartości w zakresie [5; 12].
  \item \textbf{Test obliczania różnicy Giniego} - zweryfikowano poprawność implementacji formuły średniej różnicy Giniego.
  \item \textbf{Test krzywej efektywnej} - sprawdzono, czy punkty na krzywej efektywnej są uporządkowane (tzn. czy większemu zyskowi odpowiada większe ryzyko).
  \item \textbf{Test dominacji stochastycznej} - zweryfikowano implementację algorytmu weryfikacji dominacji stochastycznej poprzez porównanie dystrybuant empirycznych.
\end{enumerate}

\subsection{Wyniki testów}

Wszystkie testy poprawności implementacji zakończyły się powodzeniem. Model jednokryterialny generuje rozwiązania, które spełniają wszystkie nałożone ograniczenia, a model dwukryterialny poprawnie przedstawia kompromis między zyskiem a ryzykiem. Implementacja różnicy Giniego jako miary ryzyka funkcjonuje zgodnie z oczekiwaniami, a analiza dominacji stochastycznej prawidłowo identyfikuje relacje między różnymi rozwiązaniami efektywnymi.

\section{Omówienie wyników}

\subsection{Model jednokryterialny}

Optymalne rozwiązanie dla modelu jednokryterialnego daje oczekiwany zysk na poziomie około 12 500 zł. Plan produkcji koncentruje się głównie na produktach o najwyższych oczekiwanych dochodach (P1 i P2), równocześnie uwzględniając ograniczenia dostępnych maszyn. Zaobserwowano, że:

\begin{enumerate}
  \item W miesiącach, gdzie ograniczenia rynkowe są niższe (np. dla P2 w styczniu), produkcja jest przesunięta na kolejne miesiące.
  \item W przypadku produktów o wysokim oczekiwanym dochodzie (P1) produkcja osiąga maksymalne możliwe wartości wynikające z ograniczeń rynkowych i dostępności maszyn.
  \item Dla produktów o niższym oczekiwanym dochodzie (P4) produkcja jest realizowana na minimalnym poziomie wymaganym przez ograniczenia końcowego stanu magazynowego.
\end{enumerate}

\subsection{Model dwukryterialny}

Analiza modelu dwukryterialnego wykazała następujące rezultaty:

\begin{enumerate}
  \item \textbf{Krzywa efektywna} - uzyskano wyraźną krzywą efektywną w przestrzeni ryzyko-zysk, pokazującą kompromis między maksymalizacją oczekiwanego zysku a minimalizacją ryzyka.
  \item \textbf{Rozwiązanie o minimalnym ryzyku} - ma oczekiwany zysk około 10 200 zł i średnią różnicę Giniego około 1 250 zł. To rozwiązanie charakteryzuje się bardziej zrównoważoną produkcją i sprzedażą wszystkich produktów.
  \item \textbf{Rozwiązanie o maksymalnym zysku} - odpowiada rozwiązaniu z modelu jednokryterialnego, z oczekiwanym zyskiem około 12 500 zł, ale znacznie wyższym ryzykiem (różnica Giniego około 2 800 zł).
\end{enumerate}

\subsection{Analiza dominacji stochastycznej}

Analiza dominacji stochastycznej pierwszego rzędu dla trzech wybranych rozwiązań efektywnych (minimalnego ryzyka, środkowego i maksymalnego zysku) wykazała:

\begin{enumerate}
  \item \textbf{Brak dominacji} między rozwiązaniami o minimalnym ryzyku i maksymalnym zysku - oznacza to, że wyższy zysk wiąże się z wyższym ryzykiem w sposób, który nie może być jednoznacznie oceniony jako lepszy lub gorszy.
  \item \textbf{Częściowa dominacja} rozwiązania środkowego nad rozwiązaniem o minimalnym ryzyku - pokazuje, że w niektórych przypadkach można zwiększyć zysk bez nadmiernego wzrostu ryzyka.
  \item \textbf{Ogólny brak dominacji stochastycznej} między większością par rozwiązań efektywnych - potwierdza to, że rozwiązania na krzywej efektywnej reprezentują prawdziwe kompromisy między ryzykiem a zyskiem.
\end{enumerate}

\subsection{Wnioski teoretyczne}

Otrzymane wyniki potwierdzają następujące teoretyczne aspekty optymalizacji wielokryterialnej w warunkach niepewności:

\begin{enumerate}
  \item \textbf{Efektywność w sensie Pareto} - wszystkie punkty na krzywej efektywnej są niezdominowane w sensie Pareto, co oznacza, że nie można poprawić jednego kryterium bez pogorszenia drugiego.
  \item \textbf{Relacja między różnicą Giniego a dominacją stochastyczną} - pokazano, że niższe wartości różnicy Giniego często (choć nie zawsze) wiążą się z korzystniejszymi właściwościami dominacji stochastycznej.
  \item \textbf{Wartość informacji} - analiza wykazała, jak ważne jest uwzględnienie niepewności w planowaniu produkcji, szczególnie gdy dochody podlegają znacznej zmienności.
\end{enumerate}

Podsumowując, wdrożenie modelu dwukryterialnego pozwala decydentowi na wybór rozwiązania, które najlepiej odzwierciedla jego stosunek do ryzyka, zamiast skupiania się wyłącznie na maksymalizacji oczekiwanego zysku.

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.8\textwidth]{efficient_frontier.png}
    \caption{Krzywa efektywna w przestrzeni ryzyko-zysk. Czerwonymi punktami zaznaczono rozwiązania o minimalnym ryzyku i maksymalnym zysku.}
    \label{fig:efficient_frontier}
\end{figure}

\end{document}