README.md 3.49 KB
Newer Older
1 2 3
# Eris - agent-based economic modelling library

## Description
4

5 6
Eris is a C++ library designed for simulating “economies“ consisting of agents
who follow programmable rules, with the intention of deriving complex
7 8 9 10 11
macro-level behaviour that is an emergent property of agent interaction.  This
project provides no implementation itself, but is intended to be used as the
basis of an agent-based model.  See the
[creativity](https://git.imaginary.ca/eris/creativity/) project for a working
example of a moderately complex ABM built using eris.
12 13 14 15 16 17

This project was motivated by the inadequacy of mathematical models, which
often impose severe constraints on agents in the name of tractability.

At its core, this library imposes few constraints on the behaviour of agents.
Individuals agents can, for instance, be programmed to be ultra-rational, or
18 19 20
can be “dumb” in the sense of following only simple rules of thumb.  The
behaviours and means of interacting are left to packages developed using this
library.
21 22

Beyond the core, the library offers many specialized implementations that may
23 24
be used as appropriate, but can equally well be ignored, enhanced, or replaced
with alternative implementations.
25

26
The library name, Eris, is the name of the Greek goddess of chaos.
27

28 29 30 31
## Documentation

### Library overview

Jason Rhinelander's avatar
Jason Rhinelander committed
32 33
See the [Eris overview](OVERVIEW.md) documentation for an introductory overview
to how the library works.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

### API documentation

The API documentation can be built from the source code, as described in the
Compiling section below, and is also available at
https://imaginary.ca/eris/api/.  A good place to start is the
[eris::Simulation](https://imaginary.ca/eris/api/classeris_1_1Simulation.html)
class, and the classes in the
[eris::interopt](https://imaginary.ca/eris/api/namespaceeris_1_1interopt.html)
and
[eris::intraopt](https://imaginary.ca/eris/api/namespaceeris_1_1intraopt.html)
namespaces.

See also the various [classes of the creativity
ABM](https://imaginary.ca/eris/creativity/annotated.html) for a working example
of a moderately complex agent-based model.

51 52
## Compiling

53 54
### Requirements

55 56 57
- [boost](http://www.boost.org/)
- [liblzma](http://tukaani.org/xz/)
- [Eigen](http://eigen.tuxfamily.org/), version 3.2.7 or above.
58 59
- A C++ compiler supporting the C++14 standard, such as
  [clang](http://clang.llvm.org/) (3.4+) or [g++](https://gcc.gnu.org/) (5+)
60 61 62 63

If you wish to build the HTML API documentation, additional requirements are:
- [doxygen](http://www.stack.nl/~dimitri/doxygen/)
- [graphviz](http://www.graphviz.org)
64
- [mathjax](https://www.mathjax.org)
65 66 67

### Building

68 69 70
To compile on a unix-like system, create a new build directory somewhere, then
from this directory run:

71
    cmake /path/to/eris-src
72 73 74 75 76 77
    make -j4

You can install directly to the system (usually under /usr/local) using:

    make install

78 79
## License

80 81 82 83 84 85 86 87 88 89 90 91 92
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

93 94
## Author

Jason Rhinelander's avatar
Jason Rhinelander committed
95
Jason Rhinelander -- [e-mail](mailto:jason@imaginary.ca), [homepage](https://imaginary.ca)
Jason Rhinelander's avatar
Jason Rhinelander committed
96