Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .qmake.stash
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201703L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 13
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
/usr/include/c++/13 \
/usr/include/x86_64-linux-gnu/c++/13 \
/usr/include/c++/13/backward \
/usr/lib/gcc/x86_64-linux-gnu/13/include \
/usr/local/include \
/usr/include/x86_64-linux-gnu \
/usr/include
QMAKE_CXX.LIBDIRS = \
/usr/lib/gcc/x86_64-linux-gnu/13 \
/usr/lib/x86_64-linux-gnu \
/usr/lib \
/lib/x86_64-linux-gnu \
/lib
Binary file added ActionNode.o
Binary file not shown.
Binary file added BestResponse.o
Binary file not shown.
Binary file added Card.o
Binary file not shown.
Binary file added CfrPlusTrainable.o
Binary file not shown.
Binary file added CfrSolver.o
Binary file not shown.
Binary file added ChanceNode.o
Binary file not shown.
Binary file added CommandLineTool.o
Binary file not shown.
Binary file added Deck.o
Binary file not shown.
Binary file added Dic5Compairer.o
Binary file not shown.
Binary file added DiscountedCfrTrainable.o
Binary file not shown.
Binary file added DiscountedCfrTrainableHF.o
Binary file not shown.
Binary file added DiscountedCfrTrainableSF.o
Binary file not shown.
Binary file added GameActions.o
Binary file not shown.
Binary file added GameTree.o
Binary file not shown.
Binary file added GameTreeBuildingSettings.o
Binary file not shown.
Binary file added GameTreeNode.o
Binary file not shown.
1,044 changes: 1,044 additions & 0 deletions Makefile

Large diffs are not rendered by default.

Binary file added PCfrSolver.o
Binary file not shown.
Binary file added PokerSolver.o
Binary file not shown.
Binary file added PrivateCards.o
Binary file not shown.
Binary file added PrivateCardsManager.o
Binary file not shown.
Binary file added PrivateRangeConverter.o
Binary file not shown.
Binary file added RiverCombs.o
Binary file not shown.
Binary file added RiverRangeManager.o
Binary file not shown.
Binary file added Rule.o
Binary file not shown.
Binary file added ShowdownNode.o
Binary file not shown.
Binary file added Solver.o
Binary file not shown.
Binary file added StreetSetting.o
Binary file not shown.
Binary file added TCfrSolver.o
Binary file not shown.
Binary file added TerminalNode.o
Binary file not shown.
Binary file added TexasSolverGui
Binary file not shown.
3 changes: 2 additions & 1 deletion TexasSolverGui.pro
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ QMAKE_CXXFLAGS += -fopenmp
QMAKE_LFLAGS += -fopenmp
}

QMAKE_CXXFLAGS_RELEASE *= -O2
QMAKE_CXXFLAGS_RELEASE *= -O3 -march=native -flto
QMAKE_LFLAGS_RELEASE *= -flto
QMAKE_LFLAGS += -v

SOURCES += \
Expand Down
Binary file added Trainable.o
Binary file not shown.
22 changes: 22 additions & 0 deletions benchmark/benchmark_river.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
set_pot 10
set_effective_stack 10
set_board Qs,Jh,2h,5d,8c
set_range_oop AA,KK,QQ,JJ,TT,99,88,77,66,55,AK,AQs,AJs,ATs,KQs,KJs,KTs,QJs,QTs,JTs,T9s,98s,87s,76s,65s,54s
set_range_ip QQ,JJ,TT,99,88,77,66,55,44,AK,AQs,AJs,ATs,A9s,A8s,A5s,A4s,A3s,A2s,KQ,KJ,KTs,K9s,K8s,QJ,QTs,Q9s,JTs,J9s,T9s,T8s,98s,97s,87s,86s,76s,75s,65s,64s,54s,53s,43s
set_bet_sizes oop,river,bet,50
set_bet_sizes oop,river,donk,50
set_bet_sizes oop,river,allin
set_bet_sizes ip,river,bet,50
set_bet_sizes ip,river,raise,50
set_bet_sizes ip,river,allin
set_allin_threshold 1.0
build_tree
set_thread_num 2
set_accuracy 0.5
set_max_iteration 200
set_print_interval 50
set_use_isomorphism 1
set_use_halffloats 2
start_solve
set_dump_rounds 1
dump_result output_result_river.json
24 changes: 24 additions & 0 deletions benchmark/benchmark_simple.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
set_pot 10
set_effective_stack 95
set_board Qs,Jh,2h
set_range_oop AA,KK,QQ,JJ,TT,99:0.75,88:0.75,77:0.5,66:0.25,55:0.25,AK,AQs,AQo:0.75,AJs,AJo:0.5,ATs:0.75,A6s:0.25,A5s:0.75,A4s:0.75,A3s:0.5,A2s:0.5,KQs,KQo:0.5,KJs,KTs:0.75,K5s:0.25,K4s:0.25,QJs:0.75,QTs:0.75,Q9s:0.5,JTs:0.75,J9s:0.75,J8s:0.75,T9s:0.75,T8s:0.75,T7s:0.75,98s:0.75,97s:0.75,96s:0.5,87s:0.75,86s:0.5,85s:0.5,76s:0.75,75s:0.5,65s:0.75,64s:0.5,54s:0.75,53s:0.5,43s:0.5
set_range_ip QQ:0.5,JJ:0.75,TT,99,88,77,66,55,44,33,22,AKo:0.25,AQs,AQo:0.75,AJs,AJo:0.75,ATs,ATo:0.75,A9s,A8s,A7s,A6s,A5s,A4s,A3s,A2s,KQ,KJ,KTs,KTo:0.5,K9s,K8s,K7s,K6s,K5s,K4s:0.5,K3s:0.5,K2s:0.5,QJ,QTs,Q9s,Q8s,Q7s,JTs,JTo:0.5,J9s,J8s,T9s,T8s,T7s,98s,97s,96s,87s,86s,76s,75s,65s,64s,54s,53s,43s
set_bet_sizes oop,flop,bet,50
set_bet_sizes ip,flop,bet,50
set_bet_sizes oop,turn,bet,50
set_bet_sizes oop,turn,donk,50
set_bet_sizes ip,turn,bet,50
set_bet_sizes oop,river,bet,50
set_bet_sizes oop,river,donk,50
set_bet_sizes ip,river,bet,50
set_allin_threshold 1.0
build_tree
set_thread_num 2
set_accuracy 2
set_max_iteration 200
set_print_interval 50
set_use_isomorphism 1
set_use_halffloats 2
start_solve
set_dump_rounds 1
dump_result output_result_simple.json
7 changes: 4 additions & 3 deletions benchmark/benchmark_texassolver.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ set_bet_sizes ip,river,raise,50
set_bet_sizes ip,river,allin
set_allin_threshold 1.0
build_tree
set_thread_num 6
set_accuracy 0.3
set_thread_num 2
set_accuracy 2
set_max_iteration 200
set_print_interval 10
set_print_interval 50
set_use_isomorphism 1
set_use_halffloats 2
start_solve
set_dump_rounds 1
dump_result output_result.json
29 changes: 29 additions & 0 deletions benchmark/benchmark_turn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
set_pot 10
set_effective_stack 50
set_board Qs,Jh,2h,5d
set_range_oop AA,KK,QQ,JJ,TT,99,88,77,66,55,AK,AQs,AQo:0.75,AJs,AJo:0.5,ATs:0.75,A5s:0.75,A4s:0.75,KQs,KQo:0.5,KJs,KTs:0.75,QJs:0.75,QTs:0.75,JTs:0.75,J9s:0.75,T9s:0.75,T8s:0.75,98s:0.75,87s:0.75,76s:0.75,65s:0.75,54s:0.75
set_range_ip QQ:0.5,JJ:0.75,TT,99,88,77,66,55,44,33,AKo:0.25,AQs,AQo:0.75,AJs,AJo:0.75,ATs,ATo:0.75,A9s,A8s,A5s,A4s,A3s,A2s,KQ,KJ,KTs,KTo:0.5,K9s,K8s,QJ,QTs,Q9s,JTs,JTo:0.5,J9s,T9s,T8s,98s,97s,87s,76s,65s,54s,53s,43s
set_bet_sizes oop,turn,bet,50
set_bet_sizes oop,turn,donk,50
set_bet_sizes oop,turn,raise,50
set_bet_sizes oop,turn,allin
set_bet_sizes ip,turn,bet,50
set_bet_sizes ip,turn,raise,50
set_bet_sizes oop,river,bet,50
set_bet_sizes oop,river,donk,50
set_bet_sizes oop,river,raise,50
set_bet_sizes oop,river,allin
set_bet_sizes ip,river,bet,50
set_bet_sizes ip,river,raise,50
set_bet_sizes ip,river,allin
set_allin_threshold 1.0
build_tree
set_thread_num 2
set_accuracy 0.5
set_max_iteration 200
set_print_interval 50
set_use_isomorphism 1
set_use_halffloats 2
start_solve
set_dump_rounds 1
dump_result output_result_turn.json
Binary file added benchmark_cli
Binary file not shown.
49 changes: 49 additions & 0 deletions benchmark_cli.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Benchmark CLI entry point - runs solver from command file and measures time
#include <iostream>
#include <fstream>
#include <string>
#include <chrono>
#include "include/tools/CommandLineTool.h"

using namespace std;

int main(int argc, char *argv[]) {
string mode = "holdem";
string resource_dir = "../resources";
string input_file = "benchmark/benchmark_texassolver.txt";

if(argc > 1) input_file = argv[1];
if(argc > 2) resource_dir = argv[2];
if(argc > 3) mode = argv[3];

cout << "=== TexasSolver Benchmark ===" << endl;
cout << "Input file: " << input_file << endl;
cout << "Resource dir: " << resource_dir << endl;
cout << "Mode: " << mode << endl;

auto total_start = chrono::high_resolution_clock::now();

CommandLineTool tool(mode, resource_dir);

auto init_end = chrono::high_resolution_clock::now();
double init_time = chrono::duration<double>(init_end - total_start).count();
cout << "Init time: " << init_time << "s" << endl;

tool.execFromFile(input_file);

auto solve_end = chrono::high_resolution_clock::now();
double total_time = chrono::duration<double>(solve_end - total_start).count();
double solve_time = total_time - init_time;

cout << "=== Benchmark Results ===" << endl;
cout << "Total time: " << total_time << "s" << endl;
cout << "Solve time: " << solve_time << "s" << endl;

if(solve_time < 20.0) {
cout << "PASS: Solve time under 20s target" << endl;
} else {
cout << "FAIL: Solve time exceeds 20s target" << endl;
}

return 0;
}
Binary file added benchmark_cli.o
Binary file not shown.
97 changes: 97 additions & 0 deletions benchmark_cli.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Benchmark CLI project - minimal build without GUI
QT -= gui widgets
QT += core

TARGET = benchmark_cli
TEMPLATE = app
CONFIG += console c++17

linux: {
QMAKE_CXXFLAGS += -fopenmp
QMAKE_LFLAGS += -fopenmp
}

QMAKE_CXXFLAGS_RELEASE *= -O3 -march=native -flto
QMAKE_LFLAGS_RELEASE *= -flto

SOURCES += \
benchmark_cli.cpp \
src/Deck.cpp \
src/Card.cpp \
src/GameTree.cpp \
src/library.cpp \
src/compairer/Dic5Compairer.cpp \
src/nodes/ActionNode.cpp \
src/nodes/ChanceNode.cpp \
src/nodes/GameActions.cpp \
src/nodes/GameTreeNode.cpp \
src/nodes/ShowdownNode.cpp \
src/nodes/TerminalNode.cpp \
src/ranges/PrivateCards.cpp \
src/ranges/PrivateCardsManager.cpp \
src/ranges/RiverCombs.cpp \
src/ranges/RiverRangeManager.cpp \
src/runtime/PokerSolver.cpp \
src/solver/BestResponse.cpp \
src/solver/CfrSolver.cpp \
src/solver/PCfrSolver.cpp \
src/solver/Solver.cpp \
src/tools/CommandLineTool.cpp \
src/tools/GameTreeBuildingSettings.cpp \
src/tools/lookup8.cpp \
src/tools/PrivateRangeConverter.cpp \
src/tools/progressbar.cpp \
src/tools/Rule.cpp \
src/tools/StreetSetting.cpp \
src/tools/utils.cpp \
src/trainable/CfrPlusTrainable.cpp \
src/trainable/DiscountedCfrTrainable.cpp \
src/trainable/DiscountedCfrTrainableHF.cpp \
src/trainable/DiscountedCfrTrainableSF.cpp \
src/trainable/Trainable.cpp \
src/runtime/qsolverjob.cpp

HEADERS += \
include/tools/half-1-12-0.h \
include/trainable/DiscountedCfrTrainableHF.h \
include/trainable/DiscountedCfrTrainableSF.h \
include/Card.h \
include/GameTree.h \
include/Deck.h \
include/json.hpp \
include/library.h \
include/solver/PCfrSolver.h \
include/solver/Solver.h \
include/solver/BestResponse.h \
include/solver/CfrSolver.h \
include/tools/argparse.hpp \
include/tools/CommandLineTool.h \
include/tools/utils.h \
include/tools/GameTreeBuildingSettings.h \
include/tools/Rule.h \
include/tools/StreetSetting.h \
include/tools/lookup8.h \
include/tools/PrivateRangeConverter.h \
include/tools/progressbar.h \
include/runtime/PokerSolver.h \
include/runtime/qsolverjob.h \
include/trainable/CfrPlusTrainable.h \
include/trainable/DiscountedCfrTrainable.h \
include/trainable/Trainable.h \
include/compairer/Compairer.h \
include/compairer/Dic5Compairer.h \
include/nodes/ActionNode.h \
include/nodes/ChanceNode.h \
include/nodes/GameActions.h \
include/nodes/GameTreeNode.h \
include/nodes/ShowdownNode.h \
include/nodes/TerminalNode.h \
include/ranges/PrivateCards.h \
include/ranges/PrivateCardsManager.h \
include/ranges/RiverCombs.h \
include/ranges/RiverRangeManager.h \
include/tools/tinyformat.h \
include/tools/qdebugstream.h

RESOURCES += \
compairer.qrc
Binary file added bindSolver.o
Binary file not shown.
Binary file added boardselector.o
Binary file not shown.
Binary file added boardselectortabledelegate.o
Binary file not shown.
Binary file added boardselectortablemodel.o
Binary file not shown.
Binary file added console.o
Binary file not shown.
Binary file added detailitemdelegate.o
Binary file not shown.
Binary file added detailviewermodel.o
Binary file not shown.
Binary file added detailwindowsetting.o
Binary file not shown.
Binary file added droptextedit.o
Binary file not shown.
Binary file added htmltablerangeview.o
Binary file not shown.
Binary file added htmltableview.o
Binary file not shown.
5 changes: 3 additions & 2 deletions include/tools/CommandLineTool.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ class CommandLineTool{
string range_ip;
string range_oop;
string board;
float accuracy;
float accuracy=0.5;
int max_iteration=100;
int use_isomorphism=0;
int print_interval=10;
int use_halffloats=2;
int print_interval=25;
int dump_rounds = 1;
shared_ptr<GameTreeBuildingSettings> gtbs;
};
Expand Down
5 changes: 3 additions & 2 deletions include/trainable/DiscountedCfrTrainable.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ class DiscountedCfrTrainable:public Trainable {
vector<float> r_plus_sum;
vector<float> cum_r_plus;
//vector<float> cum_r_plus_sum;
//vector<float> current_strategy;
//vector<float> average_strategy;
// Strategy cache to avoid repeated allocation and recomputation
vector<float> current_strategy_cache;
bool strategy_dirty = true;
public:
DiscountedCfrTrainable(vector<PrivateCards> *privateCards,
ActionNode &actionNode);
Expand Down
4 changes: 4 additions & 0 deletions include/trainable/DiscountedCfrTrainableHF.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ class DiscountedCfrTrainableHF:public Trainable {
constexpr static float gamma = 2;
constexpr static float theta = 0.9f;
vector<CumRplusStorage> cum_r_plus;
// Strategy cache to avoid repeated allocation and recomputation
vector<float> current_strategy_cache;
vector<float> r_plus_sum_cache;
bool strategy_dirty = true;
public:
DiscountedCfrTrainableHF(vector<PrivateCards> *privateCards,
ActionNode &actionNode);
Expand Down
Binary file added library.o
Binary file not shown.
Binary file added lookup8.o
Binary file not shown.
Binary file added main.o
Binary file not shown.
Binary file added mainwindow.o
Binary file not shown.
Loading