Coder Social home page Coder Social logo

prometheus's People

Contributors

zborffs avatar

Watchers

 avatar  avatar

prometheus's Issues

Test Suite

  • Update failing test suites (ucioptions, board, chessclock)
  • add comments to the BoardTest and clean up a bit
  • add comments to booktester. add more tests related to straight lookup and update lookup. test to see if 5 completely different lines are there
  • add comments to chessclock. clean up a bit
  • add comments to chessmove
  • add comments to eval
  • add comments to perft
  • add comments to ucioptions
  • make sure all tests are succeeding

ideas

hi,
if you are looking for some optimizations, you can first create something like Piece board[64] plain and simple array which keeps track of all pieces and where they are and update this in makemove and unmake and only initialize at the start for the fen, this way if you want to know what piece is on square x you can simply look it up rather than looping over all pieces.
Also vectors are slow if you remove the vector logic in repetition draw you'll get a small speedup too. Maybe for the movelist too, but I dont know the maximum number of pseudolegal moves... as for totally legal moves most engines use 256 as a maximum.

Happy coding!

vice testing

  • remove all evaluation functionality (replace with piece square tables and piece values)

  • iterate with specific bonuses (related to things like early development with queens etc.)

  • slowly add more features to accommodate trends in games

  • change the c-chess-cli handling (or prometheus returning) for mates so there is no hanging

Convert Movelist into Priority Queue

  • Write a new file in the benchmark folder that compares the speeds of sorting random list of ints and inserting those random ints into into a priority queue then popping or then sorting then inspecting... Let this inform a hypothesis.
  • Collect performance metrics for current methodology (insert and sort)
    • from 300+ test suite positions, collect avg. depth reached, number of nodes searched, move ordering %
  • Alter the movelist object to have the priority queue adapter, then do .push() (or whatever the syntax is) to make it a priority queue. Call "order_moves" somehow from the move_gen function, so every move is assigned a complete score before being added to the queue, then when leaving the move_gen function, just call top() or sort() or whatever.
    • from 300+ test suite positions, collect avg. depth reached, number of nodes searched, and move ordering %

Collect Baseline Performance Data

  • Determine Prometheus's ELO w.r.t. some other middle-tier engines by playing 200-300 games each at kinda fast time controls
    • Orchestrate tournament between three "worst" engines that I have (mine, vice, and Spartan)
    • Compute the ELO of each engine
    • Compute the LOS of each engine w.r.t each other engine
    • Save the ELO and LOS information somewhere
  • Get baseline performance (% right, avg. depth achieved, avg. nodes investigated, avg. nps) on different test suites
    • Bratko-Kopec test suite (24 positions)
    • WAC test suite baseline performance (300 positions)
  • Succinctly save all the data to a file somewhere
  • Write Julia code to parse the file and plot (and/or create a table) with a summary of the results

Refactor / Clean Code

  • Go through every file, remove unused bits of code and commented out pieces of code that I won't ever use.
  • Add descriptive comments to all confusing or possibly confusing code
  • Add asserts as much as possible

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.