diff --git a/NotProgramming/MOM/.report_one.tex.swp b/NotProgramming/MOM/.report_one.tex.swp deleted file mode 100644 index 4a61c7c2..00000000 --- a/NotProgramming/MOM/.report_one.tex.swp +++ /dev/null @@ -1,141 +0,0 @@ -\documentclass[12pt]{article} -\usepackage[polish]{babel} -\usepackage{float} -\usepackage[utf8]{inputenc} -\usepackage{amsmath} -\usepackage{pdfpages} -\usepackage[T1]{fontenc} % Add this line - \title{Sprawozdanie z projektu MOM} - \author{Krzysztof Rudnicki, 307585} - \date{\today} -\begin{document} - -\maketitle -\section{Zadanie 1. Sieć przepływowa} - -\subsection{Model sieciowy} -\paragraph{Problem do rozwiązania} -Należy rozwiązać problem najtańszego przepływu \\ -\begin{figure}[htb] -\caption{Koszty transportowe i przepustowości na poszczególnych odcinkach} -\begin{center} -\begin{tabular}{ | c | c | c | c | c | c | } -\hline - & D & E & F & G & H \\ - \hline - A & 4, 15 & 2, 10 & - & - & -\\ - \hline - B & 4, 4 & 3, 9 & - & 8, 9 & - \\ - \hline - C & 2, 20 & 6, 10 & - & - & - \\ - \hline - D & - & - & 3, 10 & 7, 3 & 2, 2 \\ - \hline - E & 5, 20 & - & 7, 5 & 6, 5 & 3, 5 \\ - \hline -\end{tabular} -\end{center} -\end{figure} -\begin{figure}[htb] -\caption{Zdolności wydobywcze kopalń (w tys. ton)} -\begin{center} -\begin{tabular}{ | c | c |} -\hline - $W_A$ & 10 \\ - \hline -$W_B$ & 13 \\ - \hline - $W_C$ & 17 \\ - \hline -\end{tabular} -\end{center} -\end{figure} -\begin{figure}[htb] -\caption{Średnie zużycie dobowe węgla przez elektronie (w tys. ton)} -\begin{center} -\begin{tabular}{ | c | c |} -\hline - $Z_F$ & 15 \\ - \hline -$Z_G$ & 13 \\ - \hline - $Z_H$ & 7 \\ - \hline -\end{tabular} -\end{center} -\end{figure} -\paragraph{Sformułowanie} -Matematyczne sformułowanie zadania: -\begin{enumerate} -\item Parametry \\ -s - źródło \\ -B - Budynki (kopalnie, stacje, elektrownie) \\ -K - kopalnie \\ -$c_{ij}$ - koszt transportu z budynku i do budynku j ($c_{sk}$ = 0) \\ -$W_k$ - zdolność wydobywcza kopalni k [w tonach] \\ -$p_{ij}$ - przepustowość transportu z budynku i do budynku j [w tonach] ($u_{sk}$ = $W_k$) \\ -E - elektrownie \\ -$Z_e$ - średnie zużycie dobowe przez elektrownię e [w tonach] \\ -\item Zmienne decyzyjne -$f_{ij}$ - przepływ transportu z budynku i do obiektu j \\ -\item Funkcja celu -\begin{align*} - Q &= \min\left(\sum_{(i, j) \in B \backslash \{s\}} c_{ij} f_{ij}\right) \\ - &= \min(4f_{AD} + 2f_{AE} + 4f_{BD} + 3f_{BE} + 8f_{BG} + 2f_{CD} \\ - &\quad + 6f_{CE} + 3f_{DF} + 7f_{DG} + 2f_{DH} + 5f_{ED} + 7f_{EF} \\ - &\quad + 6f_{EG} + 3f_{EH}) -\end{align*} - -\item Ograniczenia -\begin{equation} - 0 \leq f_{sk} \leq W_k, \; k \in K = \{A, B, C\} -\end{equation} -\begin{equation} - f_{si} = 0, \; i \in B \backslash K -\end{equation} -\begin{equation} - f_{is} = 0, \; i \in B -\end{equation} -\begin{equation} - 0 \leq f_{ij} \leq p_{uj}, \; (i, j) \in B \backslash \{s\} -\end{equation} -\begin{equation} - f_{is} = 0, \; i \in B -\end{equation} -\begin{equation} - \sum_{b \in B} f_{be} \ge Z_e, \; e \in E = \{F, G, H\} -\end{equation} -\begin{equation} - \sum_{i \in B \backslash \{ s \} } f_{bi} \leq \sum_{j \in B} f_{bn}, \; b \in B \backslash \{s\} -\end{equation} - -\end{enumerate} -\paragraph{Narysowanie modelu} -\includepdf[pages=-]{1flow.pdf} - -\subsection{Rozwiązanie}Z -\paragraph{Metoda } - - -\subsection{Zadanie programowania liniowego} - -\section{Zadanie 2. Zadanie przydziału} -\subsection{Zadanie 2.1 Planowanie realizacji portfela przy ograniczonych kompetencjach} -\paragraph{Model sieciowy rysunek} -\subsubsection{Problem do rozwiązania} -\paragraph{Rozwiazanie} -\paragraph{Przydział zespołów do projektów} -\subsection{Zadanie 2.2 Minimalizacja kosztów realizacji projektów} -\paragraph{Model sieciowy rysunek} -\paragraph{Problem do rozwiązania} -\paragraph{Rozwiazanie} -\subsection{Zadanie 2.3 Minimalizacja terminu realizacji puli projektów} -\paragraph{Model programowania liniowego} - - - -\section{Zadanie 3} -\paragraph{Model programowania liniowego} - -\end{document} - diff --git a/NotProgramming/MOM/12glpk.dat b/NotProgramming/MOM/12glpk.dat new file mode 100644 index 00000000..9dd3b201 --- /dev/null +++ b/NotProgramming/MOM/12glpk.dat @@ -0,0 +1,18 @@ +data; + +set BudynkiNaStart := s, A, B, C, D, E, F, G, H; +set Budynki := A, B, C, D, E, F, G, H; +set Elektrownie := F, G, H; + +param p := +s A 10 s B 13 s C 17 s D 0 s E 0 s F 0 s G 0 s H 0 +A A 0 A B 0 A C 0 A D 15 A E 10 A F 0 A G 0 A H 0 +B A 0 B B 0 B C 0 B D 4 B E 9 B F 0 B G 9 B H 0 +C A 0 C B 0 C C 0 C D 20 C E 10 C F 0 C G 0 C H 0 +D A 0 D B 0 D C 0 D D 0 D E 0 D F 10 D G 3 D H 2 +E A 0 E B 0 E C 0 E D 20 E E 0 E F 5 E G 5 E H 5 +F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 +G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 +H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; + +end; \ No newline at end of file diff --git a/NotProgramming/MOM/12glpk.mod b/NotProgramming/MOM/12glpk.mod new file mode 100644 index 00000000..c8f332df --- /dev/null +++ b/NotProgramming/MOM/12glpk.mod @@ -0,0 +1,21 @@ +set BudynkiNaStart; +set Budynki; +set Elektrownie; + +param p{i in BudynkiNaStart, j in Budynki}; + +var f{i in BudynkiNaStart, j in Budynki}, >= 0; + +maximize Q: sum {i in Budynki, e in Elektrownie} f[i,e]; + +subject to + Ogr_1{i in BudynkiNaStart, j in Budynki}: + f[i,j] >= 0; + Ogr_2{i in BudynkiNaStart, j in Budynki}: + f[i,j] <= p[i,j]; + Ogr_3{n in Budynki}: + sum {i in Budynki} f[n,i] <= sum {j in BudynkiNaStart} f[j,n]; + +solve; +display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j]; +display: Q; \ No newline at end of file diff --git a/NotProgramming/MOM/1glpk.dat b/NotProgramming/MOM/1glpk.dat index 2af0d71f..9dd3b201 100644 --- a/NotProgramming/MOM/1glpk.dat +++ b/NotProgramming/MOM/1glpk.dat @@ -4,17 +4,6 @@ set BudynkiNaStart := s, A, B, C, D, E, F, G, H; set Budynki := A, B, C, D, E, F, G, H; set Elektrownie := F, G, H; -param c := -s A 0 s B 0 s C 0 s D 0 s E 0 s F 0 s G 0 s H 0 -A A 0 A B 0 A C 0 A D 4 A E 2 A F 0 A G 0 A H 0 -B A 0 B B 0 B C 0 B D 4 B E 3 B F 0 B G 8 B H 0 -C A 0 C B 0 C C 0 C D 2 C E 6 C F 0 C G 0 C H 0 -D A 0 D B 0 D C 0 D D 0 D E 0 D F 3 D G 7 D H 2 -E A 0 E B 0 E C 0 E D 5 E E 0 E F 7 E G 6 E H 3 -F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 -G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 -H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; - param p := s A 10 s B 13 s C 17 s D 0 s E 0 s F 0 s G 0 s H 0 A A 0 A B 0 A C 0 A D 15 A E 10 A F 0 A G 0 A H 0 @@ -26,6 +15,4 @@ F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; -param Z := F 15 G 13 H 7; - end; \ No newline at end of file diff --git a/NotProgramming/MOM/1glpk.mod b/NotProgramming/MOM/1glpk.mod index 5e9270b5..c8f332df 100644 --- a/NotProgramming/MOM/1glpk.mod +++ b/NotProgramming/MOM/1glpk.mod @@ -2,23 +2,20 @@ set BudynkiNaStart; set Budynki; set Elektrownie; -param c{i in BudynkiNaStart, j in Budynki}; param p{i in BudynkiNaStart, j in Budynki}; -param Z{e in Elektrownie}; var f{i in BudynkiNaStart, j in Budynki}, >= 0; -minimize Q: sum {i in Budynki, j in Budynki} c[i,j] * f[i,j]; +maximize Q: sum {i in Budynki, e in Elektrownie} f[i,e]; subject to - Ograniczenie_1{i in BudynkiNaStart, j in Budynki}: + Ogr_1{i in BudynkiNaStart, j in Budynki}: f[i,j] >= 0; - Ograniczenie_2{i in BudynkiNaStart, j in Budynki}: + Ogr_2{i in BudynkiNaStart, j in Budynki}: f[i,j] <= p[i,j]; - Ograniczenie_3{e in Elektrownie}: - sum {n in BudynkiNaStart} f[n,e] >= Z[e]; - Ograniczenie_4{n in Budynki}: + Ogr_3{n in Budynki}: sum {i in Budynki} f[n,i] <= sum {j in BudynkiNaStart} f[j,n]; solve; -display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j]; \ No newline at end of file +display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j]; +display: Q; \ No newline at end of file diff --git a/NotProgramming/MOM/21glpk.dat b/NotProgramming/MOM/21glpk.dat new file mode 100644 index 00000000..0d4f803b --- /dev/null +++ b/NotProgramming/MOM/21glpk.dat @@ -0,0 +1,19 @@ +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param u := +A 1 0 A 2 0 A 3 1 A 4 1 A 5 0 A 6 1 +B 1 1 B 2 1 B 3 0 B 4 0 B 5 1 B 6 0 +C 1 1 C 2 0 C 3 1 C 4 0 C 5 0 C 6 1 +D 1 1 D 2 0 D 3 1 D 4 0 D 5 0 D 6 1 +E 1 1 E 2 1 E 3 0 E 4 0 E 5 1 E 6 0 +F 1 0 F 2 0 F 3 1 F 4 1 F 5 1 F 6 0; + +end; \ No newline at end of file diff --git a/NotProgramming/MOM/21glpk.mod b/NotProgramming/MOM/21glpk.mod new file mode 100644 index 00000000..7b96d220 --- /dev/null +++ b/NotProgramming/MOM/21glpk.mod @@ -0,0 +1,29 @@ +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param u{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0; + +maximize Q: sum {p in Projekty, t in Wyjscie} f[p,t]; + + Ograniczeni_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczeni_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczeni_trzy{p in Projekty, z in Zespoly}: + f[z,p] <= u[z,p]; + Ograniczeni_cztery{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczeni_piec{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczeni_szesc{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; diff --git a/NotProgramming/MOM/22glpk.dat b/NotProgramming/MOM/22glpk.dat new file mode 100644 index 00000000..babf5bde --- /dev/null +++ b/NotProgramming/MOM/22glpk.dat @@ -0,0 +1,19 @@ +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param k := +A 1 1000 A 2 1000 A 3 2 A 4 10 A 5 1000 A 6 20 +B 1 13 B 2 4 B 3 1000 B 4 1000 B 5 10 B 6 1000 +C 1 1000 C 2 2 C 3 1000 C 4 5 C 5 1000 C 6 6 +D 1 14 D 2 1000 D 3 10 D 4 1000 D 5 1000 D 6 16 +E 1 18 E 2 3 E 3 1000 E 4 1000 E 5 17 E 6 1000 +F 1 1000 F 2 1000 F 3 13 F 4 15 F 5 12 F 6 1000; + +end; \ No newline at end of file diff --git a/NotProgramming/MOM/22glpk.mod b/NotProgramming/MOM/22glpk.mod new file mode 100644 index 00000000..704fb392 --- /dev/null +++ b/NotProgramming/MOM/22glpk.mod @@ -0,0 +1,27 @@ +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param k{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0; + +minimize Q: sum {p in Projekty, z in Zespoly} k[z, p] * f[z, p]; + + Ograniczenie_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczenie_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczenie_trzy{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczenie_cztery{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczenie_piec{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; diff --git a/NotProgramming/MOM/23glpk.dat b/NotProgramming/MOM/23glpk.dat new file mode 100644 index 00000000..59750af7 --- /dev/null +++ b/NotProgramming/MOM/23glpk.dat @@ -0,0 +1,19 @@ +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param c := +A 1 1000 A 2 1000 A 3 2 A 4 10 A 5 1000 A 6 20 +B 1 13 B 2 4 B 3 1000 B 4 1000 B 5 10 B 6 1000 +C 1 1000 C 2 2 C 3 1000 C 4 5 C 5 1000 C 6 6 +D 1 14 D 2 1000 D 3 10 D 4 1000 D 5 1000 D 6 16 +E 1 18 E 2 3 E 3 1000 E 4 1000 E 5 17 E 6 1000 +F 1 1000 F 2 1000 F 3 13 F 4 15 F 5 12 F 6 1000; + +end; \ No newline at end of file diff --git a/NotProgramming/MOM/23glpk.mod b/NotProgramming/MOM/23glpk.mod new file mode 100644 index 00000000..ae719fa1 --- /dev/null +++ b/NotProgramming/MOM/23glpk.mod @@ -0,0 +1,31 @@ +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param c{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0, integer; +var cmax, >= 0; + +minimize Q: cmax; + +subject to + Ograniczenie_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczenie_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczenie_trzy{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczenie_cztery{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczenie_piec{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + Ograniczenie_szesc{z in Zespoly, p in Projekty}: + c[z,p] * f[z,p] <= cmax; +solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; diff --git a/NotProgramming/MOM/flow12.pdf b/NotProgramming/MOM/flow12.pdf new file mode 100644 index 00000000..5909ad00 Binary files /dev/null and b/NotProgramming/MOM/flow12.pdf differ diff --git a/NotProgramming/MOM/flowchart21 b/NotProgramming/MOM/flowchart21 new file mode 100644 index 00000000..d01bdb12 --- /dev/null +++ b/NotProgramming/MOM/flowchart21 @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotProgramming/MOM/flowchart21.pdf b/NotProgramming/MOM/flowchart21.pdf new file mode 100644 index 00000000..b6bccb57 Binary files /dev/null and b/NotProgramming/MOM/flowchart21.pdf differ diff --git a/NotProgramming/MOM/flowchart22 b/NotProgramming/MOM/flowchart22 new file mode 100644 index 00000000..b3899f4f --- /dev/null +++ b/NotProgramming/MOM/flowchart22 @@ -0,0 +1,371 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotProgramming/MOM/flowchart22.pdf b/NotProgramming/MOM/flowchart22.pdf new file mode 100644 index 00000000..796c27cc Binary files /dev/null and b/NotProgramming/MOM/flowchart22.pdf differ diff --git a/NotProgramming/MOM/graphs12 b/NotProgramming/MOM/graphs12 new file mode 100644 index 00000000..eb14d896 --- /dev/null +++ b/NotProgramming/MOM/graphs12 @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotProgramming/MOM/report_one.tex b/NotProgramming/MOM/report_one.tex index 4a61c7c2..a6cfa374 100644 --- a/NotProgramming/MOM/report_one.tex +++ b/NotProgramming/MOM/report_one.tex @@ -1,6 +1,7 @@ \documentclass[12pt]{article} \usepackage[polish]{babel} \usepackage{float} +\usepackage{listings} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{pdfpages} @@ -113,29 +114,691 @@ $f_{ij}$ - przepływ transportu z budynku i do obiektu j \\ \paragraph{Narysowanie modelu} \includepdf[pages=-]{1flow.pdf} -\subsection{Rozwiązanie}Z -\paragraph{Metoda } +\subsection{Rozwiązanie} +\paragraph{Zadanie programowania liniowego} + +\begin{lstlisting}[caption= plik dat] +data; + +set BudynkiNaStart := s, A, B, C, D, E, F, G, H; +set Budynki := A, B, C, D, E, F, G, H; +set Elektrownie := F, G, H; + +param Z := F 15 G 13 H 7; + +param p := +s A 10 s B 13 s C 17 s D 0 s E 0 s F 0 s G 0 s H 0 +A A 0 A B 0 A C 0 A D 15 A E 10 A F 0 A G 0 A H 0 +B A 0 B B 0 B C 0 B D 4 B E 9 B F 0 B G 9 B H 0 +C A 0 C B 0 C C 0 C D 20 C E 10 C F 0 C G 0 C H 0 +D A 0 D B 0 D C 0 D D 0 D E 0 D F 10 D G 3 D H 2 +E A 0 E B 0 E C 0 E D 20 E E 0 E F 5 E G 5 E H 5 +F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 +G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 +H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; + +param c := +s A 0 s B 0 s C 0 s D 0 s E 0 s F 0 s G 0 s H 0 +A A 0 A B 0 A C 0 A D 4 A E 2 A F 0 A G 0 A H 0 +B A 0 B B 0 B C 0 B D 4 B E 3 B F 0 B G 8 B H 0 +C A 0 C B 0 C C 0 C D 2 C E 6 C F 0 C G 0 C H 0 +D A 0 D B 0 D C 0 D D 0 D E 0 D F 3 D G 7 D H 2 +E A 0 E B 0 E C 0 E D 5 E E 0 E F 7 E G 6 E H 3 +F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 +G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 +H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; + +end; +\end{lstlisting} +\begin{lstlisting}[caption= plik mod] +set BudynkiNaStart; +set Budynki; +set Elektrownie; + +param Z{e in Elektrownie}; +param p{i in BudynkiNaStart, j in Budynki}; +param c{i in BudynkiNaStart, j in Budynki}; + +var f{i in BudynkiNaStart, j in Budynki}, >= 0; + +minimize Q: sum {i in Budynki, j in Budynki} c[i,j] * f[i,j]; + +subject to + Ograniczenie_jeden{i in BudynkiNaStart, j in Budynki}: + f[i,j] >= 0; + Ograniczenie_dwa{i in BudynkiNaStart, j in Budynki}: + f[i,j] <= p[i,j]; + Ograniczenie_trzy{e in Elektrownie}: + sum {n in BudynkiNaStart} f[n,e] >= Z[e]; + Ograniczenie_cztery{n in Budynki}: + sum {i in Budynki} f[n,i] <= sum {j in BudynkiNaStart} f[j,n]; + +solve; +display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j]; +display: Q; +\end{lstlisting} +\paragraph{Wynik} +\begin{lstlisting}[caption=Wynik z glpk] +f[A,E].val = 10 +f[B,E].val = 4 +f[B,G].val = 9 +f[C,D].val = 12 +f[D,F].val = 10 +f[D,H].val = 2 +f[E,F].val = 5 +f[E,G].val = 4 +f[E,H].val = 5 +Q.val = 236 +\end{lstlisting} + +\begin{figure}[htb] +\caption{Plan dostaw węgla} +\begin{center} +\begin{tabular}{ | c | c | c | c | c | c | } +\hline + & D & E & F & G & H \\ + \hline + A & 10 & - & - & - & -\\ + \hline + B & 0 & 4 & - & 9 & - \\ + \hline + C & 12 & - & - & - & - \\ + \hline + D & - & - & 10 & - & 2 \\ + \hline + E & - & - & 5 & 4 & 5 \\ + \hline +\end{tabular} +\end{center} +\end{figure} + +\[ Q = 236 \] + +\subsection{Wąskie gardło} +Następny szukamy przekroju o jak najmniejszej przepustowości \\ +W tym celu usunęliśmy parametry dotyczące średniego zużycia dobowego oraz kosztów transportu i zostawiliśmy wyłącznie przepustowość +\begin{lstlisting}[caption= plik dat] +data; + +set BudynkiNaStart := s, A, B, C, D, E, F, G, H; +set Budynki := A, B, C, D, E, F, G, H; +set Elektrownie := F, G, H; + +param p := +s A 10 s B 13 s C 17 s D 0 s E 0 s F 0 s G 0 s H 0 +A A 0 A B 0 A C 0 A D 15 A E 10 A F 0 A G 0 A H 0 +B A 0 B B 0 B C 0 B D 4 B E 9 B F 0 B G 9 B H 0 +C A 0 C B 0 C C 0 C D 20 C E 10 C F 0 C G 0 C H 0 +D A 0 D B 0 D C 0 D D 0 D E 0 D F 10 D G 3 D H 2 +E A 0 E B 0 E C 0 E D 20 E E 0 E F 5 E G 5 E H 5 +F A 0 F B 0 F C 0 F D 0 F E 0 F F 0 F G 0 F H 0 +G A 0 G B 0 G C 0 G D 0 G E 0 G F 0 G G 0 G H 0 +H A 0 H B 0 H C 0 H D 0 H E 0 H F 0 H G 0 H H 0; + +end; +\end{lstlisting} +\begin{lstlisting}[caption= plik mod] +set BudynkiNaStart; +set Budynki; +set Elektrownie; + +param p{i in BudynkiNaStart, j in Budynki}; + +var f{i in BudynkiNaStart, j in Budynki}, >= 0; + +maximize Q: sum {i in Budynki, e in Elektrownie} f[i,e]; + +subject to + Ograniczenie_jeden{i in BudynkiNaStart, j in Budynki}: + f[i,j] >= 0; + Ograniczenie_dwa{i in BudynkiNaStart, j in Budynki}: + f[i,j] <= p[i,j]; + Ograniczenie_trzy{n in Budynki}: + sum {i in Budynki} f[n,i] <= sum {j in BudynkiNaStart} f[j,n]; + +solve; +display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j]; +display: Q; +\end{lstlisting} + +\paragraph{Wyniki} +\begin{lstlisting}[caption=Wynik z glpk] +f[A,D].val = 9 +f[A,E].val = 1 +f[B,E].val = 4 +f[B,G].val = 9 +f[C,D].val = 6 +f[C,E].val = 10 +f[D,F].val = 10 +f[D,G].val = 3 +f[D,H].val = 2 +f[E,F].val = 5 +f[E,G].val = 5 +f[E,H].val = 5 +Q.val = 39 +\end{lstlisting} + +\begin{figure}[htb] +\caption{Wyniki poszukiwań wąskiego gardła} +\begin{center} +\begin{tabular}{ | c | c | c | c | c | c | } +\hline + & D & E & F & G & H \\ + \hline + A & 9 & 1 & - & - & -\\ + \hline + B & - & 4 & - & 9 & - \\ + \hline + C & 6 & 10 & - & - & - \\ + \hline + D & - & - & 10 & 3 & 2 \\ + \hline + E & - & - & 5 & 5 & 5 \\ + \hline +\end{tabular} +\end{center} +\end{figure} + +\[ Q = 39 \] + +\includepdf[pages=-]{flow12.pdf} + +\paragraph{Wnioski} +Następujące przepływy są zbyt niskie w porównaniu do przepustowości: +\[ p_{AD} = 9 \le 15 \] +\[ p_{AE} = 1 \le 10 \] +\[ p_{BE} = 4 \le 9 \] +\[ p_{CD} = 6 \le 20 \] +Zwiększenie przepływów do poziomu maksymalnej przepustowości zwiększyło by wydajność sieci -\subsection{Zadanie programowania liniowego} \section{Zadanie 2. Zadanie przydziału} \subsection{Zadanie 2.1 Planowanie realizacji portfela przy ograniczonych kompetencjach} -\paragraph{Model sieciowy rysunek} +\begin{figure}[htb] +\caption{Kompetencje zespołów} +\begin{center} +\begin{tabular}{ | c | c | c | c | c | c | c | } +\hline + & A & B & C & D & E & F \\ + \hline + 1 & - & X & - & X & X & - \\ + \hline + 2 & - & X & X & - & X & - \\ + \hline + 3 & X & - & - & X & - & X \\ + \hline + 4 & X & - & X & - & - & X \\ + \hline + 5 & - & X & - & - & X & X \\ + \hline + 6 & X & - & X & X & - & - \\ + \hline +\end{tabular} +\end{center} +\end{figure} \subsubsection{Problem do rozwiązania} -\paragraph{Rozwiazanie} -\paragraph{Przydział zespołów do projektów} -\subsection{Zadanie 2.2 Minimalizacja kosztów realizacji projektów} +\paragraph{Sformułowanie} +Matematyczne sformułowanie zadania: +\begin{enumerate} +\item Parametry \\ +s - źródło \\ +w - wyjście \\ +N - węzły (N = {s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F}) +P - projekty (P = {1, 2, 3, 4, 5, 6} $\subseteq$ N) +Z - zespoły (Z = {A, B, C, D, E, F} $\subseteq$ N) +$u_{ij}$ - przepustowość pomiędzy węzłem i a węzłem j +\item Zmienne decyzyjne +$f_{ij}$ - przepływ między węzłem i a węzłem j +\item Funkcja celu +\begin{align*} + Q &= \max\left(\sum_{p \in P} f_{pt} \right) \\ + &= \max(f_{1t} + f_{2t} + f_{3t} + f_{4t} + f{5t} + f_{6t}) +\end{align*} + +\item Ograniczenia +\setcounter{equation}{0} +\begin{equation} +0 \leq f_{ij} \leq 1, (i, j) \in N +\end{equation} +\begin{equation} +0 \leq f_{zp} \leq u_{zp}, z \in Z, p \in P +\end{equation} +\begin{equation} +f_{si} = 0, i \in \{ s, t, 1, 2, 3, 4, 5, 6 \} +\end{equation} +\begin{equation} +f_{is} = 0, i \in N +\end{equation} +\begin{equation} +f_{ti} = 0, i \in N +\end{equation} +\begin{equation} +f_{it} = 0, i \in \{s, t, A, B, C, D, E, F\} +\end{equation} +\begin{equation} +\sum_{z \in Z} f_{zp} = 1, p \in P = \{ 1, 2, 3, 4, 5, 6 \} +\end{equation} + +\begin{equation} +\sum_{p \in P} f_{zp} = 1, z \in Z = \{ A, B, C, D, E, F \} +\end{equation} + +\begin{equation} +\sum_{i \in N \backslash \{s\}} f_{ni} = \sum_{j \in N \backslash \{t\}} f_{jn}, n \in N \backslash \{ s, t \} +\end{equation} + + + +\end{enumerate} + \paragraph{Model sieciowy rysunek} -\paragraph{Problem do rozwiązania} +\includepdf[pages=-]{flowchart21.pdf} \paragraph{Rozwiazanie} +\begin{lstlisting}[caption= plik dat] +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param u := +A 1 0 A 2 0 A 3 1 A 4 1 A 5 0 A 6 1 +B 1 1 B 2 1 B 3 0 B 4 0 B 5 1 B 6 0 +C 1 1 C 2 0 C 3 1 C 4 0 C 5 0 C 6 1 +D 1 1 D 2 0 D 3 1 D 4 0 D 5 0 D 6 1 +E 1 1 E 2 1 E 3 0 E 4 0 E 5 1 E 6 0 +F 1 0 F 2 0 F 3 1 F 4 1 F 5 1 F 6 0; + +end; +\end{lstlisting} +\begin{lstlisting}[caption= plik mod] +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param u{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0; + +maximize Q: sum {p in Projekty, t in Wyjscie} f[p,t]; + + Ograniczeni_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczeni_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczeni_trzy{p in Projekty, z in Zespoly}: + f[z,p] <= u[z,p]; + Ograniczeni_cztery{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczeni_piec{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczeni_szesc{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; + + +\end{lstlisting} +\paragraph{Przydział zespołów do projektów} +\begin{lstlisting}[caption=wynik z glpk] +f[A,6].val = 1 +f[B,5].val = 1 +f[C,1].val = 1 +f[D,3].val = 1 +f[E,2].val = 1 +f[F,4].val = 1 +Q.val = 6 +\end{lstlisting} +Wyniki: \\ +Projekt numer \textbf{1} zostanie przydzielony zespołowi \textbf{C} \\ +Projekt numer \textbf{2} zostanie przydzielony zespołowi \textbf{E} \\ +Projekt numer \textbf{3} zostanie przydzielony zespołowi \textbf{D} \\ +Projekt numer \textbf{4} zostanie przydzielony zespołowi \textbf{F} \\ +Projekt numer \textbf{5} zostanie przydzielony zespołowi \textbf{B} \\ +Projekt numer \textbf{6} zostanie przydzielony zespołowi \textbf{A} \\ +\subsection{Zadanie 2.2 Minimalizacja kosztów realizacji projektów} +\paragraph{Problem do rozwiązania} +\begin{figure}[htb] +\caption{Koszty wynajmu} +\begin{center} +\begin{tabular}{ | c | c | c | c | c | c | c | } +\hline + & A & B & C & D & E & F \\ + \hline + 1 & - & 13 & - & 14 & 18 & - \\ + \hline + 2 & - & 4 & 2 & - & 3 & - \\ + \hline + 3 & 2 & - & - & 10 & - & 13 \\ + \hline + 4 & 10 & - & 5 & - & - & 15 \\ + \hline + 5 & - & 10 & - & - & 17 & 12 \\ + \hline + 6 & 20 & - & 6 & 16 & - & - \\ + \hline +\end{tabular} +\end{center} +\end{figure} + +\begin{enumerate} +\item Parametry \\ +s - źródło \\ +w - wyjście \\ +N - węzły (N = {s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F}) +P - projekty (P = {1, 2, 3, 4, 5, 6} $\subseteq$ N) +Z - zespoły (Z = {A, B, C, D, E, F} $\subseteq$ N) +$k_{zp}$ - koszty przyporządkowania zespołu z do projektu p + +\item Zmienne decyzyjne: +$f_{ij}$ - przeływ pomiędzy węzłem i oraz węzłem j +\item Funkcja celu +\begin{align*} + Q &= \min \left(\sum_{z \in Z, p \in P} c_{zp}f_{zp} \right) \\ + &= \min \big( 13f_{B1} + 14f_{D1} + 18f_{E1} + 4f_{B2} + 2f_{C2} + 3f_{E2} \\ + &\quad + 2f_{A3} + 10f_{D3} + 13f_{F3} + 10f_{A4} + 5f_{C4} + 15f_{F4} \\ + &\quad + 10f_{B5} + 17f_{E5} + 12f_{F5} + 20f_{A6} + 6f_{C6} + 16f_{D6} \big) +\end{align*} + + +\item Ograniczenia +\setcounter{equation}{0} +\begin{equation} +0 \leq f_{ij} \leq 1, (i, j) \in N +\end{equation} +\begin{equation} +f_{si} = 0, i \in \{ s, t, 1, 2, 3, 4, 5, 6 \} +\end{equation} +\begin{equation} +f_{is} = 0, i \in N +\end{equation} +\begin{equation} +f_{ti} = 0, i \in N +\end{equation} +\begin{equation} +f_{it} = 0, i \in \{s, t, A, B, C, D, E, F\} +\end{equation} +\begin{equation} +\sum_{z \in Z} f_{zp} = 1, p \in P = \{ 1, 2, 3, 4, 5, 6 \} +\end{equation} +\begin{equation} +\sum_{p \in P} f_{zp} = 1, z \in Z = \{ A, B, C, D, E, F \} +\end{equation} +\begin{equation} +\sum_{i \in N \backslash \{s\}} f_{ni} = \sum_{j \in N \backslash \{t\}} f_{jn}, n \in N \backslash \{ s, t \} +\end{equation} + +\end{enumerate} +\paragraph{Model sieciowy rysunek} +\includepdf[pages=-]{flowchart22.pdf} +\paragraph{Rozwiazanie} +\begin{lstlisting}[caption= plik dat] +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param k := +A 1 1000 A 2 1000 A 3 2 A 4 10 A 5 1000 A 6 20 +B 1 13 B 2 4 B 3 1000 B 4 1000 B 5 10 B 6 1000 +C 1 1000 C 2 2 C 3 1000 C 4 5 C 5 1000 C 6 6 +D 1 14 D 2 1000 D 3 10 D 4 1000 D 5 1000 D 6 16 +E 1 18 E 2 3 E 3 1000 E 4 1000 E 5 17 E 6 1000 +F 1 1000 F 2 1000 F 3 13 F 4 15 F 5 12 F 6 1000; + +end; +\end{lstlisting} +\begin{lstlisting}[caption= plik mod] +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param k{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0; + +minimize Q: sum {p in Projekty, z in Zespoly} k[z, p] * f[z, p]; + + Ograniczenie_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczenie_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczenie_trzy{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczenie_cztery{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczenie_piec{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; + + + +\end{lstlisting} +\paragraph{Przydział zespołów do projektów} +\begin{lstlisting}[caption=wynik z glpk] +f[A,3].val = 1 +f[B,5].val = 1 +f[C,6].val = 1 +f[D,1].val = 1 +f[E,2].val = 1 +f[F,4].val = 1 +Q.val = 50 +\end{lstlisting} +Wyniki: \\ +Projekt numer \textbf{1} zostanie przydzielony zespołowi \textbf{D} \\ +Projekt numer \textbf{2} zostanie przydzielony zespołowi \textbf{E} \\ +Projekt numer \textbf{3} zostanie przydzielony zespołowi \textbf{A} \\ +Projekt numer \textbf{4} zostanie przydzielony zespołowi \textbf{F} \\ +Projekt numer \textbf{5} zostanie przydzielony zespołowi \textbf{B} \\ +Projekt numer \textbf{6} zostanie przydzielony zespołowi \textbf{C} \\ \subsection{Zadanie 2.3 Minimalizacja terminu realizacji puli projektów} +\begin{figure}[htb] +\caption{Czas realizacji projektów} +\begin{center} +\begin{tabular}{ | c | c | c | c | c | c | c | } +\hline + & A & B & C & D & E & F \\ + \hline + 1 & - & 13 & - & 14 & 18 & - \\ + \hline + 2 & - & 4 & 2 & - & 3 & - \\ + \hline + 3 & 2 & - & - & 10 & - & 13 \\ + \hline + 4 & 10 & - & 5 & - & - & 15 \\ + \hline + 5 & - & 10 & - & - & 17 & 12 \\ + \hline + 6 & 20 & - & 6 & 16 & - & - \\ + \hline +\end{tabular} +\end{center} +\end{figure} + +\begin{enumerate} +\item Parametry \\ +s - źródło \\ +w - wyjście \\ +N - węzły (N = {s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F}) +P - projekty (P = {1, 2, 3, 4, 5, 6} $\subseteq$ N) +Z - zespoły (Z = {A, B, C, D, E, F} $\subseteq$ N) +$t_{zp}$ - czas realizacji projektu p przez zespół z [w miesiącach] + +\item Zmienne decyzyjne: +$f_{ij}$ - przeływ pomiędzy węzłem i oraz węzłem j +\item Funkcja celu +\begin{align*} + Q &= \min \left( \max_{z \in Z, p \in P} c_{zp} f_{zp} \right) \\ + &= \min \big\{13f_{B1}, 14f_{D1}, 18f_{E1}, 4f_{B2}, 2f_{C2}, 3f_{E2}, \\ + &\quad 2f_{A3}, 10f_{D3},13f_{F3}, 10f_{A4}, 5f_{C4}, 15f_{F4} \\ + &\quad 10f_{B5}, 17f_{E5}, 12f_{F5}, 20f_{A6}, 6f_{C6}, 16f_{D6} \big\} +\end{align*} + + +\item Ograniczenia +\setcounter{equation}{0} +\begin{equation} +0 \leq f_{ij} \leq 1, \; (i, j) \in N +\end{equation} +\begin{equation} +f_{si} = 0, \; i \in \{ s, t, 1, 2, 3, 4, 5, 6 \} +\end{equation} +\begin{equation} +f_{is} = 0, \; i \in N +\end{equation} +\begin{equation} +f_{ti} = 0, \; i \in N +\end{equation} +\begin{equation} +f_{it} = 0, \; i \in \{s, t, A, B, C, D, E, F\} +\end{equation} +\begin{equation} +\sum_{z \in Z} f_{zp} = 1, \; p \in P = \{ 1, 2, 3, 4, 5, 6 \} +\end{equation} +\begin{equation} +\sum_{p \in P} f_{zp} = 1, \; z \in Z = \{ A, B, C, D, E, F \} +\end{equation} +\begin{equation} +\sum_{i \in N \backslash \{s\}} f_{ni} = \sum_{j \in N \backslash \{t\}} f_{jn}, \; n \in N \backslash \{ s, t \} +\end{equation} + +\end{enumerate} +\paragraph{Model sieciowy rysunek} +\includepdf[pages=-]{flowchart22.pdf} \paragraph{Model programowania liniowego} +\begin{lstlisting}[caption= plik dat] +data; + +set Wyjscie := t; +set Wezly := 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWezly := s, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set WyjscieWezly := t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set StartWyjscieWezly := s, t, 1, 2, 3, 4, 5, 6, A, B, C, D, E, F; +set Projekty := 1, 2, 3, 4, 5, 6; +set Zespoly := A, B, C, D, E, F; + +param c := +A 1 1000 A 2 1000 A 3 2 A 4 10 A 5 1000 A 6 20 +B 1 13 B 2 4 B 3 1000 B 4 1000 B 5 10 B 6 1000 +C 1 1000 C 2 2 C 3 1000 C 4 5 C 5 1000 C 6 6 +D 1 14 D 2 1000 D 3 10 D 4 1000 D 5 1000 D 6 16 +E 1 18 E 2 3 E 3 1000 E 4 1000 E 5 17 E 6 1000 +F 1 1000 F 2 1000 F 3 13 F 4 15 F 5 12 F 6 1000; + +end; +\end{lstlisting} +\begin{lstlisting}[caption= plik mod] +set Wyjscie; +set Wezly; +set StartWezly; +set WyjscieWezly; +set StartWyjscieWezly; +set Projekty; +set Zespoly; + +param c{z in Zespoly, p in Projekty}; + +var f{i in StartWyjscieWezly, j in StartWyjscieWezly}, >= 0, integer; +var cmax, >= 0; + +minimize Q: cmax; + +subject to + Ograniczenie_jeden{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] >= 0; + Ograniczenie_dwa{i in StartWyjscieWezly, j in StartWyjscieWezly}: + f[i,j] <= 1; + Ograniczenie_trzy{p in Projekty}: + sum {z in Zespoly} f[z,p] = 1; + Ograniczenie_cztery{z in Zespoly}: + sum {p in Projekty} f[z,p] = 1; + Ograniczenie_piec{n in Wezly}: + sum {i in WyjscieWezly} f[n,i] = sum {j in StartWezly} f[j,n]; + Ograniczenie_szesc{z in Zespoly, p in Projekty}: + c[z,p] * f[z,p] <= cmax; +solve; +display {i in Wezly, j in Wezly: f[i,j] > 0}: f[i,j]; +display: Q; +\end{lstlisting} - - +\begin{lstlisting}[caption=wynik z glpk] +f[A,4].val = 1 +f[B,1].val = 1 +f[C,6].val = 1 +f[D,3].val = 1 +f[E,2].val = 1 +f[F,5].val = 1 +Q.val = 13 +\end{lstlisting} +Wyniki: \\ +Projekt numer \textbf{1} zostanie przydzielony zespołowi \textbf{B} \\ +Projekt numer \textbf{2} zostanie przydzielony zespołowi \textbf{E} \\ +Projekt numer \textbf{3} zostanie przydzielony zespołowi \textbf{D} \\ +Projekt numer \textbf{4} zostanie przydzielony zespołowi \textbf{A} \\ +Projekt numer \textbf{5} zostanie przydzielony zespołowi \textbf{F} \\ +Projekt numer \textbf{6} zostanie przydzielony zespołowi \textbf{C} \\ \section{Zadanie 3} \paragraph{Model programowania liniowego} +\begin{enumerate} +\item Parametry \\ +m - liczba różnych zasobów, i $\in$ N \\ +n - liczba różnych produktów, j $\in$ N \\ +$c_{i}^{max}$ - Maksymalna przepustowość dla zasobu i \\ +$A_{ij}$ - Użycie zasobu i przez produkt j \\ +$q_j$ - Limit produkcji dla produktu j, po którym zmniejsza się przychód na jednostce \\ +$p_j$ - Normalny przychód na pojedyńczej sztuce produktu j \\ +$p_j^{disc}$ - Pomniejszony przychód na sztuce produktu j +\item Zmienne decyzyjne +$x_j$ - Wolumin produkcji produktu j +\item Zmienne pomocnicze +$r_j(u)$ - Funkcja wyliczająca przychód dla produktu j bazując na poziomie produkcji u \\ +$c_i$ - Całkowite zużycie zasobu typu i + +\item Funkcja celu +\[ \max Z = \sum_{j=1}^n r_j u_j \] +\[ r_j(u) = \{ \] +\[ p_{j} u \qquad \qquad \qquad \qquad u <= q_j \] +\[ p_j q_j + p_{j}^{disc}(u-q_j), \qquad u => q_j \] +\[ \} \] + +\item Ograniczenia +\setcounter{equation}{0} +Całkowite zużycie zasobów nie może przekraczać dostępnośli dla żadnego zasobu +\begin{equation} +\sum_{j=1}^n A_{ij} \cdot x_j \leq c_i^{max}, \qquad i \in N +\end{equation} +Produkcja każdego produktu j, jest powiżana z właściwym $u_j$ +\begin{equation} +u_j = x_j, \qquad j \in N +\end{equation} +Wolumin produkcji nie może być mniejszy od zera +\begin{equation} +x_j \geq 0, \qquad j \in N +\end{equation} + + +\end{enumerate} \end{document}