WUT_Computer_Science/NotProgramming/MOM/report_one.tex

805 lines
22 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[12pt]{article}
\usepackage[polish]{babel}
\usepackage{float}
\usepackage{listings}
\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}
\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
\section{Zadanie 2. Zadanie przydziału}
\subsection{Zadanie 2.1 Planowanie realizacji portfela przy ograniczonych kompetencjach}
\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{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}
\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}