diff --git a/Programming/WDWR/projekt/doc/main.pdf b/Programming/WDWR/projekt/doc/main.pdf index 6cd9a161..65476b43 100644 Binary files a/Programming/WDWR/projekt/doc/main.pdf and b/Programming/WDWR/projekt/doc/main.pdf differ diff --git a/Programming/WDWR/projekt/doc/main.tex b/Programming/WDWR/projekt/doc/main.tex index 486ff9f5..1b620592 100644 --- a/Programming/WDWR/projekt/doc/main.tex +++ b/Programming/WDWR/projekt/doc/main.tex @@ -1,10 +1,24 @@ -\documentclass[11pt,a4paper]{article} +\documentclass[44pt,a4paper]{article} + \usepackage[utf8]{inputenc} -\usepackage[inner=2.5cm,outer=2.5cm, tmargin=2.5cm,bmargin=2.5cm]{geometry} \usepackage{amsmath} \usepackage{relsize,amsfonts} \usepackage{enumitem} \usepackage{graphicx} +\usepackage{anyfontsize} +\usepackage{fix-cm} + +% Scale all text by factor of 4 +\renewcommand{\normalsize}{\fontsize{44}{50}\selectfont} +\renewcommand{\large}{\fontsize{52}{58}\selectfont} +\renewcommand{\Large}{\fontsize{60}{68}\selectfont} +\renewcommand{\LARGE}{\fontsize{72}{80}\selectfont} +\renewcommand{\huge}{\fontsize{88}{96}\selectfont} +\renewcommand{\Huge}{\fontsize{104}{112}\selectfont} +\renewcommand{\small}{\fontsize{36}{42}\selectfont} +\renewcommand{\footnotesize}{\fontsize{32}{38}\selectfont} +\renewcommand{\scriptsize}{\fontsize{28}{34}\selectfont} +\renewcommand{\tiny}{\fontsize{20}{24}\selectfont} \newcommand\bigexists{% \mathop{\lower0.75ex\hbox{\ensuremath{% @@ -16,14 +30,17 @@ \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% \limits} -\title{Wspomaganie Decyzji w Warunkach Ryzyka\\\large \medskip Projekt: WDWR 25406\\} -\author{Krzysztof Rudnicki 307585} +\title{Wspomaganie Decyzji w Warunkach Ryzyka\\ Projekt numer 25406\\} +\author{Krzysztof Rudnicki\\ numer albumu: 307585} \date{\today} \begin{document} \maketitle +\tableofcontents +\newpage + \section*{Treść zadania} \addcontentsline{toc}{section}{Treść zadania} Rozważmy następujące zagadnienie planowania produkcji: @@ -108,90 +125,96 @@ Rozważmy następujące zagadnienie planowania produkcji: \end{enumerate} \end{enumerate} -\section{Jednokryterialny model wyboru} +\section{Wstęp teoretyczny} +\addcontentsline{toc}{section}{Wstęp teoretyczny} Model jednokryterialny wyboru w warunkach ryzyka został zaprojektowany w celu identyfikacji rozwiązania optymalnego poprzez maksymalizację oczekiwanej wartości zysku. Wartość oczekiwana jest kalkulowana na podstawie scenariuszy generowanych zgodnie z rozkładem \textit{t}-Studenta wykorzystującym parametry określone w zadaniu. W analizie założono równomierne prawdopodobieństwo występowania wszystkich -scenariuszy. -\subsection{Parametry modelu} -Wszystkie parametry modelu zostały przedstawione w tabeli poniżej wraz z ich szczegółowymi opisami. +scenariuszy. \\ +Wszystkie parametry modelu zostały opisane poniżej. Identyczne nazewnictwo zostało zastosowane w implementacji modelu. Dla parametrów będących wektorami i macierzami, w nawiasach kwadratowych określono ich wymiary, odnosząc się do odpowiednich parametrów liczbowych. -\begin{table}[ht!] -\caption{Tabela zawierająca parametry modelu jednokryterialnego} -\label{tab:param} -\begin{tabular}{lp{9cm}} - \hline - Nazwa parametru & Szczegółowy opis znaczenia \\ - \hline - numberOfMachineTypes & Ilość typów maszyn (procesów) dostępnych w fabryce \\ -numberOfMonths & Ilość miesięcy uwzględnionych w symulacji \\ -numberOfProductsTypes & Ilość typów produktów \\ -numberOfScenarios & Ilość scenariuszy wygenerowanych do symulacji \\ -machines[numberOfMachineTypes] & Wektor typów maszyn (procesów)\\ -months[numberOfMonths] & Wektor miesięcy symulacji\\ -products[numberOfProductsTypes] & Wektor typów produktów\\ -machineCount[numberOfMachineTypes] & Wektor ilości maszyn danego typu\\ -timeToProduce[numberOfMachineTypes][numberOfProductsTypes] & macierz czasów produkcji danego produktu na danej maszynie \\ -maxProductsInMonth[numberOfMonths][numberOfProductsTypes] & macierz maksymalnej ilości produktów, jakie można sprzedać w danym miesiącu\\ -numberOfHoursInFactory & Ilość godzin pracy fabryki w miesiącu\\ -mu[numberOfProductsTypes] & Wektor wartości oczekiwanych rozkładu t-Studenta do generacji scenariuszy\\ -sigma [numberOfProductsTypes][numberOfProductsTypes] & Macierz kowariancji dla rozkłady t-Studenta\\ -sellProfit[numberOfScenarios][numberOfProductsTypes] & Macierz wygenerowanych sceniariuszy dochodów ze sprzedaży produktów\\ -storageCost & Koszt trzymania jednej sztuki produktu w magazynie przez miesiąc \\ -storageMax[numberOfProductsTypes] & Wektor maksymalnej pojemności magazynu dla każdego typu produktu \\ -storageStart[numberOfProductsTypes] & Wektor ilości początkowej produktów w magazynie \\ - \hline -\end{tabular} -\end{table} +\subsection{Opis parametrów} +\addcontentsline{toc}{subsection}{Opis parametrów} + +\textbf{numberOfMachineTypes} - Ilość typów maszyn (procesów) dostępnych w fabryce + +\textbf{numberOfMonths} - Ilość miesięcy uwzględnionych w symulacji + +\textbf{numberOfProductsTypes} - Ilość typów produktów + +\textbf{numberOfScenarios} - Ilość scenariuszy wygenerowanych do symulacji + +\textbf{machines[numberOfMachineTypes]} - Wektor typów maszyn (procesów) + +\textbf{months[numberOfMonths]} - Wektor miesięcy symulacji + +\textbf{products[numberOfProductsTypes]} - Wektor typów produktów + +\textbf{machineCount[numberOfMachineTypes]} - Wektor ilości maszyn danego typu + +\textbf{timeToProduce[numberOfMachineTypes][numberOfProductsTypes]} - Macierz czasów produkcji danego produktu na danej maszynie + +\textbf{maxProductsInMonth[numberOfMonths][numberOfProductsTypes]} - Macierz maksymalnej ilości produktów, jakie można sprzedać w danym miesiącu + +\textbf{numberOfHoursInFactory} - Ilość godzin pracy fabryki w miesiącu + +\textbf{mu[numberOfProductsTypes]} - Wektor wartości oczekiwanych rozkładu t-Studenta do generacji scenariuszy + +\textbf{sigma[numberOfProductsTypes][numberOfProductsTypes]} - Macierz kowariancji dla rozkładu t-Studenta + +\textbf{sellProfit[numberOfScenarios][numberOfProductsTypes]} - Macierz wygenerowanych scenariuszy dochodów ze sprzedaży produktów + +\textbf{storageCost} - Koszt trzymania jednej sztuki produktu w magazynie przez miesiąc + +\textbf{storageMax[numberOfProductsTypes]} - Wektor maksymalnej pojemności magazynu dla każdego typu produktu + +\textbf{storageStart[numberOfProductsTypes]} - Wektor ilości początkowej produktów w magazynie \subsection{Zmienne decyzyjne} -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. +\addcontentsline{toc}{subsection}{Zmienne decyzyjne} -\begin{table}[ht!] -\caption{Tabela zawierająca zmienne decyzyjne modelu} -\label{tab:var} -\begin{tabular}{lp{7.5cm}} - \hline - Nazwa zmiennej & Szczegółowy opis znaczenia \\ - \hline - 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\\ - \hline -\end{tabular} -\end{table} +\textbf{produce[numberOfMonths][numberOfProductsTypes]} - Macierz zawierająca ilości wytwarzanych sztuk danego typu produktu w danym miesiącu + +\textbf{sell[numberOfMonths][numberOfProductsTypes]} - Macierz zawierająca ilości sprzedawanych sztuk danego typu produktu w danym miesiącu + +\textbf{stock[numberOfMonths][numberOfProductsTypes]} - Macierz zawierająca ilości sztuk danego typu produktu znajdujących się w magazynie w danym miesiącu + +\textbf{workTime[numberOfMonths][numberOfMachineTypes][numberOfProductsTypes]} - Macierz zawierająca czas pracy każdej maszyny dla każdego typu produktu w każdym miesiącu + +\textbf{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) + +\textbf{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 \subsection{Ograniczenia} +Przetłumaczono ograniczenia z języka naturalnego na język matematyczny +\addcontentsline{toc}{subsection}{Ograniczenia} \begin{itemize} \item Ograniczenie dolne wartości zmiennych decyzyjnych – wartości nie mogą być mniejsze od zera: \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months \\ p \in products \\ mc \in machines}} workTime[m][mc][p] >=0 \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months \\ p \in products}} produce[m][p] >=0 \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months \\ p \in products}} sell[m][p] >=0 \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months \\ p \in products}} stock[m][p] >=0 \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ i \in scenarios \\ m \in months \\ p \in products}} lowerProfit[i][m][p] >=0 @@ -199,52 +222,52 @@ Zmienne decyzyjne stanowią wartości kontrolowane przez podmiot podejmujący de \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}. \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months\\ mc \in machines}} \sum_{p \in products} (workTime[m][mc][p] <= machineCount[mc]*numberOfHoursInFactory) \end{equation} \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: \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months\\ mc \in machines\\ p \in products}} workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p] \end{equation} \item Ograniczenie maksymalnej sprzedaży wynikające z pojemności rynku w danym miesiącu: \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months\\ p \in products}} sell[m][p] == maxProductsInMonth[m][p] \end{equation} \item Warunki definiujące zmienną binarną przy przekroczeniu 80 procent chłonności rynku: \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months\\ p \in products}} sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p] \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ m \in months\\ p \in products}} sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p] \end{equation} \item Ograniczenia linearyzujące oddziaływanie zmiennych binarnych na funkcję celu: \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ i \in scenarios\\ m \in months\\ p \in products}} lowerProfit[i][m][p] <= 1000000 * if80prec[m][p] \end{equation} \begin{equation} - \bigforall_{\substack{ + \forall{\substack{ i \in scenarios\\ m \in months\\ p \in products}} lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p] \end{equation} \begin{multline} - \bigforall_{\substack{ + \forall{\substack{ i \in scenarios\\ m \in months\\ p \in products}} 0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] +\\ 1000000 * if80prec[m][p] <= 1000000; @@ -252,35 +275,36 @@ Zmienne decyzyjne stanowią wartości kontrolowane przez podmiot podejmujący de \item Ograniczenie sprzedaży do liczby sztuk wyprodukowanych oraz dostępnych w magazynie. Dla pierwszego miesiąca ograniczenie przyjmuje formę: \begin{equation} - \bigforall_{\substack{ + \forall{\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{ + \forall{\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{ + \forall{\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{ + \forall{\substack{ m \in months\\ p \in products}} stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p] \end{equation} \end{itemize} \subsection{Funkcja celu} +\addcontentsline{toc}{subsection}{Funkcja celu} 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 \begin{multline} -\bigforall_{\substack{ +\forall{\substack{ i