Git Product home page Git Product logo

fill-game's People

Contributors

pwyq avatar samarium150 avatar stalfoes avatar

Stargazers

 avatar  avatar

Watchers

 avatar

fill-game's Issues

Final Report

Report: https://www.overleaf.com/project/6415484545139c791848c71b

  • Problem Statement
  • Overview
  • Background
    • Fill-Game
    • Assignment 1 results
  • Methods
    • Algorithms
      • Minimax
      • Negamax
      • Proof-Number Search
      • Depth-First Proof Number Search
      • Monte Carlo Tree Search
    • Algorithm Improvements and Optimizations
      • Alpha-Beta Pruning
      • Transposition Tables
      • Memory Optimizations
    • Other Improvements
      • Graphical User Interface
      • Local Area Network Play
  • Experiments
    • Hardware and software setup
    • Evaluation
      • Standard tests
      • Peak Memory Usage
      • Run Time
      • Node Count
    • Algorithms and Improvements
    • Other Optimizations
      • 1D vs 2D
  • Discussion
    • Algorithms
    • Improvements and Optimizations
  • Future Work
    • Resource Constraints
    • Algorithms
    • Improvements and Optimizations
  • Authorship Statement
  • Conclusion

VSCode can't find Qt

https://stackoverflow.com/a/68139743/10620764

When configurationProvider is set to ms-vscode.cmake-tools in c_cpp_properties.json, VS Code uses the include information defined in the CMakeLists.txt instead of reading the includePath configs in VS Code.

A workaround is to set(IS_BUILD_GUI ON) in the CMakeLists.txt to enable Building with Qt GUI....

Can't believe I wasted almost two hours on this bullshit.


Also remove local /build, and build with VS Code's cmake

move ordering - importance level

Yanqing — Today at 6:05 PM
for unimportant position, if we return {1,2,3} instead of {1,2,3,4}, the time drops from 18000ms to 12000ms and still pass all current test cases
Luke — Today at 6:07 PM
How
Yanqing — Today at 6:07 PM
I think we can mark a position with different level of importance, if it's totally unimportant (e.g. the nearest important cell is 2 blocks away), then we return {1,2} possible move, it it's medium unimportant (e.g. the nearest important cell is 1 block away), then we return {1,2,3}; for important cell we keep the same
Luke — Today at 6:07 PM
How does that work
What if we just sort moves by importance
Yanqing — Today at 6:08 PM
I was trying to only return {1} or {1,2}, but those fails one to two cases
Yanqing — Today at 6:08 PM
that's also a good idea
we can have a uint to label the importance instead of the bool we are using
I'll look into this once I'm done agent-fighting

PNS

https://www.chessprogramming.org/Proof-Number_Search

https://minimax.dev/docs/ultimate/pn-search/

Unlike the search algorithms in the minimax family, PN search is aimed exclusively at exhaustively searching a game node to solve it, which is to say to prove that the position is a forced win for one side (or a forced draw with optimal play by both players). It can be thought of a best-first search algorithm over the game tree, examining nodes based on an estimate of their promise towards contribuing to a solution to the overall node.

Other than init pn = dn = 1, we can init pn = dn = num. of moves

Optimize UI

  • cell colors based on who played
  • accept keyboard input to select cell
  • info panel
    • show two player + whose turn
    • countdown timer (for now, use timer per turn)

Parsing or Gtest bug?

Weird bug

This function parse gtest name to integer index, e.g. SIMPLE_16 becomes 16.

unsigned short getIndexFromName(const char* x) {

Not working for the following:

TEST_F(MinimaxAlphaBetaTTTest, MEDIUM_1) {

TEST_F(MinimaxAlphaBetaTTTest, MEDIUM_3) {

TEST_F(NegamaxAlphaBetaTTTest, MEDIUM_1) {

TEST_F(NegamaxAlphaBetaTTTest, MEDIUM_3) {

move ordering

this probably involves optimization of the Game class

separate Node and NodeTT

Algorithms without transposition doesn't need to waste memory on a string id and the convertion between board ang game-string (id).

TODOs

image

others

  • MCTS solver
  • df-pn variants?
  • Neural Networks

frozen GUI when play by AI

The GUI is frozen when AI takes long time to search. We need a separate thread.

  • solve forzen GUI
  • play by AI and play by human option switch in menu

two totally different IPs

test between totally different IPs
test between two windows machines
test between unix and windows machines

right now the performance is very bad across very different IPs; only work within house IPs

game board construction 2d vs 1d

  • investigate 2d vs 1d performance (time and memory usage)
  • report data (in release mode), better averaged over multiple runs

optional:

  • let cmake build the test (under /test/other_tests/)
  • auto the test to run multiple times

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.