Skip to content

Instantly share code, notes, and snippets.

@JakWai01
Created November 5, 2024 16:19
Show Gist options
  • Select an option

  • Save JakWai01/a6d28e79f6e11106e7021888e3c0be9a to your computer and use it in GitHub Desktop.

Select an option

Save JakWai01/a6d28e79f6e11106e7021888e3c0be9a to your computer and use it in GitHub Desktop.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[auto, node distance=1.5cm,>=Stealth]
% Define node styles
\tikzstyle{node} = [circle, draw, minimum size=8mm]
\tikzstyle{source} = [circle, draw, minimum size=8mm, fill=black!20]
\tikzstyle{sink} = [circle, draw, minimum size=8mm, fill=black!20]
\tikzstyle{edge} = [->, thick]
% Nodes
\node[source] (source) at (-3, -3.75) {source};
\node[node, right=3cm of source, yshift=9.00cm] (A1) {A1};
\node[node, below of=A1] (A2) {A2};
\node[node, below of=A2] (A3) {A3};
\node[node, below of=A3] (A4) {A4};
\node[node, below of=A4] (A5) {A5};
\node[node, below of=A5] (A6) {A6};
\node[node, below of=A6] (B1) {B1};
\node[node, below of=B1] (B2) {B2};
\node[node, below of=B2] (B3) {B3};
\node[node, below of=B3] (B4) {B4};
\node[node, below of=B4] (C1) {C1};
\node[node, below of=C1] (C2) {C2};
\node[node, below of=C2] (C3) {C3};
\node[node, right=4cm of A1, yshift=-5.5cm] (F1) {F1};
\node[node, below of=F1] (F2) {F2};
\node[node, below of=F2] (F3) {F3};
\node[node, below of=F3] (F4) {F4};
\node[node, below of=F4] (F5) {F5};
\node[node, below of=F5] (F6) {F6};
\node[sink, right=3cm of F3, yshift=-0.25cm] (sink) {sink};
% Source edges
\foreach \i in {A1, A2, A3, A4, A5, A6, B1, B2, B3, B4, C1, C2, C3}
\draw[edge] (source) -- (\i);
% Edges between left and right nodes with weights
\draw[edge, blue] (A1) -- node[above] {7} (F1);
\draw[edge, blue] (A2) -- node[above] {7} (F2);
\draw[edge, blue] (A3) -- node[above] {7} (F3);
\draw[edge, blue] (A4) -- node[above] {7} (F4);
\draw[edge, blue] (A5) -- node[above] {7} (F5);
\draw[edge, blue] (A6) -- node[above] {7} (F6);
\draw[edge, red] (B1) -- node[above right] {8} (F1);
\draw[edge, red] (B2) -- node[above right] {8} (F2);
\draw[edge, red] (B3) -- node[above] {8} (F4);
\draw[edge, red] (B4) -- node[above] {8} (F6);
\draw[edge, green] (C1) -- node[above right] {5} (F1);
\draw[edge, green] (C1) -- node[above right] {5} (F2);
\draw[edge, green] (C2) -- node[above] {10} (F3);
\draw[edge, green] (C3) -- node[above] {10} (F5);
% Right-side edges to sink
\foreach \i/\w in {F1/20, F2/20, F3/17, F4/15, F5/17, F6/15}
\draw[edge] (\i) -- node[above] {\w} (sink);
\end{tikzpicture}
\caption{Network flow graph}
\end{figure}
\begin{figure}
\begin{tikzpicture}
% Define spacing and length variables
\def\lineLength{12} % Length of each line
\def\tickSpacing{0.1} % Spacing between ticks
% Adjust y-coordinates for larger spacing
\def\lineAShift{5} % y-coordinate of line A
\def\lineBShift{2.5} % y-coordinate of line B
\def\lineCShift{0} % y-coordinate of line C
% Draw line A
\node[left] at (0, \lineAShift) {};
\draw[->] (0, \lineAShift) -- ++(\lineLength, 0);
\foreach \x in {0,...,11} % Add tick marks along the line
\draw (\x, \lineAShift - 0.2) -- ++(0, 0.4);
% Frame 1
\draw[fill=blue!20, draw=blue] (0, \lineAShift) rectangle (0.7, \lineAShift + 0.5);
\node at (0.35, \lineAShift + 0.2) {$A_1$};
\node at (0.35, \lineAShift + 1) {7};
\draw[fill=red!20, draw=red] (0.7, \lineAShift) rectangle (1.5, \lineAShift + 0.5);
\node at (1.1, \lineAShift + 0.2) {$B_1$};
\node at (1.1, \lineAShift + 1) {8};
\draw[fill=green!20, draw=green] (1.5, \lineAShift) rectangle (2, \lineAShift + 0.5);
\node at (1.75, \lineAShift + 0.2) {$C_1$};
\node at (1.75, \lineAShift + 1) {5};
% Frame 2
\draw[fill=blue!20, draw=blue] (2, \lineAShift) rectangle (2.7, \lineAShift + 0.5);
\node at (2.35, \lineAShift + 0.2) {$A_2$};
\node at (2.35, \lineAShift + 1) {7};
\draw[fill=green!20, draw=green] (2.7, \lineAShift) rectangle (3.3, \lineAShift + 0.5);
\node at (3.0, \lineAShift + 0.2) {$C_1$};
\node at (3.0, \lineAShift + 1) {5};
\draw[fill=red!20, draw=red] (3.3, \lineAShift) rectangle (4, \lineAShift + 0.5);
\node at (3.65, \lineAShift + 0.2) {$B_2$};
\node at (3.65, \lineAShift + 1) {8};
% Frame 3
\draw[fill=blue!20, draw=blue] (4, \lineAShift) rectangle (4.7, \lineAShift + 0.5);
\node at (4.35, \lineAShift + 0.2) {$A_3$};
\node at (4.35, \lineAShift + 1) {7};
\draw[fill=green!20, draw=green] (4.7, \lineAShift) rectangle (5.7, \lineAShift + 0.5);
\node at (5.2, \lineAShift + 0.2) {$C_2$};
\node at (5.2, \lineAShift + 1) {10};
% Frame 4
\draw[fill=blue!20, draw=blue] (6, \lineAShift) rectangle (6.7, \lineAShift + 0.5);
\node at (6.35, \lineAShift + 0.2) {$A_4$};
\node at (6.35, \lineAShift + 1) {7};
\draw[fill=red!20, draw=red] (6.7, \lineAShift) rectangle (7.5, \lineAShift + 0.5);
\node at (7.1, \lineAShift + 0.2) {$B_3$};
\node at (7.1, \lineAShift + 1) {8};
% Frame 5
\draw[fill=blue!20, draw=blue] (8, \lineAShift) rectangle (8.7, \lineAShift + 0.5);
\node at (8.35, \lineAShift + 0.2) {$A_5$};
\node at (8.35, \lineAShift + 1) {7};
\draw[fill=green!20, draw=green] (8.7, \lineAShift) rectangle (9.7, \lineAShift + 0.5);
\node at (9.2, \lineAShift + 0.2) {$C_3$};
\node at (9.2, \lineAShift + 1) {10};
% Frame 6
\draw[fill=blue!20, draw=blue] (10, \lineAShift) rectangle (10.7, \lineAShift + 0.5);
\node at (10.35, \lineAShift + 0.2) {$A_6$};
\node at (10.35, \lineAShift + 1) {7};
\draw[fill=red!20, draw=red] (10.7, \lineAShift) rectangle (11.5, \lineAShift + 0.5);
\node at (11.1, \lineAShift + 0.2) {$B_4$};
\node at (11.1, \lineAShift + 1) {8};
% Arrows under timesteps on line A
\node[below] at (0, \lineAShift - 0.2) {0};
\node[below] at (2, \lineAShift - 0.2) {20};
\node[below] at (4, \lineAShift - 0.2) {40};
\node[below] at (6, \lineAShift - 0.2) {60};
\node[below] at (8, \lineAShift - 0.2) {80};
\node[below] at (10, \lineAShift - 0.2) {100};
\end{tikzpicture}
\caption{Frame-based Schedule}
\end{figure}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment