fix obvious repetitions in wdwr project

This commit is contained in:
Krzysztof Rudnicki 2025-04-21 21:13:11 +02:00
parent 6d3b860f1f
commit 4db98e3c93
14 changed files with 10441 additions and 21347 deletions

View File

@ -11,8 +11,11 @@ lower_bound = 5
upper_bound = 12 upper_bound = 12
# Generate scenarios # Generate scenarios
data <- rtmvt(n=10000, mean=Mu, sigma=Sigma, df=5, lower=rep(lower_bound, 4), upper=rep(upper_bound, 4)) data <- rtmvt(n=100, mean=Mu, sigma=Sigma, df=5,
write.table(format(data, digits=15, drop0trailing=F), "data10000.txt", quote=F, sep="\t", eol="\n\t", col.names = F, row.names = T) lower=rep(lower_bound, 4), upper=rep(upper_bound, 4))
write.table(format(data, digits=15, drop0trailing=F),
"data100.txt", quote=F, sep="\t", eol="\n\t",
col.names = F, row.names = T)
mean <- colMeans(data) mean <- colMeans(data)
E <- function(idx, Mu, Sigma, v, alfa, beta) { E <- function(idx, Mu, Sigma, v, alfa, beta) {

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# MODEL # # MODEL #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# SKRYPT URUCHAMIAJACY - Metoda punktu odniesienia # # SKRYPT URUCHAMIAJACY - Metoda punktu odniesienia #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# MODEL # # MODEL #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# SKRYPT URUCHAMIAJACY - Metoda punktu odniesienia # # SKRYPT URUCHAMIAJACY - Metoda punktu odniesienia #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# DANE # # DANE #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

View File

@ -1,5 +1,5 @@
########################################################### ###########################################################
# WDWR 18042 # # WDWR 25406 #
# Planowanie produkcj w warunkach ryzyka. # # Planowanie produkcj w warunkach ryzyka. #
# SKRYPT URUCHAMIAJACY # # SKRYPT URUCHAMIAJACY #
# Autor: Krzysztof Rudnicki # # Autor: Krzysztof Rudnicki #

View File

@ -0,0 +1,101 @@
1 9.76311690917431 7.44135196072098 8.03080769529443 5.91262278007238
2 9.07190145652961 7.65985278468609 7.81364884192831 6.23563982924631
3 7.30586779807710 10.46831565453596 6.17860514098604 5.62316983488756
4 6.06518115356950 6.82247048657865 6.70439394704260 5.97874895226848
5 9.96818163646533 5.92140003729828 8.95647683901296 5.92957172143291
6 8.63538473131973 10.78452347210609 5.33874254384498 5.71561846706637
7 10.78779012148249 8.38993971621506 6.95119513298764 6.15728792196850
8 9.47255420321130 5.24835077098752 9.00959525502073 6.84285948274497
9 11.70926888809931 6.88871099028457 5.11505870322385 5.79141681866100
10 9.64287670970948 6.99374980548690 6.93364646280594 6.63473958816273
11 9.74417642254796 9.27515630991583 5.79381433859841 6.33880079977867
12 9.84932031583696 8.13369675991747 9.56326564416240 5.47164097940741
13 10.84180657665224 10.44173212698402 5.75796156005717 5.17082844375342
14 6.42546815399896 11.41163561400132 6.98718847694160 6.19182014565093
15 6.65343747480972 5.96491367509542 8.43404931472053 6.81514933519179
16 8.41058204665803 9.81581254769240 6.22528708513955 5.45922484668070
17 11.07466468261044 8.63685491994975 8.32064327582552 6.00532812753081
18 5.66007803163167 10.59708873150259 6.40117913595970 6.61684806440770
19 8.11097377453294 11.39989719535908 7.19879715792936 5.81867289870583
20 10.18544068664910 8.00246586468051 7.78414367307899 6.39143329793770
21 8.37417778106186 8.66901423662847 6.63403929668899 5.62622698569807
22 5.71457990443940 8.10569739243788 6.93419305872531 6.80590758355993
23 10.90693358349595 7.14177718551252 5.91236679453024 5.76232274027454
24 8.56484398609648 6.22762158139036 8.11135450623580 5.62211012798539
25 10.96985518991559 6.68271088560539 6.35539102212538 5.78652050813314
26 7.62410553749944 5.47750296350388 8.10356514381925 6.80674322754784
27 9.17309223739274 7.35075102155314 9.39642670821667 6.08239889804591
28 11.69619190069919 5.81353083316989 6.71866562538033 5.83460977495301
29 8.70647218713260 8.54952873879837 6.01177366865153 5.80247711748981
30 10.19801770668396 8.40706649849486 7.78289804784438 5.59571260544491
31 10.18823792131140 10.30622317535783 6.01007216642801 5.10730031536544
32 8.89257975110205 9.05255653431256 7.04806430135429 5.72317637496039
33 5.55169965201331 6.46995754365869 6.73752334538523 8.11225243525766
34 7.38041303280808 6.03431805441005 6.54177632374026 6.26813757511362
35 9.53600312164939 9.82870887668159 6.37298666598656 6.29512946813344
36 9.62084627760301 8.38877821804972 9.60663262550341 6.14199642708027
37 8.53371147142969 9.96028980160928 5.48461964749732 5.58700748945751
38 11.43883601853922 7.43794182684747 8.19299665196631 6.53522296979568
39 8.94531533108458 7.72770669562578 5.86612093622741 6.14249195015319
40 8.56163972282782 8.78267109358917 8.09620140224837 5.84072057986787
41 11.10581874422519 6.41650146716222 7.94880945361463 5.92181030289048
42 8.79709510873987 6.96326671422654 6.81226688976441 6.08034755239137
43 8.36353994459570 8.65114541354765 5.20396052285658 5.64107960525657
44 10.72631955621739 10.40656722635996 6.40361955726036 5.00588106915542
45 7.92377449146379 7.57337326655799 7.28981137176010 5.86937295871601
46 6.44898752031030 9.84455679079283 7.56743321024807 5.61123930238106
47 6.59142079861976 8.25490687097256 7.18086136653190 6.36808055523271
48 7.47434811723050 7.57534400043646 7.40042557613225 5.77766925416132
49 10.37922558429701 7.51649541751660 7.76007217627671 5.71165340725927
50 11.22955957441164 9.11763834237000 5.91162025004763 5.22909656515264
51 9.93626606347435 10.36742543458079 5.50414492338928 5.09387877291345
52 7.46956075160300 8.85209992891748 5.66758603774144 6.84847007082318
53 10.94818425908296 11.21395252595940 5.02869416739786 5.11896599852232
54 8.59930902434361 10.23728557433725 6.43052152866663 5.55350545843695
55 7.18223178367374 8.39628843993716 6.78631274384210 6.40826198282814
56 10.50650695671218 7.14292577351122 6.97271222602888 5.67492382261040
57 9.43266157452829 8.59707825452923 7.44232496740155 6.33561282221721
58 11.45217548324165 6.23806997675535 7.62498135882166 5.84032703043151
59 11.36423152742698 7.73909888403765 5.83487677225264 5.30267540082782
60 7.40126925234506 7.78983701703254 7.26783254076869 6.35068014074993
61 9.72974571794505 8.14279615037054 6.43258828020491 5.60905301174744
62 9.71958329969389 8.25791366588767 6.81451687462449 5.84590714949131
63 11.78371126050813 7.89117263445312 8.21483466145989 5.60333890798316
64 6.43302225580614 8.07865860135554 5.44469004007024 6.25543936966105
65 11.32524672426065 6.23439997420789 9.09984135190236 5.92522151214137
66 6.11523920037522 9.46855519033448 8.99139954457499 7.26985178631296
67 10.75986956011578 8.89269588219645 6.16473844457922 5.01830225504361
68 7.44261078629228 5.59781415962693 8.47555931122058 6.71081007297257
69 6.13170779809489 7.22655838486716 7.72995785629984 6.90573736168416
70 9.43027479825457 11.48319339258313 7.38708836041081 5.82689865183140
71 5.29171692626969 8.09437078836054 6.39563010794279 6.62912879511093
72 5.09893294234523 7.74584955672930 8.88018284918212 7.01212790493029
73 6.20578320069247 6.80617867447727 8.18103843191598 6.83958319443877
74 6.30258685494809 7.43138054831968 6.54063201012806 6.49666135387873
75 5.99078754250444 9.43740619647565 6.33367827869915 6.32580787466866
76 6.09773092392164 8.81422152842116 6.40425733606985 6.00528108344304
77 9.77514087744415 8.44932475630892 7.94420117667674 5.69585236521884
78 9.52359733569984 5.16479502907556 8.95174376770244 6.78672071859107
79 10.87512003895627 7.94035821507262 7.57773074672391 5.84630709056388
80 7.03228696898568 6.60340093608582 6.44468568443036 6.19149860676074
81 9.65992578732530 8.56527229906357 6.09872442954240 5.20440692261623
82 6.30983535489480 9.30561393417605 6.54859829930319 6.52106231396463
83 5.82137666724151 5.35827290855938 8.49191286969823 6.71371780289945
84 11.37494716877100 5.81213960381298 8.05853844161706 5.69806024484299
85 8.15267985634545 10.97224605386566 5.12446664947324 5.15795103491506
86 11.73086416587584 5.65124348656024 6.77078823854425 5.90352878508404
87 6.72960532844368 8.10521896869132 11.60799014602290 5.36046426627923
88 5.25102730028672 6.84949245261905 8.49279919952933 6.29483292662839
89 7.90449528978985 7.68346606583354 8.26036057308542 5.78474731288598
90 8.64103203208981 6.57844735571956 8.12280488732531 7.36240059132464
91 8.46655660484256 8.36699115351209 6.70419093097301 6.03113661709298
92 8.50248558815979 6.35585412244623 5.95963894605528 5.55306703237114
93 8.11096815930533 6.26958795090084 6.89847746026576 6.79423199764579
94 11.05399477820485 6.64260318869504 8.29929372751188 6.03566117360477
95 9.56800557695653 8.79263357467837 8.58788350167046 6.06774627920175
96 11.90421443450454 6.78214769706352 9.14111391052618 5.69759901474202
97 7.57911702883690 7.65716973584061 7.10622237301328 5.97627526735100
98 5.12673628692985 11.33334016193997 7.83474212553888 5.91330252723919
99 8.25983441252135 10.48661063799430 6.24054516528815 5.59523265380788
100 6.37952025900229 7.91998372816597 10.27190171308190 6.82383475873556

File diff suppressed because it is too large Load Diff

View File

@ -468,7 +468,7 @@ Listing 1: Skrypt w języku *R* do obliczania wartości oczekiwanej wektora *R*
``` ```
załączniku. załączniku.
1 # ########################################################## 1 # ##########################################################
2 # WDWR 18042 # 2 # WDWR 25406 #
3 # Planowanie produkcj w warunkach ryzyka. # 3 # Planowanie produkcj w warunkach ryzyka. #
4 # DANE # 4 # DANE #
5 # Autor : Jan Kumor # 5 # Autor : Jan Kumor #

View File

@ -1,4 +1,4 @@
\documentclass[12pt]{article} \documentclass{article}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage[polish]{babel} \usepackage[polish]{babel}
\usepackage{amsmath,amssymb} \usepackage{amsmath,amssymb}
@ -7,6 +7,8 @@
\usepackage{hyperref} \usepackage{hyperref}
\usepackage{longtable} \usepackage{longtable}
\usepackage{enumitem} \usepackage{enumitem}
\usepackage{float}
\usepackage{minted}
\title{WDWR, sprawozdanie} \title{WDWR, sprawozdanie}
\author{Krzysztof Rudnicki, 307585} \author{Krzysztof Rudnicki, 307585}
@ -15,53 +17,23 @@
\begin{document} \begin{document}
\maketitle \maketitle
\tableofcontents
\section*{Spis treści} \section*{WDWR 25406}
\begin{longtable}{|c|l|c|}
\hline
1 & Treść zadania & 2 \\
\hline
2 & Jednokryterialny model wyboru w warunkach ryzyka z wartością oczekiwaną jako miarą & 3 \\
& zysku & \\
& 2.1 Zbiory indeksowe & 3 \\
& 2.2 Parametry & 3 \\
& 2.3 Zmienne & 4 \\
& 2.4 Ograniczenia & 4 \\
& 2.5 Funkcja celu & 4 \\
\hline
3 & Dwukryterialny model zysku i ryzyka z wartoscią oczekiwaną jako miarą zysku i od & 5 \\
& chyleniem maksymalnym jako miarą ryzyka & \\
& 3.1 Zbiory indeksowe & 5 \\
& 3.2 Parametry & 5 \\
& 3.3 Zmienne & 5 \\
& 3.4 Ograniczenia & 5 \\
& 3.5 Metoda punktu odniesienia & 6 \\
\hline
4 & Wyznaczenie parametrów zadania z rozkładu t-Studenta & 6 \\
\hline
5 & Model dla programu AMPL & 8 \\
& 5.1 Plik z modelem (.mod) & 8 \\
& 5.2 Plik z danymi (.dat) & 11 \\
& 5.3 Skrypty uruchomieniowe (.run) & 14 \\
\hline
6 & Rozwiązanie zadania optymalizacji & 16 \\
& 6.1 Wyniki dla modelu jednokryterialnego & 16 \\
& 6.2 Wyniki dla modelu dwukryterialnego & 19 \\
& 6.2.1 Obraz zbioru rozwiązań efektywnych w przestrzeni ryzyko-zysk & 19 \\
& 6.2.2 Analiza relacji dominacji stochastycznej dla trzech wybranych rozwiązań efek & 21 \\
& tywnych & \\
\hline
\end{longtable}
\section*{WDWR 18402}
Rozważamy następujące zagadnienie planowania produkcji: Rozważamy następujące zagadnienie planowania produkcji:
\begin{itemize} \begin{itemize}
\item Przedsiębiorstwo wytwarza 4 produkty P1, \ldots, P4 na następujących maszynach: 4 szlifierkach, 2 wiertarkach pionowych, 3 wiertarkach poziomych, 1 frezarce i 1 tokarce. Wymagane czasy produkcji 1 sztuki produktu (w godzinach) w danym procesie obróbki zostały przedstawione w poniższej tabeli: \item Przedsiębiorstwo wytwarza 4 produkty P1,
\ldots, P4 na następujących maszynach:
4 szlifierkach, 2 wiertarkach pionowych,
3 wiertarkach poziomych, 1 frezarce i 1 tokarce.
Wymagane czasy produkcji 1 sztuki produktu (w godzinach)
w danym procesie obróbki zostały przedstawione w poniższej
tabeli:
\end{itemize} \end{itemize}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|c|c|c|c|} \begin{tabular}{|l|c|c|c|c|}
\hline \hline
@ -81,7 +53,14 @@ Toczenie & — & 0,05 & 0,02 & — \\
\end{table} \end{table}
\begin{itemize} \begin{itemize}
\item Dochody ze sprzedaży produktów (w zł/sztukę) określają składowe wektora losowego \textbf{R} = ($R_1, \ldots, R_4$)$^T$. Wektor losowy \textbf{R} opisuje 4-wymiarowy rozkład $t$-Studenta z 5 stopniami swobody, którego wartości składowych zostały zawężone do przedziału [5; 12]. Parametry $\mu$ oraz $\mathbf{\Sigma}$ niezawężonego rozkładu $t$-Studenta są następujące: \item Dochody ze sprzedaży produktów (w zł/sztukę)
modelują składowe wektora losowego
\textbf{R} = ($R_1, \ldots, R_4$)$^T$.
Wektor losowy \textbf{R} opisuje 4-wymiarowy rozkład
$t$-Studenta z 5 stopniami swobody,
którego wartości składowych zostały zawężone do przedziału
[5; 12]. Parametry $\mu$ oraz $\mathbf{\Sigma}$
niezawężonego rozkładu $t$-Studenta są następujące:
$$ $$
\mu = \begin{pmatrix} 9 \\ 8 \\ 7 \\ 6 \end{pmatrix}, \qquad \Sigma = \begin{pmatrix} 16 & -2 & -1 & -3 \\ -2 & 9 & -4 & -1 \\ -1 & -4 & 4 & 1 \\ -3 & -1 & 1 & 1 \end{pmatrix}. \mu = \begin{pmatrix} 9 \\ 8 \\ 7 \\ 6 \end{pmatrix}, \qquad \Sigma = \begin{pmatrix} 16 & -2 & -1 & -3 \\ -2 & 9 & -4 & -1 \\ -1 & -4 & 4 & 1 \\ -3 & -1 & 1 & 1 \end{pmatrix}.
@ -92,7 +71,7 @@ $$
\item Istnieją ograniczenia rynkowe na liczbę sprzedawanych produktów w danym miesiącu: \item Istnieją ograniczenia rynkowe na liczbę sprzedawanych produktów w danym miesiącu:
\end{itemize} \end{itemize}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|c|c|c|c|} \begin{tabular}{|l|c|c|c|c|}
\hline \hline
@ -108,11 +87,12 @@ Marzec & 0 & 300 & 100 & 200 \\
\end{table} \end{table}
\begin{itemize} \begin{itemize}
\item Jeżeli w danym miesiącu jest sprzedawany produkt P1 lub P2, to musi być również sprzedawany produkt P4 w ilości nie mniejszej niż suma sprzedawanych produktów P1 i P2. \item Jeżeli sprzedaż danego produktu przekracza 80 procent ilości jaką może wchłonąć rynek, jego
dochód spada o 20 procent.
\item Istnieje możliwość składowania do 200 sztuk każdego produktu w danym czasie w cenie 1 zł/sztukę za miesiąc. Aktualnie firma nie posiada żadnych zapasów, ale jest pożądane mieć po 50 sztuk każdego produktu pod koniec marca. \item Istnieje możliwość składowania do 200 sztuk każdego produktu w danym czasie w cenie 1 zł/sztukę za miesiąc. Aktualnie firma nie posiada żadnych zapasów, ale jest pożądane mieć po 50 sztuk każdego produktu pod koniec marca.
\item Przedsiębiorstwo pracuje 6 dni w tygodniu w systemie dwóch zmian. Każda zmiana trwa 8 godzin. Można założyć, że każdy miesiąc składa się z 24 dni roboczych. \item Przedsiębiorstwo pracuje 6 dni w tygodniu w systemie dwóch zmian. Każda zmiana trwa 8 godzin. Można założyć, że każdy miesiąc składa się z 24 dni roboczych.
\item 1. Zaproponować jednokryterialny model wyboru w warunkach ryzyka z wartością oczekiwaną jako miarą zysku. Wyznaczyć rozwiązanie optymalne. \item 1. Zaproponować jednokryterialny model wyboru w warunkach ryzyka z wartością oczekiwaną jako miarą zysku. Wyznaczyć rozwiązanie optymalne.
\item 2. Jako rozszerzenie powyższego zaproponować dwukryterialny model zysku i ryzyka z wartością oczekiwaną jako miarą zysku i odchyleniem maksymalnym jako miarą ryzyka. Dla decyzji $\mathbf{x} \in Q$ odchylenie maksymalne jest definiowane jako $D(\mathbf{x}) = \max_{t=1,...,T} |\mu(\mathbf{x}) - r_t(\mathbf{x})|$, gdzie $\mu(\mathbf{x})$ oznacza wartość oczekiwaną, $r_t(\mathbf{x})$ realizację dla scenariusza $t$. \item 2. Jako rozszerzenie powyższego zaproponować dwukryterialny model zysku i ryzyka z wartością ś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} |r^{t'}(\mathbf{x}) - r^{t''}(\mathbf{x})|p^{t'}p^{t''}$, gdzie $r^t(\mathbf{x})$ oznacza realizację dla scenariusza $t$, $p^t$ prawdopodobieństwo scenariusza $t$.
\begin{itemize} \begin{itemize}
\item a. Wyznaczyć obraz zbioru rozwiązań efektywnych w przestrzeni ryzykozysk. \item a. Wyznaczyć obraz zbioru rozwiązań efektywnych w przestrzeni ryzykozysk.
\item b. Wskazać rozwiązania efektywne minimalnego ryzyka i maksymalnego zysku. Jakie odpowiadają im wartości w przestrzeni ryzykozysk? \item b. Wskazać rozwiązania efektywne minimalnego ryzyka i maksymalnego zysku. Jakie odpowiadają im wartości w przestrzeni ryzykozysk?
@ -126,7 +106,7 @@ W celu rozwiązania postawionego zadania dokonano sformułowania modelu programo
\subsection{Zbiory indeksowe} \subsection{Zbiory indeksowe}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|l|} \begin{tabular}{|l|l|}
\hline \hline
@ -143,7 +123,7 @@ M = M1, M2, M3 & Zbiór kolejnych miesięcy produkcji \\
\subsection{Parametry} \subsection{Parametry}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|p{10cm}|} \begin{tabular}{|l|p{10cm}|}
\hline \hline
@ -180,7 +160,8 @@ $att_t = tc_t \cdot whp_m$ & Dostępna liczba godzin roboczych maszyn typu $t$ w
\subsection{Zmienne} \subsection{Zmienne}
\begin{table}[h!] \renewcommand{\arraystretch}{1.5} % Increase row height
\begin{table}[H]
\centering \centering
\begin{tabular}{|l|p{10cm}|} \begin{tabular}{|l|p{10cm}|}
\hline \hline
@ -194,16 +175,21 @@ $ts_p = \sum_{m \in M} s_{mp}$ & Całkowita liczba sprzedanych sztuk produktu $p
\hline \hline
$std_{mp} = p_{mp} - s_{mp}$ & Liczba sztuk produktu $p$ zmagazynowanych w miesiącu $m$ [szt] \\ $std_{mp} = p_{mp} - s_{mp}$ & Liczba sztuk produktu $p$ zmagazynowanych w miesiącu $m$ [szt] \\
\hline \hline
$stg_{mp} = st0_p + \sum_{m2=1}^{m} std_{m2p}$ & Stan magazynowy produktu $p$ na koniec miesiąca $m$ [szt] \\ $stg_{mp} = st0_p + \sum\limits_{m2=1}^{m} std_{m2p}$ & Stan magazynowy produktu $p$ na koniec miesiąca $m$ [szt] \\
\hline \hline
$uttm_t = \sum_{p \in P} p_{mp} \cdot ttpu_{tp}$ & Wykorzystanie czasu pracy maszyny typu $t$ w miesiącu $m$ [godz] \\ $uttm_t = \sum\limits_{p \in P} p_{mp} \cdot ttpu_{tp}$ & Wykorzystanie czasu pracy maszyny typu $t$ w miesiącu $m$ [godz] \\
\hline \hline
$tstc = stcp_u \cdot \sum_{m \in M} \sum_{p \in P} stg_{mp}$ & Całkowity koszt wykorzystania magazynów [zł] \\ $tstc = stcp_u \cdot \sum\limits_{m \in M} \sum\limits_{p \in P} stg_{mp}$ & Całkowity koszt wykorzystania magazynów [zł] \\
\hline \hline
$ep = \sum_{p \in P} (ts_p \cdot eppu_p) - tstc$ & Wartość zysku całkowitego dla wartości oczekiwanych zysku ze sprzedaży produktów [zł] \\ $b_{mp}$ & Zmienna binarna określająca czy sprzedaż produktu $p$ w miesiącu $m$ przekracza 80\% limitu rynkowego \\
\hline
$eppu_{mp} = eppu_p \cdot (1 - 0.2 \cdot b_{mp})$ & Skorygowany zysk jednostkowy dla produktu $p$ w miesiącu $m$ uwzględniający spadek o 20\% jeśli sprzedaż przekracza 80\% limitu rynkowego [zł] \\
\hline
$ep = \sum\limits_{m \in M} \sum\limits_{p \in P} (s_{mp} \cdot eppu_{mp}) - tstc$ & Wartość zysku całkowitego dla wartości oczekiwanych zysku ze sprzedaży produktów [zł] \\
\hline \hline
\end{tabular} \end{tabular}
\end{table} \end{table}
\renewcommand{\arraystretch}{1} % Reset to default value
\subsection{Ograniczenia} \subsection{Ograniczenia}
@ -219,10 +205,6 @@ Ograniczenie sprzedaży produktów w kolejnych miesiącach:
$$s_{mp} \leqslant p_{mp} + stg_{mp}, \quad \forall m \in M \backslash \{1\}$$ $$s_{mp} \leqslant p_{mp} + stg_{mp}, \quad \forall m \in M \backslash \{1\}$$
Ograniczenie na powiązanie sprzedaży produktu 4 ze sprzedażą produktów 1 i 2:
$s_{m4} > s_{m1} + s_{m2}, \quad \forall m \in M$
Ograniczenie pojemności magazynów: Ograniczenie pojemności magazynów:
$$stg_{mp} \leqslant stl_p, \quad \forall p \in P$$ $$stg_{mp} \leqslant stl_p, \quad \forall p \in P$$
@ -235,6 +217,14 @@ Ograniczenie wykorzystania czasu pracy narzędzi w danym miesiącu:
$uttm_t \leq att_t, \quad \forall t \in T, \forall m \in M$ $uttm_t \leq att_t, \quad \forall t \in T, \forall m \in M$
Ograniczenie identyfikujące przekroczenie 80\% limitu rynkowego:
$$s_{mp} \leq 0.8 \cdot smlm_p + M \cdot b_{mp}, \quad \forall m \in M, \forall p \in P$$
$$s_{mp} \geq 0.8 \cdot smlm_p - M \cdot (1 - b_{mp}) + \varepsilon, \quad \forall m \in M, \forall p \in P$$
gdzie $M$ jest dostatecznie dużą liczbą, a $\varepsilon$ jest małą liczbą dodatnią.
\subsection{Funkcja celu} \subsection{Funkcja celu}
Jako funkcję celu przyjęto maksymalizację wartości oczekiwanej zysku: $maximize \; ep$ Jako funkcję celu przyjęto maksymalizację wartości oczekiwanej zysku: $maximize \; ep$
@ -245,7 +235,7 @@ Model ten został zrealizowany jako rozszerzenie modelu jednokryterialnego o dod
\subsection{Zbiory indeksowe} \subsection{Zbiory indeksowe}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|l|} \begin{tabular}{|l|l|}
\hline \hline
@ -258,7 +248,7 @@ S = S1, \ldots, S1000 & Zbiór scenariuszy wygenerowanych z rozkładu t-Studenta
\subsection{Parametry} \subsection{Parametry}
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|l|} \begin{tabular}{|l|l|}
\hline \hline
@ -270,8 +260,8 @@ $sppu_{ps}$ & Zysk ze sprzedaży jednej sztuki produktu $p$ w scenariuszu $s$ [z
\end{table} \end{table}
\subsection{Zmienne} \subsection{Zmienne}
inputminted
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|p{10cm}|} \begin{tabular}{|l|p{10cm}|}
\hline \hline
@ -316,7 +306,7 @@ $$\sum_{s \in S} Z_s = 1$$
Jako model preferencji dla modelu dwukryterialnego została wybrana metoda punktu odniesienia. Wprowadza ona zestaw dodatkowych parametrów i zmiennych: Jako model preferencji dla modelu dwukryterialnego została wybrana metoda punktu odniesienia. Wprowadza ona zestaw dodatkowych parametrów i zmiennych:
\begin{table}[h!] \begin{table}[H]
\centering \centering
\begin{tabular}{|l|p{10cm}|} \begin{tabular}{|l|p{10cm}|}
\hline \hline
@ -384,230 +374,23 @@ Otrzymano wartości:
$E(R)^T = [8.5094, 8.4710, 8.1319, 6.3944]$ $E(R)^T = [8.5094, 8.4710, 8.1319, 6.3944]$
Do obliczenia wartości oczekiwanej oraz wyznaczenia scenariuszy wykorzystano skrypt napisany w języku $R$. Wygenerowano 1000 scenariuszy testowtych. Użyty skrypt przedstawia Listing 1. Do obliczenia wartości oczekiwanej oraz wyznaczenia scenariuszy wykorzystano skrypt napisany w języku $R$. Wygenerowano 100 scenariuszy testowtych. Użyty skrypt przedstawia Listing 1.
Listing 1: Skrypt w języku $R$ do obliczania wartości oczekiwanej wektora $R$ i generowania scenariuszy z rozkładu t-Studenta. Listing 1: Skrypt w języku $R$ do obliczania wartości oczekiwanej wektora $R$ i generowania scenariuszy z rozkładu t-Studenta.
\begin{verbatim} \inputminted[autogobble]{R}{../WDWR.r}
1 library ( tmvtnorm )
2
3 # t- Stutdet parameters
4 Mu = c(9 , 8 , 7 , 6)
5 Sigma = matrix (c(16 , -2 , -1 , -3 ,
6 -2 , 9 , -4 , -1 ,
7 -1 , -4 , 4 , 1 ,
8 -3 , -1 , 1 , 1) ,
9 nrow =4 , ncol =4)
10 lower _ bound = 5
11 upper _ bound = 12
12
13 # Generate scenarios
14 data <- rtmvt ( n =10000 , mean = mu , sigma = sigma , df =5 , lower =rep ( lower _←-
bound , 4) , upper =rep ( upper _bound , 4) )
15 write . table ( format (data , digits =15 , drop0trailing = F ) , " data10000 .txt"←-
, quote =F , sep ="\t", eol ="\n\t", col . names = F , row . names = T )
16 mean <- colMeans ( data )
17
18 E <- function ( idx , Mu , Sigma , v , alfa , beta ) {
19 mu = Mu [ idx ]
20 sigma = Sigma [ idx , idx ]
21 a = ( alfa - mu )/ sigma
22 b = ( beta - mu )/ sigma
23 nom = gamma (( v -1)/2) *
24 (( v + a ^2) ^( -1*(v -1) /2) -
25 ( v + b ^2) ^( -1*(v -1)/2) ) *
26 v ^( v/2)
27 den = 2 * (pt(b , v ) - pt(a , v ) ) * gamma ( v/2) * gamma (1/2)
28 return ( mu + sigma *( nom /den ) )
29 }
30
31 ER1 <- E (1 , Mu , Sigma , 5 , 5 , 12)
32 ER2 <- E (2 , Mu , Sigma , 5 , 5 , 12)
33 ER3 <- E (3 , Mu , Sigma , 5 , 5 , 12)
34 ER4 <- E (4 , Mu , Sigma , 5 , 5 , 12)
\end{verbatim}
\begin{verbatim}
45
46 # Aktualny stan magazynowy [szt]
47 param startingStorage { PRODUCTS } >= 0;
48
49 # Pozadany stan magazynowy na koniec symulacji [szt]
50 param desiredEndStorage { PRODUCTS } >= 0;
51
52 # Liczba dni roboczych w miesiacu [d]
53 param daysPerMonth >= 1;
54
55 # Liczba zmian w ciagu jednego dnia roboczego
56 param shiftsPerDay >= 1;
57
58 # Dlugosc zmiany [ godz ]
59 param hoursPerShift >= 1;
60
61 # Liczba roboczogodzin w miesiacu [ godz ]
62 param workHoursPerMonth = daysPerMonth * shiftsPerDay * hoursPerShift ;
63
64 # Czas pracy narzedzi w danym miesiacu
65 param availableToolTime { t in TOOLS } = toolCount [ t ]* workHoursPerMonth←-
;
66
67 # ##########
68 # Zmienne #
69 # ##########
70 # Produkcja produktow
71 var produced { MONTHS , PRODUCTS } >= 0 integer ;
72
73 # Sprzedaz produktow w danym miesiacu
74 var sold { MONTHS , PRODUCTS } >= 0 integer ;
75 var totalSold { p in PRODUCTS } = sum { m in MONTHS } sold [m , p ];
76
77 # Ilosc produktow przekazanych do magazynu w danym miesiacu
78 var stored { m in MONTHS , p in PRODUCTS } = produced [m , p ] - sold [m , p←-
];
79
80 # Stan magazynowy na koniec danego miesiaca
81 var storage { m in MONTHS , p in PRODUCTS } =
82 startingStorage [ p ] + sum { m2 in MONTHS : ord( m2 ) <= ord( m ) } ←-
stored [ m2 , p ];
83
84 # Wykorzystany czas pracy
85 var usedToolTime { m in MONTHS , t in TOOLS } =
86 sum { p in PRODUCTS } produced [m , p ]* toolTimePerUnit [t , p ];
87
88 # Koszt magazynowania
89 var monthlyStorageCost { m in MONTHS } =
90 (sum { p in PRODUCTS } storage [m , p ]) * storageUnitCost ;
91 var totalStorageCost = sum { m in MONTHS } monthlyStorageCost [ m ];
92
93 # Zysk dla wartosci oczekiwanej
94 var expectedSalesProfit =
95 sum { p in PRODUCTS } totalSold [ p ]* expectedProfitPerUnit [ p ];
96 var expectedNetProfit =
97 expectedSalesProfit - totalStorageCost ;
\end{verbatim}
\begin{verbatim}
98
99 # Zysk w danym scenariuszu
100 var scenarioSalesProfit { s in SCENARIOS } =
101 sum { p in PRODUCTS } totalSold [ p ]* scenarioProfitPerUnit [s , p ];
102 var scenarioNetProfit { s in SCENARIOS } =
103 scenarioSalesProfit [ s ] - totalStorageCost ;
104
105 # Odchylenie jako miara ryzyka - zlinearyzowana wartosc bezwzgledna
106 var deviation { s in SCENARIOS } =
107 expectedNetProfit - scenarioNetProfit [ s ];
108 var P { SCENARIOS } >= 0;
109 var Q { SCENARIOS } >= 0;
110 subject to deviationLimit { s1 in SCENARIOS , s2 in SCENARIOS }:
111 deviation [ s1 ] - deviation [ s2 ]+ P [ s1 ] - Q [ s2 ] = 0;
112
113 #var maxDeviation = max {s in SCENARIOS } deviation [s];
114 var maxDeviation ;
115 # Linearyzacja maksymalnego odchylenia jako miary ryzyka
116 param M = 10000;
117 var Z { SCENARIOS } binary ;
118 subject to mdLimit { s in SCENARIOS }:
119 maxDeviation >= deviation [ s ];
120 subject to mdWhere { s in SCENARIOS }:
121 maxDeviation <= deviation [ s ] + M *(1 - Z [ s ]) ;
122 subject to mdOS :
123 sum { s in SCENARIOS } Z [ s ] = 1;
124
125 # Aliasy dla ocenianych wartosci
126 var profit = expectedNetProfit ;
127 var risk = maxDeviation ;
128
129 # ######################
130 # Ograniczenia modelu #
131 # ######################
132
133 # Ograniczenie rynkowe sprzedazy produktow
134 subject to SalesMarketLimit { m in MONTHS , p in PRODUCTS }:
135 sold [m , p ] <= salesMarketLimit [m , p ];
136 # Ograniczenie magazynowe sprzedazy produktow
137 subject to SalesLimit1 { p in PRODUCTS }:
138 sold [ first ( MONTHS ) , p ] <= produced [ first ( MONTHS ) , p ];
139 subject to SalesLimit2 { m in MONTHS , p in PRODUCTS : m != first ( MONTHS←-
) }:
140 sold [m , p ] <= produced [m , p ] + storage [m , p ];
141 # Powiazanie sprzedazy produktu P4 ze sprzedaza produktow P1 i P2
142 subject to P4SalesConstraint { m in MONTHS }:
143 sold [m , "P4"] >= sold [m , "P1"] + sold [m , "P2"];
144 # Ograniczenie pojemnosci magazynowej
145 subject to StorageLimit { m in MONTHS , p in PRODUCTS }:
146 storage [m , p ] <= storageLimit [ p ];
147 # Ograniczenie na pozadany stan magazynowy na koniec marca
148 subject to DesiredStorage { p in PRODUCTS }:
149 storage [ last ( MONTHS ) , p ] >= desiredEndStorage [ p ];
150 # Ograniczenie czasu pracy narzedzi w miesiacu
151 subject to ToolWorkTime { m in MONTHS , t in TOOLS }:
152 usedToolTime [m , t ] <= availableToolTime [ t ];
\end{verbatim}
\begin{verbatim}
153
154 # ############################
155 # Metoda punktu odniesienia #
156 # ############################
157 # Skladniki wektora oceny
158 set RATED = {" PROFIT ", " RISK "};
159 # Wektor oceny
160 var value { r in RATED } =
161 if r == " PROFIT " then profit
162 else if r == " RISK " then risk ;
163 # Wektor aspiracji
164 param aspiration { RATED };
165 # Wartosci utopii i nadiru
166 param utopia { RATED };
167 param nadir { RATED };
168 # Wspolczynniki normalizujace
169 param lambda { r in RATED } =
170 1 / ( utopia [r] - nadir [r]);
171 # Wspolczynnik skladnika regularyzacyjnego
172 param epsilon ;
173 # Wspolczynnik pomniejszenia wartosci ocen ponad poziomem aspiracji
174 param beta ;
175 # Indywidualne funkcje osiagniec
176 var individualRating { RATED };
177 # Zmienna pomocnicza metody punktu odniesienia
178 var v;
179 # Skalaryzujaca funkcja osiagniecia
180 var rating = v + epsilon * (sum {r in RATED } individualRating [r]);
181 # Odleglosc od punktu odniesienia
182 var distance {r in RATED } = value [r] - aspiration [r];
183 # Znormalizowana odleglosc od punktu odniesienia
184 var normalizedDistance {r in RATED } = lambda [r]* distance [r];
185 # Ograniczenia zmiennej v przez indywidualne funkcje osiagniec
186 subject to VSubject {r in RATED }:
187 v <= individualRating [r];
188 # Ograniczenia indywidualnych funkcji osiagniec
189 subject to IndividualRatingSubjectBeta {r in RATED }:
190 individualRating [r] <= beta * normalizedDistance [r];
191 subject to IndividualRatingSubject {r in RATED }:
192 individualRating [r] <= normalizedDistance [r];
193
194 ################
195 # Funkcje celu #
196 ################
197 minimize MinimizeProfit : profit ;
198 maximize MaximizeProfit : profit ;
199 minimize MinimizeRisk : risk ;
200 maximize MaximizeRisk : risk ;
201 maximize RPM: rating ;
\end{verbatim}
\section{Model dla programu AMPL} \section{Model dla programu AMPL}
\subsection{Plik z modelem (.mod)} \subsection{Plik z modelem (.mod)}
\subsection{Plik z danymi (.dat)} \inputminted[autogobble]{R}{../WDWR1.mod}
Listing 3: Dane dla modelu AMPL - pominięto scenariusze, pełny zestaw danych dostępny w załączniku. \subsection{Plik z danymi (.dat)}
\begin{verbatim} \begin{verbatim}
1 # ########################################################## 1 # ##########################################################
2 # WDWR 18042 # 2 # WDWR 25406 #
3 # Planowanie produkcj w warunkach ryzyka. # 3 # Planowanie produkcj w warunkach ryzyka. #
4 # DANE # 4 # DANE #
5 # Autor : Krzysztof Rudnicki # 5 # Autor : Krzysztof Rudnicki #
@ -631,13 +414,13 @@ Listing 3: Dane dla modelu AMPL - pominięto scenariusze, pełny zestaw danych d
23 # Czasy produkcji h 23 # Czasy produkcji h
24 param toolTimePerUnit : 24 param toolTimePerUnit :
25 P1 P2 P3←- 25 P1 P2 P3←-
P4 := P4 :=
26 GRINDER 0 .4 0 .6 0 ←- 26 GRINDER 0 .4 0 .6 0 ←-
0 0
27 VDRILL 0 .2 0 .1 0 ←- 27 VDRILL 0 .2 0 .1 0 ←-
0 .6 0 .6
28 HDRILL 0 .1 0 0 .7 ←- 28 HDRILL 0 .1 0 0 .7 ←-
0 0
29 MILLER 0 .06 0 .04 0 0 .05 29 MILLER 0 .06 0 .04 0 0 .05
30 LATHE 0 0 .05 0 .02 0 30 LATHE 0 0 .05 0 .02 0
31 ; 31 ;
@ -645,13 +428,13 @@ Listing 3: Dane dla modelu AMPL - pominięto scenariusze, pełny zestaw danych d
33 # Ograniczenia rynkowe liczby sprzedawanych produktow pcs 33 # Ograniczenia rynkowe liczby sprzedawanych produktow pcs
34 param salesMarketLimit : 34 param salesMarketLimit :
35 P1 P2 P3 ←- 35 P1 P2 P3 ←-
P4 := P4 :=
36 JAN 200 0 100 ←- 36 JAN 200 0 100 ←-
200 200
37 FEB 300 100 200 ←- 37 FEB 300 100 200 ←-
200 200
38 MAR 0 300 100 ←- 38 MAR 0 300 100 ←-
200 200
39 ; 39 ;
40 40
41 # Ograniczeine liczby magazynowanych produktow pcs 41 # Ograniczeine liczby magazynowanych produktow pcs
@ -721,73 +504,78 @@ Listing 3: Dane dla modelu AMPL - pominięto scenariusze, pełny zestaw danych d
102 RISK 0 102 RISK 0
\end{verbatim} \end{verbatim}
\subsection{Skrypty uruchomieniowe (.run)} \subsection{Skrypty uruchomieniowe (.run)}
\inputminted[autogobble]{R}{../WDWR1.run}
\section{Rozwiązanie zadania optymalizacji} \section{Rozwiązanie zadania optymalizacji}
\subsection{Wyniki dla modelu jednokryterialnego} \subsection{Wyniki dla modelu jednokryterialnego}
$s_{mp}$ oraz wartość wyznaczonego rozwiązania optymalnego: $s_{mp}$ oraz wartość wyznaczonego rozwiązania optymalnego:
$ep = 11987.42[z]$ $ep = 13943.26177[z]$
Listing 7: Wynik działania skryptu wyznaczającego rozwiązanie optymalne modelu jednokryterialnego. Listing 7: Wynik działania skryptu wyznaczającego rozwiązanie optymalne modelu jednokryterialnego.
\begin{verbatim} \begin{verbatim}
1 # ################################################ #################################################
2 ###Maximize profit for expected profit value ### ### Maximize profit for expected profit value ###
3 # ################################################ #################################################
4 CPLEX 12 .8.0.0 : optimal integer solution ; objective 11987 .41899 CPLEX 22.1.2: optimal solution; objective 13943.26177
5 11MIP simplex iterations 7 simplex iterations
6 0branch -and - bound nodes produced :=
7 produced := JAN P1 200
8 JAN P1 200 JAN P2 0
9 JAN P2 0 JAN P3 100
10 JAN P3 100 JAN P4 200
11 JAN P4 200 FEB P1 300
12 FEB P1 200 FEB P2 100
13 FEB P2 0 FEB P3 200
14 FEB P3 200 FEB P4 200
15 FEB P4 200 MAR P1 50
16 MAR P1 50 MAR P2 350
17 MAR P2 250 MAR P3 150
18 MAR P3 150 MAR P4 250
19 MAR P4 250 ;
20 ;
21 sold :=
22 sold := JAN P1 200
23 JAN P1 200 JAN P2 0
24 JAN P2 0 JAN P3 100
25 JAN P3 100 JAN P4 200
26 JAN P4 200 FEB P1 300
27 FEB P1 200 FEB P2 100
28 FEB P2 0 FEB P3 200
29 FEB P3 200 FEB P4 200
30 FEB P4 200 MAR P1 0
31 MAR P1 0 MAR P2 300
32 MAR P2 200 MAR P3 100
33 MAR P3 100 MAR P4 200
34 MAR P4 200 ;
35 ;
36 stored :=
37 stored := JAN P1 0
38 JAN P1 0 JAN P2 0
39 JAN P2 0 JAN P3 0
40 JAN P3 0 JAN P4 0
41 JAN P4 0 FEB P1 0
42 FEB P1 0 FEB P2 0
43 FEB P2 0 FEB P3 0
44 FEB P3 0 FEB P4 0
45 FEB P4 0 MAR P1 50
46 MAR P1 50 MAR P2 50
47 MAR P2 50 MAR P3 50
48 MAR P3 50 MAR P4 50
49 MAR P4 50 ;
Profit: 13943.261775
\end{verbatim} \end{verbatim}
52 Profit: 11987.418989 52 Profit: 13943.261775
\begin{figure}[h!] \begin{figure}[H]
\centering \centering
%\includegraphics[width=\linewidth]{_page_0_Figure_0.jpeg} %\includegraphics[width=\linewidth]{_page_0_Figure_0.jpeg}
\caption{Obraz zbioru rozwiązań efektywnych w przestrzeni ryzyko-zysk} \caption{Obraz zbioru rozwiązań efektywnych w przestrzeni ryzyko-zysk}
@ -912,7 +700,7 @@ Dystrybuanty zysku przedstawia Rysunek 2.
Na podstawie wykresów możemy stwierdzić, że rozwiązanie dla scenariusza z maksymalnym zyskiem dominuje w sensie FSD pozostałe rozwiązania. Dodatkowo widzimy, że rozwiązanie ze scenariusza 3 dominuje w sensie FSD rozwiązanie scenariusza 2. Na podstawie wykresów możemy stwierdzić, że rozwiązanie dla scenariusza z maksymalnym zyskiem dominuje w sensie FSD pozostałe rozwiązania. Dodatkowo widzimy, że rozwiązanie ze scenariusza 3 dominuje w sensie FSD rozwiązanie scenariusza 2.
\begin{figure}[h!] \begin{figure}[H]
\centering \centering
%\includegraphics[width=\linewidth]{_page_0_Figure_0.jpeg} %\includegraphics[width=\linewidth]{_page_0_Figure_0.jpeg}
\caption{Wykres dystrybuant zysku dla poszczególnych rozwiązań} \caption{Wykres dystrybuant zysku dla poszczególnych rozwiązań}