Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
348 commits
Select commit Hold shift + click to select a range
e725859
module reorgs
krukah Jul 20, 2024
d49fdc5
full iterations over ALL hands + abstractions From<u8>, From<u32>, Fr…
krukah Jul 21, 2024
caea613
put abstraction in path of main()
krukah Jul 21, 2024
1d508d1
gotta get ready to scale this thing!
krukah Jul 21, 2024
bd1fa1e
river generation is partly solved, some module reorg too
krukah Jul 21, 2024
eda780b
moving evaluation to ::cards module
krukah Jul 21, 2024
9cd4341
remove progress logs from river generation
krukah Jul 22, 2024
15f359d
welcome to robopoker, SQLx!
krukah Jul 22, 2024
ed59ffa
gitignore
krukah Jul 22, 2024
5fe04d9
Layer::save semantics
krukah Jul 22, 2024
e10e3d7
tiny impl Add refactor
krukah Jul 22, 2024
b840df8
gameplay module
krukah Jul 22, 2024
3579f33
migration patch
krukah Jul 22, 2024
dc1465c
better sql
krukah Jul 22, 2024
d6068ee
fix fencepost in HandIterator; we were using .hand instead of .last w…
krukah Jul 22, 2024
4ef1802
perfect hashing accomplished for lookup tables
krukah Jul 22, 2024
352d64e
pseudo-random observation selection
krukah Jul 22, 2024
3aa1f00
defer ::collect() on obs::successors and obs::opponents
krukah Jul 22, 2024
e5e7b1b
HandIterator::combinations() for size hinting / normalization
krukah Jul 22, 2024
8b85b93
ignore swap files
krukah Jul 22, 2024
4961ca6
patching oopsie in HandIterator::combinations()
krukah Jul 22, 2024
b8c4e0b
std::fmt::*
krukah Jul 22, 2024
d6f8af5
folder moves, CFR modules are now top-level modules
krukah Jul 23, 2024
ebd9a85
woke up like this**
krukah Jul 23, 2024
e4b5981
Refactor deck implementation and add draw method to Hand
krukah Jul 23, 2024
9ee1da4
async layer implementation
krukah Jul 23, 2024
993634f
river initialization was super easy!
krukah Jul 23, 2024
2870b09
async layer fully replaced layer, s/o ship of theseus
krukah Jul 23, 2024
a63191f
board/hole equivalence with Hand; Evaluator notes; HandIterator optim…
krukah Jul 23, 2024
a3a5f6a
isomorphisms on isomorphisms
krukah Jul 23, 2024
2b3c39e
fixing kickers
krukah Jul 23, 2024
dc06290
impl Display for Seat
krukah Jul 23, 2024
7a819ca
fixed kicker implementation
krukah Jul 24, 2024
84d9842
new HandIterator implementation; expensive skip instead of cheap cont…
krukah Jul 25, 2024
2ac81e3
equity logging
krukah Jul 25, 2024
a8c4c35
will logging have perf impact? we're comparing ~20k/min
krukah Jul 26, 2024
3c2e595
include skip and jump for bench (incoming)
krukah Jul 26, 2024
9b6cf26
new lib.rs
krukah Jul 26, 2024
f7a3f22
benchmarking for HandIterator
krukah Jul 26, 2024
5ee1160
unlogged postgres table; no more WAL for better perf
krukah Jul 26, 2024
d098f91
nvm no bench
krukah Jul 26, 2024
1f3d371
hand iterator improvments, using SkipIterator over JumpIterator
krukah Jul 26, 2024
a86b78c
encapsulate lookups. useful for swapping postgres vs redis vs hashmap
krukah Jul 26, 2024
2501963
Lookup owns persistence mechanism (PG, Redis, HashMap)
krukah Jul 26, 2024
a8d6c83
welcome redis
krukah Jul 26, 2024
79a4bb0
giving redis a shot
krukah Jul 26, 2024
db8a110
idk traits i guess if i ever need it
krukah Jul 26, 2024
74fa914
remove unused CardIterator
krukah Jul 26, 2024
74731b8
back to the streets (postgres) where we began
krukah Jul 26, 2024
82074e5
support for different storage mechanisms
krukah Jul 27, 2024
90bef2d
lotta stuff tbh
krukah Jul 27, 2024
6e252cd
better hierarchical layer chaining
krukah Jul 27, 2024
a98d237
turns out hashmaplookup is quickest
krukah Jul 27, 2024
74382b1
whoops profile.json .gitignore
krukah Jul 27, 2024
b472097
merge eval module w play module
krukah Jul 27, 2024
cc57c6e
Update README.md
krukah Jul 27, 2024
bc73219
small amount of half-committed multithreadign
krukah Jul 27, 2024
c7558fc
multi-threading is back!
krukah Jul 27, 2024
d8a2fad
multi-threading is ACTUALLY back, forgot to turn up tokio thread count
krukah Jul 27, 2024
ec7e27b
memory lookup implements Clone
krukah Jul 27, 2024
e2d173b
better redis impl
krukah Jul 27, 2024
03c24ce
chore: Add Dockerfile and docker-compose.yml for containerization
krukah Jul 27, 2024
3ee90b6
optimize multi-threading for river abstraction
krukah Jul 27, 2024
5e706d9
giving up on docker for now
krukah Jul 27, 2024
d6b254a
batch insert methods on Storage trait
krukah Jul 28, 2024
0ea6a7e
m
krukah Jul 28, 2024
0b4f1cc
dont know how to choose thread parameters
krukah Jul 28, 2024
e1a76d4
different params
krukah Jul 28, 2024
2fb22c1
minor changes before docker release
krukah Jul 29, 2024
12a3cba
remove compile time sqlx:query! checks
krukah Jul 29, 2024
dc5eb64
get docker working
krukah Jul 29, 2024
5aab763
proper Observation<>i64 bijection!
krukah Jul 30, 2024
a4da8e0
completed the other leg of the Observation<>i64 bijection
krukah Jul 30, 2024
b22a7ee
bitwise n-of-a-kind finder
krukah Jul 30, 2024
385bcd1
Street as i16 (smallint != char)
krukah Jul 30, 2024
13cf815
7.5kHz river equities persisted with local multithreading. M1 16GB RAM
krukah Jul 31, 2024
648a02b
logical correction in obs<>i64
krukah Jul 31, 2024
b977d6a
rip redis, didn't make the perf cut
krukah Jul 31, 2024
1602a51
25M eval/s !
krukah Aug 1, 2024
507661f
try using ::drain() to prevent memory leak
krukah Aug 1, 2024
653b776
sweet nothings
krukah Aug 20, 2024
a18361c
dcker stuff
krukah Aug 20, 2024
648253b
separate lower from upper abstraction, rename to equivalence
krukah Aug 20, 2024
5af6c02
claude-recommended postgresql.conf parametrs
krukah Aug 20, 2024
30be098
write directly from channel rx into sink without buffer
krukah Aug 23, 2024
8bab174
separate river clustering components
krukah Aug 23, 2024
3b59869
more efficient rank/suit/card isomorphisms
krukah Aug 23, 2024
e57fbf4
evaluation upgrads
krukah Aug 26, 2024
e6a1355
sweet nothings
krukah Aug 26, 2024
9007633
producer / consumer design for parallelized equity insertions. databa…
krukah Aug 26, 2024
2b03910
metric and projection traits simplify structure of Layer
krukah Aug 26, 2024
87baafb
num cpus, clustering + training almost done
krukah Aug 26, 2024
8cc0bd3
sweet nothings
krukah Aug 26, 2024
9647255
move everything into memory! it was nice while it lasted, postgrse CO…
krukah Aug 27, 2024
ee7b9de
insert an db upload step
krukah Aug 27, 2024
756e06e
impl Upload for Layer
krukah Aug 27, 2024
4e9c89f
consumer task will successfully complete now that we're dropping the …
krukah Aug 27, 2024
81dd25d
match > if let else imo
krukah Aug 27, 2024
22609ad
db persistence solved, progress update
krukah Aug 27, 2024
f82e4e4
farewell, sqlx. it's been so real
krukah Aug 27, 2024
30a5251
don't truncate on upload, remove schema
krukah Aug 27, 2024
4dd0781
sweet nothings
krukah Aug 28, 2024
bae08cf
truncate only on river, corrected EMD implementation
krukah Aug 28, 2024
8aa23a2
pre-allocate massive in-mem hashMap for river abstraction
krukah Aug 28, 2024
d37cf89
sweet nothings
krukah Aug 28, 2024
eb6cce6
impl ToSql and get zero copy pg_copy writes
krukah Aug 28, 2024
ec4d42c
corrected EMD calculation, hoisted some structs
krukah Aug 29, 2024
bc9d4db
enhanced logging
krukah Aug 29, 2024
150fdc5
cloud friendly logs
krukah Aug 29, 2024
50dc38f
step aside hashmap, btreemap is taking your place
krukah Aug 30, 2024
9484660
Create rust.yml
krukah Sep 1, 2024
383bee2
add centroid update to kmeans clustering
krukah Aug 31, 2024
75ccccb
separate upload process
krukah Sep 1, 2024
3e9b4b9
module reorg
krukah Sep 1, 2024
7b5b31b
privatizing fields; pushing logic further downstream
krukah Sep 1, 2024
a5cbb8a
solution decoupled from Tree
krukah Sep 1, 2024
140965f
eliminating children
krukah Sep 5, 2024
f4d5601
idiomatic, elegant, functional, type safe recursive tree generation
krukah Sep 5, 2024
7c90ff5
fewer hashMaps, more nested hashHashMaps
krukah Sep 5, 2024
2f4c2a8
compiler happy. need to tie Tree Profile Epoch together more naturall…
krukah Sep 6, 2024
515e2aa
wip
krukah Sep 7, 2024
59a1124
rps-convergence in MC sampling
krukah Sep 7, 2024
4413228
why doesn this work with RPS
krukah Sep 8, 2024
d6526c6
back to Box & NonNull for shared graph pointers
krukah Sep 9, 2024
fe014db
decouple Tree and Profile into Trainer; BTreeMap
krukah Sep 9, 2024
8fb73b1
MCCFR with external sampling
krukah Sep 9, 2024
bd08557
external sampling RPS convergence (slow, weird reach/policy code dupe)
krukah Sep 9, 2024
e501f6e
nvm got rid of the code dupe
krukah Sep 9, 2024
75f5b28
trainer samples with good RNG encapsulation
krukah Sep 10, 2024
bbc0c55
sample tree from policy
krukah Sep 11, 2024
bdb0e71
Create rust.yml
krukah Sep 1, 2024
95aa1ec
Merge branch 'main' of https://github.com/krukah/robopoker into main
krukah Sep 11, 2024
4ae1d8c
license, readmen
krukah Sep 12, 2024
5598fd1
skoenon in profile.rs
krukah Sep 13, 2024
ecdf109
we will get back to MC sampling, just need to handle sampling calcs
krukah Sep 14, 2024
ab5a131
i like the value calculations here more
krukah Sep 14, 2024
5924533
external MCCFR with correct convergence
krukah Sep 15, 2024
287d1f8
pre-holdem refactor, identifying struct redundancies
krukah Sep 15, 2024
bce2f54
sweet nothings
krukah Sep 15, 2024
e984e25
market traits for generic CFR
krukah Sep 15, 2024
1248fc2
benchmarking
krukah Sep 15, 2024
26accab
bench consistency
krukah Sep 15, 2024
34bc312
deck <> hand bijection
krukah Sep 16, 2024
d6fc47d
stable rotation.rs , now spot.rs
krukah Sep 16, 2024
09c97ad
Spot:: pub fn apply , pub fn options
krukah Sep 16, 2024
b4ab35d
payout showdown spot all reconciled
krukah Sep 17, 2024
2c1b0b5
human.rs is back
krukah Sep 17, 2024
a38cd83
wip: interactive Spot::play in shell
krukah Sep 17, 2024
a76ad10
rotation and chooser dynamics solved; to_* and effective_* WIP
krukah Sep 18, 2024
88f8eb1
Sometimes, The Code Just Writes Itself!
krukah Sep 19, 2024
f8085cd
spot -> game
krukah Sep 19, 2024
d6067eb
root node :: play ()
krukah Sep 19, 2024
6a9de2a
play in a semi-infinite loop, thanks to ! type
krukah Sep 19, 2024
77d4bcc
game rotation; Game -> Observation
krukah Sep 19, 2024
21001fc
struct Abstractor; trait Loadable;
krukah Sep 19, 2024
4088113
strict inequality on rotation player check
krukah Sep 19, 2024
5649fc6
mmm nvm i don't want persistence trait
krukah Sep 19, 2024
0602611
abstractor download + upload
krukah Sep 19, 2024
644bda2
very useful impl Display in Game, Board, Payout, ...
krukah Sep 20, 2024
2a48926
explicit Rank > u16 conversion to patch straight evaluation bug
krukah Sep 20, 2024
1070108
begin to replace RPS private impl with NLHE
krukah Sep 21, 2024
f175025
proper Player + Data implemenation between CFR / NLHE
krukah Sep 21, 2024
9b8c284
Card[Observation | Abstraction]
krukah Sep 21, 2024
e8ef587
generated abstraction from imperfect game recall + action abstraction
krukah Sep 22, 2024
cf75b3e
we're writing to disk and eliminating async and Street::Show
krukah Sep 22, 2024
410cf5e
passing the knife
krukah Sep 22, 2024
a630806
tree exploration is a first class citizen, struct Explorer
krukah Sep 23, 2024
d1a40f4
kmeans refactor
krukah Sep 24, 2024
a676995
kmeans refactor up to EMD implementation returning non-zero
krukah Sep 24, 2024
45690f4
impl From<Observation> for Histogram
krukah Sep 24, 2024
57d4417
fix exhaustion of shared iterator in kmeans initialization
krukah Sep 24, 2024
1337b15
cursor is SO OP for this kinda stuff
krukah Sep 25, 2024
ed3750c
new favorite robopoker feature, histogram display
krukah Sep 25, 2024
a67a3a2
real tests
krukah Sep 25, 2024
7a4952e
more intuition in the EMD naming, algo makes sense now tbh
krukah Sep 25, 2024
b62b7da
flip EMD calculations for source/sink dynamics
krukah Sep 25, 2024
1613550
maybe i should change this contract
krukah Sep 25, 2024
2948644
more histogram displays, might be good for the README
krukah Sep 25, 2024
9830c36
-- --nocapture friendly
krukah Sep 25, 2024
3d4cb1d
zero copy histogram when initializing kmeans++
krukah Sep 27, 2024
3b31b1f
new benches, less Bucket(Path, Absraction) indirection
krukah Sep 27, 2024
c71696d
info logging
krukah Sep 30, 2024
427f977
skip river layer for hierarchical kmeans abstraction
krukah Sep 30, 2024
070c781
feeling good ab kmeans impl! might have to tune hyper params
krukah Sep 30, 2024
66a8083
tests + other nonsense
krukah Oct 2, 2024
41b92bd
thank u sonnet for these tests
krukah Oct 2, 2024
fbb5580
not sure where these changes came from , danglers
krukah Oct 2, 2024
aba5b6d
not sure where these changes came from , danglers
krukah Oct 2, 2024
fa7701d
toward stronger struct/impl (de)coupling
krukah Oct 3, 2024
94bbc66
all these showdown tests really just work...i love rust fr
krukah Oct 4, 2024
39fc04b
very natural implementation with the new HierarchicalLearner struct
krukah Oct 4, 2024
11ee73b
just doing some healthy extracting
krukah Oct 4, 2024
6d857ee
refactoring is so easy
krukah Oct 4, 2024
7313e4d
guess i can delete these now? i'll figure out multithread later
krukah Oct 4, 2024
720db80
welcome rayon! time to parallelize
krukah Oct 4, 2024
a66d7f7
.dockerignore, who knew it'd save be 50gb of image
krukah Oct 4, 2024
61ee454
i'm unstoppable rn
krukah Oct 4, 2024
b4cd494
observation bijection tests
krukah Oct 4, 2024
0406b0b
some card module tests to pass the time before inevitable release of …
krukah Oct 4, 2024
7e92356
got the compiler happy about Arc<RwLock< !
krukah Oct 6, 2024
74c1360
further parallelization; for free; i love FP
krukah Oct 6, 2024
9a7e1e9
improved logging
krukah Oct 6, 2024
66a4a22
groundwork for isomorphic Canonical(Observation) wrapper type
krukah Oct 6, 2024
e3e7fc8
writing Abstractor to disk in PGCOPY formatting
krukah Oct 6, 2024
2f13d0d
eliminate RwLock deadlock; don't hog the write lock too long
krukah Oct 6, 2024
81fd6f4
eliminate RwLock deadlock; don't hog the write lock too long
krukah Oct 6, 2024
4838753
crates.io requirements
krukah Oct 7, 2024
dec1a78
hand iterator tests
krukah Oct 7, 2024
bc69ff7
cargo.toml typo
krukah Oct 7, 2024
3995181
game tree root is solved. need lossless preflop abstractions in explo…
krukah Oct 7, 2024
44c4186
no-arg implementation for blueprint upload
krukah Oct 7, 2024
1c89295
goodbye, tokio
krukah Oct 7, 2024
815897d
toward well-encapsulated persistence
krukah Oct 7, 2024
0bf180d
hoist expensive Histogram::from out of benchmark iteration
krukah Oct 7, 2024
974a596
optimize EMD for turn with O(N) rather than O(N^2)
krukah Oct 7, 2024
f315270
shaved off 100nanos from using const static reference
krukah Oct 7, 2024
dde0ed4
.dockerignore
krukah Oct 7, 2024
68f10c6
compact Profile disk representation
krukah Oct 7, 2024
43126f8
sweet nothings
krukah Oct 8, 2024
65905f3
halfway through Metric/Integral impl
krukah Oct 9, 2024
81300b0
adding this Integral::compute() but i'm not gonna keep it around
krukah Oct 9, 2024
d88f89a
removing Integral, introducing Isomorphism
krukah Oct 9, 2024
755f4fe
Merge branch 'main' into isomorphism
krukah Oct 9, 2024
98b0799
suit -> u64 injective morphism
krukah Oct 9, 2024
f7c2aa1
Rank -> u64 morphism
krukah Oct 9, 2024
4c89131
morphism tests
krukah Oct 9, 2024
5f1f5f8
sweet nothings
krukah Oct 9, 2024
d174918
meh wasted 48h of compute all to get ambiguous logs
krukah Oct 9, 2024
7a3abfd
new citations just dropped
krukah Oct 9, 2024
cb3d2fe
debugging deadlocks; lock interleaving?
krukah Oct 9, 2024
0557062
no more Arc<RwLock<_>>, fun while it lasted tho
krukah Oct 10, 2024
ac6bbca
Permutation struct & impl
krukah Oct 10, 2024
0217c50
notes about Profile and Minimizer
krukah Oct 10, 2024
c5a1c16
warming up for isomorphism to replace observation where desired
krukah Oct 10, 2024
ec7afc2
super sneaky 40% speedup on eval with bit-wise no-alloc suit_count!
krukah Oct 10, 2024
17cbe43
permuatation is solved, maybe isomorphism too??!
krukah Oct 10, 2024
8a1e479
canon and permutation and isomorph
krukah Oct 10, 2024
d092374
fixing
krukah Oct 10, 2024
1e86710
impl From<&str> for [Suit,Rank,Card,Hand]
krukah Oct 11, 2024
162662b
Permutation::all(), ::random()
krukah Oct 11, 2024
97e9686
unique permutation tests
krukah Oct 11, 2024
7334fc4
From<u64> for Card returns high card (previously low)
krukah Oct 11, 2024
bb6f6fb
Hand::draw deterministically removes high card, Deck::draw randomly
krukah Oct 11, 2024
dcce83d
impl Iterator<Suit> for Observation, weirdly enough
krukah Oct 11, 2024
339f566
i have solved Strategic Isomorphism!!!
krukah Oct 11, 2024
da655ef
just great stuff. benchmarks and tests are popping rn
krukah Oct 11, 2024
3ccd40c
code so low entropy i'm breaking 2LoT...0 alloc
krukah Oct 11, 2024
41288c4
on my micro optim + filter non-canonical Observations (!)
krukah Oct 11, 2024
49bc194
nvm that was way too slow, gonna have to figure out speed up Iso iter
krukah Oct 11, 2024
a06e2c6
Try use GPU (Tho seems to be very limited)
reinismu Oct 12, 2024
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
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Ignore everything
*
# Allow only Rust-related files and folders
!Cargo.toml
!Cargo.lock
!benches/
!src/
15 changes: 15 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Rust
on:
push:
branches: ["main"]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: cargo build
- name: Test
run: cargo test
- name: Benchmark
run: cargo bench --message-format short
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
/target
.DS_Store
.vscode/*
/data
.todo
.env
.swp
profile.json
37 changes: 0 additions & 37 deletions .vscode/launch.json

This file was deleted.

Loading