\item Zaproponować jednokryterialny model wyboru w warunkach ryzyka z wartością oczekiwaną jako
miarą zysku. Wyznaczyć rozwiązanie optymalne.
\item Jako rozszerzenie powyższego zaproponować dwukryterialny model zysku i ryzyka ze średnią
jako miarą zysku i średnią różnicą Giniego jako miarą ryzyka. Dla decyzji
$\mathbf{x}\in Q$ średnia różnica Giniego jest definiowana jako
$\Gamma(\mathbf{x})=\frac{1}{2}\sum_{t'=1}^{T}\sum_{t"=1}^{T}\lvert r_{t'}(\mathbf{x})-r_{t"}(\mathbf{x})\rvert p_{t'}p_{t"}$, gdzie $r_{t'}(\mathbf{x})$
oznacza realizację dla scenariusza t, $p_{t}$ prawdopodobieństwo scenariusza t.
\begin{enumerate}
\item Wyznaczyć obraz zbioru rozwiązań efektywnych w przestrzeni zysk-ryzyko.
\item Wskazać rozwiązania efektywne minimalnego ryzyka i maksymalnego zysku. Jakie odpowiadają im
wartości w przestrzeni ryzyko-zysk?
\item Wybrać trzy dowolne rozwiązania efektywne. Sprawdzić, czy zachodzi pomiędzy nimi relacja
dominacji stochastycznej pierwszego rzędu. Wyniki skomentować, odnieść do ogólnego przypadku.
Zmienne decyzyjne stanowią wartości kontrolowane przez podmiot podejmujący decyzje i są fundamentalne dla rozwiązywanego problemu. Zadaniem optymalizatora jest wyznaczenie takich wartości tych zmiennych, które umożliwią osiągnięcie optymalnego rozwiązania. W tabeli zawierającej zmienne decyzyjne modelu zaprezentowano zmienne decyzyjne zastosowane w modelu wraz z ich szczegółowymi opisami. Przyjęto tę samą konwencję nazewnictwa, co w przypadku parametrów modelu.
produce[numberOfMonths][numberOfProductsTypes] & Macierz zawierające ilości wytwarzanych sztuk danego typu produktu w danym miesiącu \\
sell[numberOfMonths][numberOfProductsTypes] & Macierz zawierająca ilości sprzedawanych sztuk danego typu produktu w danym miesiącu \\
stock[numberOfMonths][numberOfProductsTypes] & Macierz zawierająca ilości sztuk danego typu produktu znajdujących się w magazynie w danym miesiącu \\
workTime[numberOfMonths][numberOfMachineTypes][numberOfProductsTypes] & Macierz zawierająca czas pracy każdej maszyny dla każdego typu produktu w kazdym miesiącu \\
if80prec[numberOfMonths][numberOfProductsTypes] & Macierz zmiennych binarnych (1 jeśli sprzedaż danego produktu w danym miesiącu przekroczyła 80\% wartości maksymalnej, 0 - w przeciwnym wypadku)\\
lowerProfit[numberOfScenarios][numberOfMonths][numberOfProductsTypes] & Macierz przechowująca kwoty, jaką należy odjąć od zysków z poszczególnych typów produktów w poszczególnych miesiącach, ze względu na przekroczenie 80\% pojemności rynku. Zmienna niezbędna do wyeliminowania obecności zmiennej binarnej w funkcji oceny\\
\item Ograniczenie czasowe pracy maszyn - Każda maszyna może pracować maksymalnie \textit{numberOfHoursInFactory} godzin w miesiącu, zatem łączny czas pracy wszystkich maszyn danego typu nie może przekroczyć iloczynu liczby dostępnych maszyn tego typu i czasu \textit{numberOfHoursInFactory}.
\item Ograniczenie wiążące czas pracy maszyn z produkcją - czas wykorzystania określonego typu maszyny jest równy sumie iloczynów liczby wytworzonych jednostek każdego produktu i czasu potrzebnego na obróbkę jednej jednostki tego produktu na danej maszynie:
\item Ograniczenie sprzedaży do liczby sztuk wyprodukowanych oraz dostępnych w magazynie. Dla pierwszego miesiąca ograniczenie przyjmuje formę:
\begin{equation}
\bigforall_{\substack{
m \in months\\
p \in products}} sell[m][p] <= produce[m][p]+storageStart[p]
\end{equation}
Dla każdego następnego miesiąca:
\begin{equation}
\bigforall_{\substack{
m \in months\\
p \in products}} sell[m][p] <= produce[m][p] + stock[m-1][p]
\end{equation}
\item Ograniczenie określające stan magazynu na koniec miesiąca jako różnicę między sumą produktów wyprodukowanych i dostępnych na początku miesiąca a liczbą sprzedanych jednostek. Dla pierwszego miesiąca:
\begin{equation}
\bigforall_{\substack{
m \in months\\
p \in products}} stock[m][p]==(produce[m][p] + storageStart[p])-sell[m][p]
\end{equation}
Dla każdego następnego miesiąca:
\begin{equation}
\bigforall_{\substack{
m \in months\\
p \in products}} stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p]
Funkcja celu w modelu jednokryterialnym polega na maksymalizacji wartości oczekiwanej zysku ze wszystkich analizowanych scenariuszy. W każdym ze scenariuszy zastosowano funkcję zysku o następującej postaci
\subsubsection{Generacja scenariusz dochodów ze sprzedaży}
Przychody ze sprzedaży poszczególnych typów produktów definiowane są przez wektor losowy opisany w treści zadania. W celu wygenerowania wektorów reprezentujących poszczególne scenariusze przychodów zastosowano bibliotekę MASS języka R. Implementacja została wykonana w środowisku R Studio IDE, a skrypt generujący dane zapisano w pliku dołączonym jako załącznik 1 - \textit{t-student.R}. W ramach przeprowadzonej symulacji wygenerowano 1000 scenariuszy realizacji przychodów.
\subsubsection{Model}
Model zaimplementowano w środowisku IBM ILOG CPLEX Optimization Studio z wykorzystaniem solvera CPLEX. Nazewnictwo parametrów oraz zmiennych decyzyjnych jest zgodne z opisem zawartym w tabelach \ref{tab:param} i \ref{tab:var}. Plik \textit{wdwr17421-1.dat} (załącznik 2) zawiera definicje parametrów modelu, natomiast plik \textit{wdwr17421-1.mod} (załącznik 3) obejmuje wczytywanie parametrów, definicje zmiennych decyzyjnych, funkcji celu oraz ograniczeń modelu. W celu uproszczenia implementacji przyjęto numeryczne oznaczenia dla miesięcy, produktów oraz procesów technologicznych. Miesiące numerowane są chronologicznie, produkty zgodnie z indeksem występującym w nazwie (P1-P4), natomiast procesy technologiczne według poniższej sekwencji:
Ze względu na znaczne rozmiary macierzy lowerProfit pominięto jej przedstawienie w niniejszym raporcie. Kompletne wyniki działania solvera zostały załączone do dokumentu jako załącznik 4.
\subsection{Wnioski}
Na podstawie przeprowadzonej analizy można stwierdzić, że zdolności produkcyjne przedsiębiorstwa znacznie przewyższają chłonność rynku. W kontekście maksymalizacji zysku, w określonych miesiącach ekonomicznie uzasadniona jest sprzedaż poszczególnych produktów mimo przekroczenia 80\% pojemności rynkowej. Optymalna strategia nie wymaga gromadzenia zapasów ponad obligatoryjne minimum magazynowe.
\section{Model dwukryterialny zysku i ryzyka}
\subsection{Model zadania}
Model przedsiębiorstwa został zachowany w niezmienionej formie w porównaniu do pierwszej części zadania. Miarą zysku pozostaje wartość oczekiwana, która w przypadku scenariuszy o równym prawdopodobieństwie odpowiada wartości średniej. Miara ryzyka w niniejszym zadaniu jest reprezentowana przez średnią różnicę Giniego określoną następującym wzorem:
Model preferencji oparto na minimalizacji ryzyka przy zadanym poziomie średniego zysku.
\begin{equation}
avgProfit<minAvgProfit
\end{equation}
\begin{equation}
minimize giniRisk
\end{equation}
minAvgProfit stanowi dodatkowy parametr modelu. Załączniki 5 i 6 zawierają pliki z parametrami i modelem zadania dwukryterialnego wyboru - pliki źródłowe przeznaczone dla solvera CPLEX.
\subsection{Zbiór rozwiązań efektywnych w przestrzeni ryzyko-zysk}
Na rysunku \ref{fig:profit-risk} zaprezentowano rozwiązania efektywne modelu w przestrzeni ryzyko-zysk. Niebieskie trójkąty oznaczają rozwiązania efektywne dla różnych wartości wymaganego poziomu zysku. Uwzględniając ograniczenia obliczeniowe komputera, wygenerowano 52 równomiernie rozmieszczone rozwiązania, z których każde bazuje na 30 scenariuszach. Wprowadzono ograniczenie czasowe działania solvera dla pojedynczego rozwiązania na poziomie 5 minut. Całkowity czas obliczeń przekroczył 3 godziny. Załączniki 7 i 8 obejmują pliki parametrów oraz modelu wraz ze skryptem dla solvera CPLEX, które zostały wykorzystane do uzyskania rozwiązań. Kolorem żółtym wyróżniono rozwiązanie maksymalnego zysku oraz minimalnego ryzyka. Wartości odpowiadające tym rozwiązaniom przedstawiono w tabeli \ref{tab:min-max}.
\subsection{Rozwiązania efektywne minimalnego ryzyka i maksymalnego zysku}
Na wykresie \ref{fig:profit-risk} żółtymi punktami wyznaczono rozwiązania charakteryzujące się maksymalnym zyskiem oraz minimalnym ryzykiem. Wartości w przestrzeni ryzyko-zysk dla tych rozwiązań przedstawiono w tabeli \ref{tab:min-max}.
\begin{table}[ht!]
\label{tab:min-max}
\caption{Rozwiązania maksymalnego zysku i minimalnego ryzyka}
Rozwiązanie zadania jednokryterialnego maksymalizacji zysku charakteryzuje się również maksymalizacją poziomu ryzyka, podczas gdy zadanie minimalizacji ryzyka bez nałożenia ograniczeń na poziom zysku prowadzi do ujemnego wyniku finansowego (straty) wynikającego z rezygnacji ze sprzedaży oraz ponoszenia kosztów utrzymania obligatoryjnych zapasów magazynowych.
W celu analizy dominacji stochastycznej pierwszego rzędu (FSD) wybrano 3 rozwiązania efektywne modelu, oznaczone jako A, B oraz C. Wartości średniego zysku oraz miary ryzyka dla tych rozwiązań zostały zaprezentowane w tabeli \ref{tab:abc}. Wybór objął rozwiązania charakteryzujące się zbliżonymi poziomami średniego zysku, przy różnicy wynoszącej około 500 zł. Załączniki 9 i 10 zawierają pliki parametrów oraz modelu wraz ze skryptem dla solvera CPLEX, wykorzystane do generowania danych dotyczących zysku i ryzyka w poszczególnych scenariuszach.
\begin{table}[ht!]
\label{tab:abc}
\caption{Rozwiązania wybrane do analizy dominacji FSD}
Rysunek \ref{fig:FSD-risk} przedstawia odwrotną dystrybuantę rozkładu średniej różnicy Giniego jako miary ryzyka między scenariuszami dla tych samych trzech rozwiązań efektywnych. W kontekście miary ryzyka rozwiązanie A wykazuje dominację nad rozwiązaniami B i C, podczas gdy rozwiązanie B nie dominuje w sposób kategoryczny rozwiązania C. Przyczyna tego zjawiska jest związana z przecięciem się dystrybuant w punkcie oznaczonym kolorem żółtym na wykresie przedstawionym na rysunku \ref{fig:FSD-profit}.