Changes

Jump to: navigation, search

Murka

7,974 bytes added, 12:06, 3 January 2020
Created page with "'''Home * Engines * Murka''' FILE:Cat Murka silhouette.svg|border|right|thumb| Murka’s silhouette <ref>Силуэт сидящей кошки Мурк..."
'''[[Main Page|Home]] * [[Engines]] * Murka'''

[[FILE:Cat Murka silhouette.svg|border|right|thumb| Murka’s silhouette <ref>Силуэт сидящей кошки Мурки, [http://commons.wikimedia.org/wiki/File:Cat_Murka_silhouette.svg Sitting cat Murka’s silhouette] by [http://commons.wikimedia.org/wiki/User:AVRS AVRS], January 2007</ref>
]]

'''Murka''', (Мурка)<br/>
a [[Chess Engine Communication Protocol]] and [[UCI]] compliant [[Category:Open Source|open source chess engine]] by [[Igor Korshunov]], written in [[Cpp|C++]].
Since his [[WildCat]] sources became no longer maintainable, Igor decited to start a new engine from scratch, first released in May 2010 <ref>Мурка / Murka by [[Igor Korshunov|Wildcat]], [[Computer Chess Forums|immortalchess]], May 31, 2010 (Russian, no longer available)</ref>.
In July 2013, the significant improved Murka 3.0 was released <ref>[http://www.talkchess.com/forum/viewtopic.php?t=48673 Murka 3.0 released] by Günther Höhne, [[CCC]], July 17, 2013</ref>, [[Automated Tuning|tuned]] with a modified [https://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method Nelder–Mead method] <ref>Re: Мурка / Murka # 852 by [[Igor Korshunov|Wildcat]], [[Computer Chess Forums|immortalchess]], December 11, 2011 (Russian, no longer available)</ref>.

=Description=
<ref>Description based on Murka_3.rar/Murka_3/description_eng.txt</ref>
==Bitboard Infrastructure==
Initially starting with [[Rotated Bitboards|rotated bitboards]], Murka now uses [[Magic Bitboards|magic bitboards]] to determine [[Sliding Piece Attacks|sliding piece attacks]]. <span id="BitScan"></span>[[BitScan#Bitscanforward|Bitscan forward]] is either done by even [[BitScan#DeBruijnMultiplation|De Bruijn Multiplication]] or [[x86-64]] [[BitScan#bsfbsr|processor instruction]] via the _BitScanForward64 intrinsic.
However, on [[x86-64]] for scalar integers with appropriate reduced value range, it is not recommended to use [[Byte|8-bit]] or [[Word|16-bit]] types, but 32-bit [[Double Word|double words]].
<pre>
#ifdef _M_X64
inline uint8 LSB(BitBoard b) // Least Significant Bit
{
register unsigned long index;
_BitScanForward64(&index, b);
return index;
}
#else
const uint8 deBruijnIndex64[64] =
{
63, 0, 58, 1, 59, 47, 53, 2,
60, 39, 48, 27, 54, 33, 42, 3,
61, 51, 37, 40, 49, 18, 28, 20,
55, 30, 34, 11, 43, 14, 22, 4,
62, 57, 46, 52, 38, 26, 32, 41,
50, 36, 17, 19, 29, 10, 13, 21,
56, 45, 25, 31, 35, 16, 9, 12,
44, 24, 15, 8, 23, 7, 6, 5
};

inline uint8 LSB(const BitBoard b)
{
return deBruijnIndex64[((b & -b) * 0x07EDD5E59A4E28C2) >> 58];
}
#endif
</pre>

==Move Generation==
The staged [[Move Generation|move generator]] uses five routines, one for all moves, and further for [[Captures|captures]] and [[Promotions|queening]], [[Check#CheckEvasion|check evasions]], [[Quiet Moves|quiet moves]], and finally [[Quiescence Search#Checks|checks]], which has a mask to exclude already generated captures.

==Search==
Murka applies [[Fail-Soft|fail-soft]] [[Principal Variation Search|PVS]] with [[Transposition Table|transposition table]] inside an [[Iterative Deepening|iterative deepening]] framework at the [[Root|root]]. [[Selectivity]] is realized by [[Null Move Pruning#AdaptiveNullMovePruning|adaptive null move pruning]] with [[Depth Reduction R|R]] increased with [[Depth|depth]] and on [[Evaluation|evaluation]] [[Score|score]] by margin worse than [[Alpha|alpha]], and [[Late Move Reductions|LMR]] with verification, very aggressively at [[Node Types#CUT|Cut-nodes]]. [[Check Extensions|Checks]] and [[Recapture Extensions|good recaptures]] are [[Extensions|extended]] at [[Node Types#PV|PV-nodes]] only, while [[Pruning|pruning]] is done at shallow depths in too good and too bad positions. [[Move Ordering|Move ordering]] considers [[Hash Move|hash move]], [[MVV-LVA|MVV/LVA]] for good [[Captures|captures]] with [[Static Exchange Evaluation|SEE]] >= 0, two [[Killer Move|killer moves]], [[Quiet Moves|quiet moves]] by [[History Heuristic|history heuristic]], and remaining captures.
The [[Quiescence Search|quiescence search]] looks for good captures in MVV/LVA order and [[Promotions|queen promotions]]. At the [[Horizon Node|horizon]], the first ply of quiescence, [[Quiescence Search#Checks|check giving moves]] are tried.

==Evaluation Features==
* [[Material]] with adjustment
* [[Piece-Square Tables|Piece-square tables]]
* Recognizing [[Draw Evaluation|draw material]]
* [[Rook on Open File|Rooks on open/halfopen files]]
* [[Mobility]]
* [[King Safety]]
** [[King Safety#SquareControl|Square control]]
** [[King Safety#PawnShield|Pawn shield]]
** [[Castling Rights|Possibility of castling]]
* [[Pawn Structure|Pawn structure]]
** [[Open Pawns (Bitboards)|Open/closed pawns]]
** [[Isolated Pawns (Bitboards)|Isolated pawns]]
** [[Backward Pawns (Bitboards)|Backward pawns]]
* [[Passed Pawns (Bitboards)|Passed pawns]]
** Friendly/opponent piece(s) on passer's [[Pawn Spans|frontspan]]
** [[Square Control|Squares attacked]] on passer's [[Pawn Spans|frontspan]] exclusively by opponent
** [[King Pawn Tropism|King passer tropism]]
** [[Candidates (Bitboards)|Candidates]]
* [[Trapped Pieces|Trapped bishop]]
* [[Bad Bishop|Bad bishop]]
* [[Bishops of Opposite Colors|Opposite colors bishops ending]]
* [[Tempo|Side to move bonus]]

=Etymology=
Murka (Мурка) is a Russian common pet name for a [https://en.wikipedia.org/wiki/Cat cat],
and one of the most famous [https://en.wikipedia.org/wiki/Russian_chanson Russian chansons] <ref>[http://ru.wikipedia.org/wiki/%D0%9C%D1%83%D1%80%D0%BA%D0%B0_%28%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%29 Мурка (значения, disambiguation) — Википедия] (Russian)</ref>.
The original version of the lyrics played by [https://en.wikipedia.org/wiki/Konstantin_Sokolsky Konstantin Sokolsky] was apparently written by [https://en.wikipedia.org/wiki/Odessa Odessa] poet [http://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D0%BE%D0%B2,_%D0%AF%D0%BA%D0%BE%D0%B2_%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2%D0%B8%D1%87 Jacob Yadov] in 1923 .

=See also=
* [[CookieCat]]
* [[WildCat]]

=Forum Posts=
* [http://www.talkchess.com/forum/viewtopic.php?t=48673 Murka 3.0 released] by Günther Höhne, [[CCC]], July 17, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=48775 You are from Russia !!!!!] by [[Marco Costalba]], [[CCC]], July 28, 2013

=External Links=
==Chess Engine==
* [http://www.sdchess.ru/download_engines.htm Downloads] from [http://www.sdchess.ru/ sdchess.ru]
* [http://www.computerchess.org.uk/ccrl/4040/cgi/compare_engines.cgi?family=Murka&print=Rating+list&print=Results+table&print=LOS+table&print=Ponder+hit+table&print=Eval+difference+table&print=Comopp+gamenum+table&print=Overlap+table&print=Score+with+common+opponents Murka] at [[CCRL|CCRL 40/15]]
==Misc==
* [http://ru.wikipedia.org/wiki/%D0%9C%D1%83%D1%80%D0%BA%D0%B0 Мурка — Википедия] (Russian)
* [http://ru.wikipedia.org/wiki/%D0%9C%D1%83%D1%80%D0%BA%D0%B0_%28%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%29 Мурка (значения, disambiguation) — Википедия] (Russian)
* [http://de.wikipedia.org/wiki/Murka Murka – Wikipedia.de] (German)
* [http://ru.wikipedia.org/wiki/%D0%A3%D1%82%D1%91%D1%81%D0%BE%D0%B2,_%D0%9B%D0%B5%D0%BE%D0%BD%D0%B8%D0%B4_%D0%9E%D1%81%D0%B8%D0%BF%D0%BE%D0%B2%D0%B8%D1%87 Леонид Утёсов]: не спетая "Мурка" вторая половина 1920х, ([https://en.wikipedia.org/wiki/Leonid_Utyosov Leonid Utyosov] - Murka, late 20s), [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=c-JNBNfc7nQ|alignment=left|valignment=top}}

=References=
<references />
'''[[Engines|Up one Level]]'''
[[Category:Open Source]]
[[Category:UCI]]
[[Category:WinBoard]]
[[Category:XBoard]]
[[Category:X86]]
[[Category:X64]]
[[Category:PC]]
[[Category:Windows]]
[[Category:Linux]]
[[Category:Mammal]]
[[Category:Music]]

Navigation menu