1
Fork 0
solar-conflux/purescript/factorio-throughput/idea/hmm.tex

78 lines
1.9 KiB
TeX
Raw Normal View History

2023-06-04 15:29:29 +02:00
\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}