Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
NGovani authored Jan 15, 2021
2 parents 566731c + fa387a1 commit 8a5e9e7
Show file tree
Hide file tree
Showing 6 changed files with 315 additions and 17 deletions.
286 changes: 273 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,26 +1,286 @@
# LaTeX temporary files
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb

## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf

# PDF output - usually a bad idea to keep this in Git
## Generated if empty string is given at "Please type another file name for output:"
main.pdf

# Latexmk
*.fdb_latexmk
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml

# SyncTeX
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync

## Build tool directories for auxiliary files
# latexrun
latex.out/

## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa

# achemso
acs-*.bib

# LaTeX Beamer
# amsthm
*.thm

# beamer
*.nav
*.pre
*.snm
*.vrb
*.nav
*.out

# BibTeX
*.bbl
*.blg
# changes
*.soc

# comment
*.cut

# cprotect
*.cpt

# elsarticle (documentclass of Elsevier journals)
*.spl

# endnotes
*.ent

# fixme
*.lox

# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm

#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R

# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs

# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist

# gnuplottex
*-gnuplottex-*

# gregoriotex
*.gaux
*.gtex

# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref

# hyperref
*.brf

# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary

# listings
*.lol

# luatexja-ruby
*.ltjruby

# makeidx
*.idx
*.ilg
*.ind

# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*

# minted
_minted*
*.pyg

# morewrites
*.mw

# nomencl
*.nlg
*.nlo
*.nls

# pax
*.pax

# pdfpcnotes
*.pdfpc

# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd

# scrwfile
*.wrt

# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/

# pdfcomment
*.upa
*.upb

# pythontex
*.pytxcode
pythontex-files-*/

# tcolorbox
*.listing

# thmtools
*.loe

# TikZ & PGF
*.dpth
*.md5
*.auxlock

# todonotes
*.tdo

# vhistory
*.hst
*.ver

# easy-todo
*.lod

# xcolor
*.xcp

# xmpincl
*.xmpi

# xindy
*.xdy

# xypic precompiled matrices and outlines
*.xyc
*.xyd

# endfloat
*.ttt
*.fff

# Latexian
TSWLatexianTemp*

## Editors:
# WinEdt
*.bak
*.sav

# Texpad
.texpadtmp

# LyX
*.lyx~

# Kile
*.backup

# gummi
.*.swp

# KBibTeX
*~[0-9]*

# TeXnicCenter
*.tps

# auto folder when using emacs and auctex
./auto/*
*.el

# expex forward references with \gathertags
*-tags.tex

# standalone packages
*.sta

# Makeindex log files
*.lpz

# xwatermark package
*.xwm

# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib

# TeX Live
*.fls
.vscode
4 changes: 2 additions & 2 deletions 03_gamedesign/index.tex
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ \section{Implementation}
\subsection{Architecture}
\label{sec:GD:implementation:arch}

The structure of the game was closely modelled after a \emph{client-server} model\footnote{\url{https://en.wikipedia.org/wiki/Client-server_model}}, but note ``closely''--whilst the nomenclature was taken directly from the aforementioned model, there are some differences. \emph{Server} and \emph{client} in this context bear the following definitions:
The structure of the game was closely modelled after a \emph{client-server} model \cite{Dustdar05asurvey}, but note ``closely''--whilst the nomenclature was taken directly from the aforementioned model, there are some differences. \emph{Server} and \emph{client} in this context bear the following definitions:

\begin{definition} \label{def:server}
The \textbf{server} is the central game runner, responsible for initiating game events (such as a disaster or the start of a turn). Certain events require the actions of agents, in which the server will invoke a function on the agents to receive a response. Further, the server acts as a source-of-truth for the game's state.
Expand Down Expand Up @@ -123,7 +123,7 @@ \subsection{Technology Stack}

\begin{enumerate}
\item \textbf{Multi-language}\footnote{\url{https://github.com/SOMAS2020/somas-demo}}.
A multi-language (C++ server with a Python and a C++ client) MWE was first set up. It was first thought that allowing agent teams to choose the programming language they were most familiar with would speed up development. However, despite this stack's benefits, it could not be easily made cross-platform. Each agent's code would need to be run in a separate process, and Inter-Process Communication (IPC) would be required to pass messages. IPC is quite low-level and varies vastly among different systems. Further, protocols for the IPC would also need to be set up to pass the correct message, and having no strong typing as in a strongly-typed language (or session-typed\footnote{\url{https://arxiv.org/abs/1906.03836}}) approach would make it difficult to maintain and develop.
A multi-language (C++ server with a Python and a C++ client) MWE was first set up. It was first thought that allowing agent teams to choose the programming language they were most familiar with would speed up development. However, despite this stack's benefits, it could not be easily made cross-platform. Each agent's code would need to be run in a separate process, and Inter-Process Communication (IPC) would be required to pass messages. IPC is quite low-level and varies vastly among different systems. Further, protocols for the IPC would also need to be set up to pass the correct message, and having no strong typing as in a strongly-typed language (or session-typed \cite{YG2020}) approach would make it difficult to maintain and develop.

\item \textbf{Python}\footnote{\url{https://github.com/SOMAS2020/somas-demo-py}}.
Python\footnote{\url{https://www.python.org/}} is widely used by the scientific community in recent years with the growing ubiquity of scientific computation packages available for it. As such, Python was a strong contender as most of the class already know Python from past projects. However, Python's weak typing meant it scored low on the ``easily maintainable'' part--the server and client interfaces would benefit a lot from strong typing. While add-on static typing tools such as \texttt{mypy}\footnote{\url{https://mypy.readthedocs.io/}} could be employed (it is also used in the MWE), it would still not be as powerful as built-in strong typing as in languages such as C\# and Go.
Expand Down
Binary file not shown.
2 changes: 1 addition & 1 deletion 05_iigo/index.tex
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ \subsubsection{Client-side}
\begin{itemize}
\item \texttt{SetTaxationAmount} allows the President to decide the amount of taxation individually set to each island. Returns the $map[agent] \xrightarrow[]{} tax$, as well as information about whether the President has acted on its power to set taxation.
\item \texttt{EvaluateAllocationRequests} allows the President to decide the allocation of resources distributed from the common pool to the islands. Returns the $map[agent] \xrightarrow[]{} allocation$, as well as information about whether the President has acted on its power to set allocation to common pool resources.
\item \texttt{PickRuleToVote} allows the President to select a rule for voting $R$ to be passed to the Speaker. Returns the $rule$ to be voted on by the Speaker, as well as information about whether the President has acted on its power to choose a new rule to be incorporated into the \texttt{RulesInPlay}.
\item \texttt{PickRuleToVote} allows the President to select a rule for voting $R\ast$ to be passed to the Speaker. Returns the $rule$ to be voted on by the Speaker, as well as information about whether the President has acted on its power to choose a new rule to be incorporated into the \texttt{RulesInPlay}.
\end{itemize}

\item The accountability cycle, salary and transfer-of-power functions:
Expand Down
20 changes: 20 additions & 0 deletions bibs/main.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
@inproceedings{YG2020,
author = {Nobuko Yoshida and Lorenzo Gheri},
title = {{A Very Gentle Introduction to Multiparty Session Types}},
booktitle = {16th International Conference on Distributed Computing and Internet Technology},
series = {LNCS},
volume = {11969},
pages = {73--93},
publisher = {Springer},
doi = {10.1007/978-3-030-36987-3_5},
year = 2020
}
@article{Dustdar05asurvey,
author = {Schahram Dustdar and Wolfgang Schreiner},
title = {A Survey on Web Services Composition},
journal = {INTERNATIONAL JOURNAL ON WEB AND GRID SERVICES},
year = {2005},
volume = {1},
number = {1},
pages = {1--30}
}
20 changes: 19 additions & 1 deletion main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
% Template author: Y. Panagis

\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{hyperref}
Expand Down Expand Up @@ -57,6 +57,22 @@
\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=2cm]{geometry}
\input{utils/json_listings.tex}

\usepackage[%
backend=bibtex % biber or bibtex
%,style=authoryear % Alphabeticalsch
,style=numeric-comp % numerical-compressed
,sorting=none % no sorting
,sortcites=true % some other example options ...
,block=none
,indexing=false
,citereset=none
,isbn=true
,url=true
,doi=true % prints doi
,natbib=true % if you need natbib functions
]{biblatex}
\addbibresource{bibs/main.bib} % better than \bibliography

\begin{document}
% The Title, Author Name, Date, and abstract go here
\title{Self-Organising Multi-Agent Systems: Final Report}
Expand Down Expand Up @@ -87,6 +103,8 @@
\input{16_results_and_eval/index.tex}
\input{18_conclusion/index.tex}

\printbibliography[heading=bibintoc]

\begin{appendices}
\input{20_appendix_roles/index.tex}
\input{19_appendix_config/sim_configs.tex}
Expand Down

0 comments on commit 8a5e9e7

Please sign in to comment.