Giter Site home page Giter Site logo

cs383s2015-lab3's Introduction

cs383f2015-lab3

El Farol Bar multi-agent simulations in Repast Simphony.

  • For plots and data analysis, check out our IPython notebook
  • For documentation of implemented strategies, check out the JavaDoc for our agent classes.

Implementation

We have added three additional agent types:

  • AgentRan, which makes a random prediction between the maximum and minimum attendance levels.
  • AgentAverage, which makes a prediction based on the average of all the remembered attendence levels.
  • AgentMarkov, which uses a Markov chain predictive model to predict the next attendance.

These new agent types were implemented by extracting an interface Agent from the public methods in the provided Agent class (renamed to AgentWeighted). New agent classes were written to extend this interface, and the ElFarolContextBuilder class was modified to create agents of the correct type depending on the parameters passed to the model. Additional parameters were added to the Repast model for controlling the distribution of agents, the maximum run time, and other characteristics.

For documentation on the functionality of each agent type, please check out the JavaDoc for their respective Java classes.

We had intended to use Repast's batch mode for running all of the required parameters configurations in the laboratory handout, but this was determined to be impossible due to memory leak bug in Repast. Therefore, each parameters configuration was run by hand, instead.

Analysis & Results

Analysis of the various strategies is contained in this IPython notebook.

Additionally, the graphs generated by Repast Simphony are also available (as PNG files) in the results/repast-plots directory, and the raw data output by the model is avaiable as comma-separated values files in the results/ directory.

Learning Take-aways

We learned more about Markov chains while implementing the Markov chain prediction strategy. A Markov chain is a memoryless predicitve model which uses only the current state to predict the next state.

We also observed that increasing the number of agents in the model can have siginficant impacts on the model's outcomes. With more agents inside the model, one can see patterns begin to appear within the attendance graphs, as seen in our analysis notebook.

We learned that some strategies are better at handling the threshold differences than others. The regression model is able to even itself out at the threshhold higher than average, but when the threshold is lower, it alternates more widely between attendance levels. Additional information on this behaviour is available in our analysis notebook.

cs383s2015-lab3's People

Contributors

hawkw avatar lukesmith02 avatar yarbroughw avatar

Watchers

 avatar  avatar  avatar  avatar

cs383s2015-lab3's Issues

Documentation

From @janyljumadinova's assignment sheet:

The documentation describing the specific details of the strategies you have decided to imple-
ment and your analysis of the performance of various strategies. Also comment on the biggest learning take aways from this assignment and any challenges that you have encountered.

  • Comment on biggest learning takeaways
  • Analysis of the performance of various strategies
  • Details on our implementation (could just do this by ensuring the JavaDoc has adequate descriptions)

Stochastic Markov agent

As @yarbroughw mentioned in the comments on #3, it would be neat to make the AgentMarkov prediction system non-deterministic so the behavior isn't perfectly cyclical. Since our current AgentMarkov implementation works as intended, there's no need to do this for this lab assignment, but if someone wants to take a crack at it, it would be kinda cool.

Smart Strategy

  • Decide what the strategy is
  • Implement
  • Fix attendance bug

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.