- Option Options[] = {
- { "Use Search Log", "false", "false", CHECK, 0, 0, {""} },
- { "Search Log Filename", "SearchLog.txt", "SearchLog.txt", STRING, 0, 0, {""} },
- { "Book File", "book.bin", "book.bin", STRING, 0, 0, {""} },
- { "Mobility (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
- { "Mobility (Endgame)", "100", "100", SPIN, 0, 200, {""} },
- { "Pawn Structure (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
- { "Pawn Structure (Endgame)", "100", "100", SPIN, 0, 200, {""} },
- { "Passed Pawns (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
- { "Passed Pawns (Endgame)", "100", "100", SPIN, 0, 200, {""} },
- { "Aggressiveness", "100", "100", SPIN, 0, 200, {""} },
- { "Cowardice", "100", "100", SPIN, 0, 200, {""} },
- { "King Safety Curve", "Quadratic", "Quadratic", COMBO, 0, 0,
- { "Quadratic", "Linear" /*, "From File"*/ } },
- { "King Safety Coefficient", "40", "40", SPIN, 1, 100 , {""} },
- { "King Safety X Intercept", "0", "0", SPIN, 0, 20, {""} },
- { "King Safety Max Slope", "30", "30", SPIN, 10, 100, {""} },
- { "King Safety Max Value", "500", "500", SPIN, 100, 1000, {""} },
- { "Queen Contact Check Bonus", "4", "4", SPIN, 0, 8, {""} },
- { "Rook Contact Check Bonus", "2", "2", SPIN, 0, 4, {""} },
- { "Queen Check Bonus", "2", "2", SPIN, 0, 4, {""} },
- { "Rook Check Bonus", "1", "1", SPIN, 0, 4, {""} },
- { "Bishop Check Bonus", "1", "1", SPIN, 0, 4, {""} },
- { "Knight Check Bonus", "1", "1", SPIN, 0, 4, {""} },
- { "Discovered Check Bonus", "3", "3", SPIN, 0, 8, {""} },
- { "Mate Threat Bonus", "3", "3", SPIN, 0, 8, {""} },
- { "Check Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
- { "Check Extension (non-PV nodes)", "1", "1", SPIN, 0, 2, {""} },
- { "Single Reply Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
- { "Single Reply Extension (non-PV nodes)", "2", "2", SPIN, 0, 2, {""} },
- { "Mate Threat Extension (PV nodes)", "0", "0", SPIN, 0, 2, {""} },
- { "Mate Threat Extension (non-PV nodes)", "0", "0", SPIN, 0, 2, {""} },
- { "Pawn Push to 7th Extension (PV nodes)", "1", "1", SPIN, 0, 2, {""} },
- { "Pawn Push to 7th Extension (non-PV nodes)", "1", "1", SPIN, 0, 2, {""} },
- { "Passed Pawn Extension (PV nodes)", "1", "1", SPIN, 0, 2, {""} },
- { "Passed Pawn Extension (non-PV nodes)", "0", "0", SPIN, 0, 2, {""} },
- { "Pawn Endgame Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
- { "Pawn Endgame Extension (non-PV nodes)", "2", "2", SPIN, 0, 2, {""} },
- { "Full Depth Moves (PV nodes)", "14", "14", SPIN, 1, 100, {""} },
- { "Full Depth Moves (non-PV nodes)", "3", "3", SPIN, 1, 100, {""} },
- { "Threat Depth", "5", "5", SPIN, 0, 100, {""} },
- { "Selective Plies", "7", "7", SPIN, 0, 10, {""} },
- { "Futility Pruning (Main Search)", "true", "true", CHECK, 0, 0, {""} },
- { "Futility Pruning (Quiescence Search)", "true", "true", CHECK, 0, 0, {""} },
- { "Futility Margin 0", "50", "50", SPIN, 0, 1000, {""} },
- { "Futility Margin 1", "100", "100", SPIN, 0, 1000, {""} },
- { "Futility Margin 2", "300", "300", SPIN, 0, 1000, {""} },
- { "Maximum Razoring Depth", "3", "3", SPIN, 0, 4, {""} },
- { "Razoring Margin", "300", "300", SPIN, 150, 600, {""} },
- { "Randomness", "0", "0", SPIN, 0, 10, {""} },
- { "Minimum Split Depth", "4", "4", SPIN, 4, 7, {""} },
- { "Maximum Number of Threads per Split Point", "5", "5", SPIN, 4, 8, {""} },
- { "Threads", "1", "1", SPIN, 1, 8, {""} },
- { "Hash", "32", "32", SPIN, 4, 4096, {""} },
- { "Clear Hash", "false", "false", BUTTON, 0, 0, {""} },
- { "Ponder", "true", "true", CHECK, 0, 0, {""} },
- { "OwnBook", "true", "true", CHECK, 0, 0, {""} },
- { "MultiPV", "1", "1", SPIN, 1, 500, {""} },
- { "UCI_ShowCurrLine", "false", "false", CHECK, 0, 0, {""} },
- { "UCI_Chess960", "false", "false", CHECK, 0, 0, {""} },
- { "", "", "", OPTION_TYPE_NONE, 0, 0, {""}}
- };
-
+ // load_defaults populates the options vector with the hard
+ // coded names and default values.
+
+ void load_defaults(Options& o) {
+
+ o.push_back(Option("Use Search Log", false));
+ o.push_back(Option("Search Log Filename", "SearchLog.txt"));
+ o.push_back(Option("Book File", "book.bin"));
+ o.push_back(Option("Mobility (Middle Game)", 100, 0, 200));
+ o.push_back(Option("Mobility (Endgame)", 100, 0, 200));
+ o.push_back(Option("Pawn Structure (Middle Game)", 100, 0, 200));
+ o.push_back(Option("Pawn Structure (Endgame)", 100, 0, 200));
+ o.push_back(Option("Passed Pawns (Middle Game)", 100, 0, 200));
+ o.push_back(Option("Passed Pawns (Endgame)", 100, 0, 200));
+ o.push_back(Option("Aggressiveness", 100, 0, 200));
+ o.push_back(Option("Cowardice", 100, 0, 200));
+ o.push_back(Option("King Safety Curve", "Quadratic", COMBO));
+
+ o.back().comboValues.push_back("Quadratic");
+ o.back().comboValues.push_back("Linear"); /*, "From File"*/
+
+ o.push_back(Option("King Safety Coefficient", 40, 1, 100));
+ o.push_back(Option("King Safety X Intercept", 0, 0, 20));
+ o.push_back(Option("King Safety Max Slope", 30, 10, 100));
+ o.push_back(Option("King Safety Max Value", 500, 100, 1000));
+ o.push_back(Option("Queen Contact Check Bonus", 4, 0, 8));
+ o.push_back(Option("Rook Contact Check Bonus", 2, 0, 4));
+ o.push_back(Option("Queen Check Bonus", 2, 0, 4));
+ o.push_back(Option("Rook Check Bonus", 1, 0, 4));
+ o.push_back(Option("Bishop Check Bonus", 1, 0, 4));
+ o.push_back(Option("Knight Check Bonus", 1, 0, 4));
+ o.push_back(Option("Discovered Check Bonus", 3, 0, 8));
+ o.push_back(Option("Mate Threat Bonus", 3, 0, 8));
+ o.push_back(Option("Check Extension (PV nodes)", 2, 0, 2));
+ o.push_back(Option("Check Extension (non-PV nodes)", 1, 0, 2));
+ o.push_back(Option("Single Reply Extension (PV nodes)", 2, 0, 2));
+ o.push_back(Option("Single Reply Extension (non-PV nodes)", 2, 0, 2));
+ o.push_back(Option("Mate Threat Extension (PV nodes)", 0, 0, 2));
+ o.push_back(Option("Mate Threat Extension (non-PV nodes)", 0, 0, 2));
+ o.push_back(Option("Pawn Push to 7th Extension (PV nodes)", 1, 0, 2));
+ o.push_back(Option("Pawn Push to 7th Extension (non-PV nodes)", 1, 0, 2));
+ o.push_back(Option("Passed Pawn Extension (PV nodes)", 1, 0, 2));
+ o.push_back(Option("Passed Pawn Extension (non-PV nodes)", 0, 0, 2));
+ o.push_back(Option("Pawn Endgame Extension (PV nodes)", 2, 0, 2));
+ o.push_back(Option("Pawn Endgame Extension (non-PV nodes)", 2, 0, 2));
+ o.push_back(Option("Full Depth Moves (PV nodes)", 14, 1, 100));
+ o.push_back(Option("Full Depth Moves (non-PV nodes)", 3, 1, 100));
+ o.push_back(Option("Threat Depth", 5, 0, 100));
+ o.push_back(Option("Selective Plies", 7, 0, 10));
+ o.push_back(Option("Futility Pruning (Main Search)", true));
+ o.push_back(Option("Futility Pruning (Quiescence Search)", true));
+ o.push_back(Option("Futility Margin 0", 50, 0, 1000));
+ o.push_back(Option("Futility Margin 1", 100, 0, 1000));
+ o.push_back(Option("Futility Margin 2", 300, 0, 1000));
+ o.push_back(Option("Maximum Razoring Depth", 3, 0, 4));
+ o.push_back(Option("Razoring Margin", 300, 150, 600));
+ o.push_back(Option("LSN filtering", true));
+ o.push_back(Option("LSN Time Margin (sec)", 4, 1, 10));
+ o.push_back(Option("LSN Value Margin", 200, 100, 600));
+ o.push_back(Option("Randomness", 0, 0, 10));
+ o.push_back(Option("Minimum Split Depth", 4, 4, 7));
+ o.push_back(Option("Maximum Number of Threads per Split Point", 5, 4, 8));
+ o.push_back(Option("Threads", 1, 1, 8));
+ o.push_back(Option("Hash", 32, 4, 4096));
+ o.push_back(Option("Clear Hash", false, BUTTON));
+ o.push_back(Option("Ponder", true));
+ o.push_back(Option("OwnBook", true));
+ o.push_back(Option("MultiPV", 1, 1, 500));
+ o.push_back(Option("UCI_ShowCurrLine", false));
+ o.push_back(Option("UCI_Chess960", false));
+ }