mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 18:43:15 +02:00
805 lines
22 KiB
TeX
805 lines
22 KiB
TeX
\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}
|
||
|