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