\documentclass[a4paper, 12pt]{article}

\newcommand{\bold}{\textbf}

\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{indentfirst}

\begin{document}

\newcommand{\q2}{\quad\quad}

\title{\Large{\bold{Moontorio}}}
\author{Matei Adriel}
\date {}

\maketitle

\section{Describing a factory}

A factory is made out of machines. A machine is either a provider, a belt or a  consumer. Machines are connected by ports.

\begin{figure}[h]

\begin{equation}
\begin{split}
Machines\ A,\ B,\ C\ &::=\; belt\ p_i\ p_o \\
        &\quad|\quad provider\ p_1,\ p_2,\ ...\ p_n \\
        &\quad|\quad consumer\ p_1,\ p_2,\ ...\ p_n
\end{split}
\end{equation}
\caption{Machines}
\label{Machines}
\end{figure}

We can represent the factory as a directed graph, with the machines being the nodes and the ports being the edges:

\vspace*{20pt}
\begin{figure}[h]
\centering
\begin{tikzpicture}[shorten >=1pt, auto, node distance={50mm}, 
  main/.style = {draw, rectangle}]

\node[main] (1) {$provider_1$};
\node[main] (2) [right of=1] {$belt_1$};
\node[main] (3) [right of=2] {$consumer_1$};

\draw[->] (1) edge node{$p_1$} (2);
\draw[->] (2) edge node{$p_2$} (3);

\end{tikzpicture}
\caption{Example of a simple factory} 
\label{SimpleFactory}
\end{figure}

\section{Constraints}
The first step of the factory solving process is the constraint generation. 
We currently use 3 different types of constraints (Figure \ref{Constraints}). 
Let's take them one step at a time. The first two constrains (
  $p_k(t) <_{\Leftarrow} f(t)$ and $p_k(t) <_{\Rightarrow} f(t)$
) are pretty similar, both limiting the flow through a port.

\begin{figure}[ht]

\begin{equation}
\begin{split}
Constraints\quad C_k\ &::=\; p_k(t) <_{\Leftarrow} f(t) \\
        &\quad|\quad p_k(t) <_{\Rightarrow} f(t) \\
        &\quad|\quad p_1(t) = p_2(f(t))  
\end{split}
\end{equation}
\caption{Constraints}
\label{Constraints}
\end{figure}

\end{document}