GithubHelp home page GithubHelp logo

comotion_autonomous_player's Introduction

New autonomous player library

This is Nathan's autonomous player.

Player strategy

In order to find the best path in every turn, the player will first look for the best match between robots and goals (bonuses / circles) for every match a heuristic will be computed taking in charge the path's length, the end goal, and a pseudo assumption of all bonuses along the road. using this heuristic the best match will be chosen. having a match between robots and end goals, a path will be computed between every robot to its goal using a greedy algorithm in order to add as many bonuses as possible along the road without breaking the makespan limit. Paths between points are computed using Dijkestra on a Prm map constructed on the beginning of the game while every turn opponent robots' locations are removed and re-added at the end of the turn. In addition, every turn, paths creating collisions between friendly robots, are trimmed according to a collision if existing.

Classes

  • algorithms - contain usefull algos such as prm, greedy bonuses collector etc.
  • autonomous_gmae - DEV a module helping the tests simulating a Comotion game
  • heuristic - different heuristics estimating the value of a match
  • players - different autonomous players - The chosen one pseudo_best_path_player
  • plotter - DEV a helper module in order to plot graphs while debugging.
  • utils - helper classes.
  • tests - tests for the autonomous player's code plus simulation of games using config files.

Issues

  • prm module
  • heuristic library
  • update prm graph in live according to robots new locations.
  • dijkestra partially up to depth t.
  • basic heuristic player.
  • remove opponent players from graph.
  • Smarter heuristic to move few robots simultaneously.
  • Finish at circles
  • Fasten heuristic calculation.
  • Heuristic runtime
  • Measure new runtime - 0.04 sec! (Due to distance matrix)
  • Add functionality for half a target.
  • What if there are more robots than bonuses.
  • I don't wanna change the sum over all valid states, neither take the minimum one, but the maximum heuristic one.
  • PROFILING - Run time of each block etc.
  • FEATURE - bridge test every turn around enemy robots.
  • FEATURE, RUNTIME - maybe not using as many points as possible to avoid enormous runtime later.
  • HEURISTIC - Path that collects few bonuses at once.
  • PROFILING - Distance matrix calculations takes a lot of time.
  • CRITICAL - Time prunning.
  • FEATURE - Parallel computing.
  • CRITICAL - Robots of same team not colliding with one another.
  • TESTING - Comparing different players, heuristic and params.
  • REFACTOR - focused heuristic is not organised.
  • FEATURE - allow robots not to move.
  • Reduce makespan to 1 to see that nothing is broken.
  • TESTING - Create a testing framework for multiple players / scenes / params.
  • BUG - More robots than bonuses cause an exception.
  • FEATURE - Allow upgrading some robot's paths and not only one.

Players

  • Basic heuristic player
  • Focused Heuristic player
  • Minmax player
  • Alpha Beta player
  • Monte Carlo player
  • Traveling Salesman heuristic

comotion_autonomous_player's People

Contributors

natsala13 avatar nathans-vayyar avatar

Watchers

James Cloos avatar  avatar

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.