Please sign in to access this page

MihanSolo Chess Engine

MihanSolo Chess Engine Used AI

41 devlogs
89h 12m
•  Ship certified
Created by vidit2345

[NOTICE: ONLY TAKES 'REAL TIME' GAMES] Mostly built from scratch, except for reliancy on (a) Disservin's chess-lib (b) a Polyglot reader library and (c) magic_enum. May not always be online ... Uses Negamax with alpha/beta pruning, a material/positional eval function, quiescence search, and transposition table. NNUE eval function coming soon!

Timeline

tried to make the TT faster but failed

Update attachment

bruhhhh its too slow it seems so the old version is stronger, cause of mobility eval slowing everything down :(

Update attachment
vidit2345 vidit2345 about 3 hours ago
hmm thanks for the advice ill try it out
nosrep nosrep about 3 hours ago
might be worth tuning, mobility also kills my engine’s perf but it’s an overall elo gain. basic 5 centipawns per possible move (no piece distinction) (this is from the fruit engine) worked decently for me, although ive changed it since

added TT to qsearh

Update attachment

removed threading for mobility since it slows it down, not speed up suspecting overhead in starting the threads, etc

Update attachment

minor optimizations

Update attachment

yay removed the makeNullMove by gettting chess.hpp to expose both

template <MoveGenType mt = MoveGenType::ALL>
void static legalmoves(Movelist &movelist, const Board &board, int pieces)
template <Color::underlying c, MoveGenType mt>
static void legalmoves(Movelist &movelist, const Board &board, int pieces);
publicly so i can use chess::Color::BLACK instead of flipping board state using null moves, also added some minor optimizaions

Update attachment

adding threads

Update attachment

fixed some bugs in mobility and added some profiling to see how to optimize this more, thinking about multithreading this function since its stateless and can easily be made thread-safe

Update attachment

working on adding mobility eval, its not really working rn cause i need to modify the chess.hpp library to make this reasonably fast, since it generates the bitboards of moves for each piece but doesn't make them accessible to the public.

Update attachment

refactoring negamax, making code simpler

Update attachment

removed nmp and readded test (nmp caused -200 Elo)

Update attachment
vidit2345 vidit2345 4 days ago
yea my cutechess is kinda f*cked, im trying to fix it lol
nosrep nosrep 4 days ago
-200 elo is not normal there’s gotta be a bug
vidit2345 vidit2345 4 days ago
?
nosrep nosrep 4 days ago
bro how

added null move pruning (idk if it helps yet)

Update attachment

meh refactored a lot

Update attachment

Added butterfly boards/history heuristic

Update attachment

added some new testing

Update attachment

Ship 1

0 payouts of shell 0 shells

vidit2345

7 days ago

vidit2345 Covers 26 devlogs and 72h 42m

fixed sm bugs and stuff with time management/iterative

Update attachment

True iterative deepening added (searches until time runs out) Before it was just upto depth 5, not good in situation where you have lots of time and want to use it

Update attachment

Adding time management

Update attachment

ADDED ITERATIVE DEEPENING, MASSIVE SPEED GAIN (5x faster from 1550ms to 300 ms)
still unit tests for iter, mvvlva, transpo, and qsearch not here lol

Update attachment

workign on the transposition table

Update attachment

Quiescence search implemented (yay!)

Update attachment

We got MVV_LAA move ordering!!!, around 40%-50% speedup (700 ms down from around 1400 ms)

Update attachment

sprt done

Update attachment

no ext, king safety works !!!!

Update attachment

trying to add search extensions

Update attachment

FINALLY FIXED THE BUG

std::numeric_limits<int>::min() is one smaller than -max, which causing wraparound, fixed by adding one lol

Update attachment

are devlogs broken wtf

Update attachment

fixing material bug

Update attachment

finding Material bug

Update attachment

Optimized the program by using more const & refs in function arguments but still trying to find why its dropping so much material

Update attachment

Quality of life upgrades -> refactored code, added logging with spdlog, and added unit tests (only for evaluation so far tho)

Update attachment

Bug is in evaluate function, it is actually a piece of work
i am on the verge of an existensial crisis

Update attachment

Moved everything to C++ and ran a basic test, huge improvement in speed. I miss you, Python, but you're just too slow 😭.

Update attachment

trying to find the PHANTOM ROOK

Update attachment

Tryign to find why C++ SLOWS IT DOWN, while its supposed to be FASTTTT.

Update attachment

Finally got c++ eval working to the bare minimum, not pushed to main lichess bot yet tho

Update attachment
vidit2345 vidit2345 about 2 months ago
this is a upgrade from formerly 5.9 sec per call, now it is 0.07 sec

Fixed checkmate bug

Update attachment

SPRT tests on a new heuristic!

Update attachment

added UCI parsing so can be used with SPRT testing and cutechess-cli

Update attachment

Quiescence search fleshed out with features reccomended by chess programming wiki [helps calculate long tactics to avoid loss of material/checkmate]

Made the basic negamax, a\b, and eval functions.