Jesolver Command Reference

See PioSOLVER documentation for more information about the basic commands.

Useful Jesolver-specific commands include set_compression, set_ev_boost, set_hand_type_order, set_low_card and enable_progress_bar.

Command Line Arguments


USAGE:

   jesolver.exe  [-a <name=value>] ...  [-c <command>] ...  [-d
                 <command>] ...  [-e] [-k] [-m] [-o] [-p
                 <port>] [-r] [-s] [-t] [-v] [--] [--version]
                 [-h] <script.txt>


Where:

   -a <name=value>,  --var <name=value>  (accepted multiple times)
     set value of a variable (set_value/get_value/$name in script)

   -c <command>,  --cmd <command>  (accepted multiple times)
     execute command

   -d <command>,  --pscmd <command>  (accepted multiple times)
     execute command after script is loaded

   -e,  --exit
     exit after client disconnects (when running as a server)

   -k,  --suppressok
     suppress ok-messages

   -m,  --compactmsg
     show only single-line solver messages

   -o,  --echo
     echo commands

   -p <port>,  --port <port>
     server port (default 5251)

   -r,  --color
     color text

   -s,  --server
     run as a server

   -t,  --terminateonerror
     terminate process on error

   -v,  --verbose
     show debug information

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   <script.txt>
     script to load

Example:

    > jesolver.exe -vtrk 3betpotFAST.txt -d "go"

Common Parameters

position	OOP or IP
node-id		history of actions, e.g. r:0:b123:c:Qs:c (always start with 'r:0:', bet 123, call, deal Qs, check)
betsizes	series of cumulative bet sizes, e.g. 0 30 30 30 90 (check, bet 30, call, deal next card, check, bet 60)
filename	e.g. "big tree.cfr", use double quotes if there are spaces in the name

Whenever there is a list of 1326 (\(\binom{52}{2}\)) values, it refers to the hands in the order given by show_hand_order.

Commands

add_info_line <line>

line		a line of text to be added to saved tree files

Used by PioVIEWER.

add_line <betsizes>

build_tree

Build a tree using the currently set tree parameters.

calc_eq <position>

calc_eq_node <position> <node-id>

calc_eq_pp <position>

calc_ev <position> <node-id>

calc_ev_line <position> <node-id>

calc_ev_pp <position> <node-id>

calc_global_freq <node-id>

calc_line_freq <node-id>

calc_results

clear_lines

Clear lines added with add_line.

combo_lock_node <node-id> <locked>

locked		1326 values of either 0 (unlocked) or 1 (locked)

connect <hostname> [port]

hostname	hostname or ip address of server
port		server port number (default 5251)

Connect to a server (NOT a worker). See how to run Jesolver on a server.

connect_to_workers <hostname>[:port] <weight> <hostname>[:port] <weight> ...

hostname	hostname or ip address of worker
port		worker server port number (default 5251)
weight		relative performance of worker, used to allocate work

Example: connect_to_workers worker1 3.0 worker2:5352 1.0 connects to two workers. worker1 is expected to be three times as fast as worker2.

cut_line <node-id>

deactivate

Deactivates current license and exits. Use this before switching computers.

default_value <variable> <value>

Set value of a variable if it has not been set yet.

Example:

default_value num_steps 300
build_tree
go $num_steps steps
...
> Jesolver.exe -a num_steps=500

disconnect

Disconnect from connected server

dump_tree <filename> [no_turns | no_rivers] [no_evs] [fast]

no_turns	don't save turn or river data
no_rivers	don't save river data
no_evs		don't save EVs. EVs show as zero in the viewer but strategies and ranges still work.
fast		prefer faster load time over smaller file size

Saves the current tree to disk.

echo <text>

text		a line of text to write to output

enable_adaptive_precision <0 | 1>

Enable or disable automatic precision adjustment (on by default). Only turn off if it fails to work properly (should never happen).

enable_avx512 <0 | 1>

Enable or disable AVX-512 optimizations.

enable_numa <0 | 1>

Enable or disable NUMA optimizations. May improve performance if running on a computer with multiple NUMA nodes.

enable_progress_bar <0 | 1>

Enable or disable solver progress bar when running interactively in a console.

enable_river_strategy <0 | 1>

Enable or disable computation of river strategy (enabled by default, only disable if you know what you are doing). Disabling river strategy computation nearly halves memory usage but makes it impossible to compute exact exploitability. It's therefore only useful if you know how many iterations to run in advance AND are going to throw the river strategy away anyway. e.g.:

enable_river_strategy 0
build_tree
go 300 steps
wait_for_solver
dump_tree tree.cfr no_rivers

enable_ui_notifications <0 | 1>

Enable or disable extra UI notifications that may or may not be used by GUI applications.

estimate_schematic_tree

Estimate the size of the tree based on current tree creation parameters.

eval_hand <cards>

Evaluate a poker hand with currently set rules. The third value is a hexadecimal hand rank number that can be used to compare hands. Greetings goes to Steve Brecher for the evaluator.

Examples:

eval_hand AsAdKs5s5d2h3h
AsAdKs5s5d2h3h | 7 cards | 020c3b00 |       twopair | aces and fives, king kicker

eval_hand As6d7c8h9c
As6d7c8h9c | 5 cards | 000c7654 |      highcard | ace nine eight seven six

set_low_card 6
eval_hand As6d7c8h9c
As6d7c8h9c | 5 cards | 04030000 |      straight | nine eight seven six ace

set_low_card 6
set_hand_type_order highcard pair twopair straight trips fullhouse flush quads straightflush
eval_hand 6c7c8h9sTh
6c7c8h9sTh | 5 cards | 03080000 |      straight | ten nine eight seven six
eval_hand 6c7c8h8s8c
6c7c8h8s8c | 5 cards | 04065400 |         trips | eights, seven six kicker

explo_partial <node-id>

force_line <betsizes>

forget <turns | rivers>

Remove turn+river or river strategies freeing memory.

free_schematic_tree

Clear lines added with add_line.

free_tree

Delete current tree and free memory.

get_actual_compression

Return the compression level that is used by the current tree.

get_all_values

Output names and values of all set variables.

Example:

get_all_values
build 1068
build_date Nov 15 2020
build_time 21:34:08
cpu_time 215.750000
peak_working_set 461
running_time 18.453000
solver_ev_ip 75.029664
solver_ev_oop 104.970338
solver_exploitability 0.048353
solver_iterations 300
solver_mes_ip 75.063159
solver_mes_oop 105.033548
END

get_instruction_set

Get the CPU instruction set used by the current process.

get_value <variable>

Output name and value of a variable.

get_worker_data

Used internally by master/workers.

get_worker_strategy

Used internally by master/workers.

go [n seconds | n steps] [block]

n seconds	run solver for n seconds or until set accuracy is reached
n steps		run solver for n iterations or until set accuracy is reached
block		wait until done before returning

help

ignore_mem_check

Ignored.

init_worker

Used internally by master/workers.

is_ready

Check if the solver is initialized.

is_tree_present

Return true if a tree has been built.

load_script <filename>

Load script from disk and execute the commands.

load_tree <filename>

Load tree from disk replacing the current one if any.

lock_node <node-id>

Lock strategies of given node.

node_count

ping

Ping workers.

rebuild_all (rebuild_forgotten_streets)

Rebuild forgotten streets with default strategies.

remove_line <node-id>

repeat <n> <command>

Repeat command n times.

reset_tree_info

Reset lines added with add_info_line.

set_accuracy <value> [chips | fraction]

Set the accuracy at which the solver stops in either chips (default) or a fraction of the pot.

set_board <cards>

Set current board cards.

set_compression <level>

Called before building a tree. level can be one of:

-1 | auto		automatically try to choose the fastest level that uses less than 90% of available memory
 0 | none		no compression, old default
 1 | low		~54% of none
 2 | medium		~41% of none
 3 | high		~35% of none
 4 | max		~25% of none
 5 | fast		~68% of none, new default

The compression ratios are only estimates so it may sometimes be better to choose the level manually.

set_deck_distribution <probs>

probs      52 values in the order 2c 3c ... 2d 3d ... 2h 3h ... 2s 3s ... (default 1 1 1 ...)

Used to alter the relative probabilities of the cards in the deck to model the "bunching" effect in a multi-handed game. Can also be used to create a 3-suit hold'em variant (possibly with set_hand_type_order) for example. Note that the players' ranges are not affected by this command so you might have to change them manually.

set_eff_stack <stack>

set_end_string <string>

For PioSolver 2.x support. See documentation.

set_ev_boost <node-id> <boost>

Artificially boost the EV of an action during the computation. Exploitability is still computed using the real EVs. Using small EV boosts (positive or negative) can be used to create exploitative strategies that are still reasonably balanced and difficult to exploit in practice. In this example, set_ev_boost is used to control flop CBet percentage. We can see that at set_ev_boost r:0:b94 -0.3 CBet % goes to 0. This animation shows an example of how a check-raise strategy changes. Most noticeably top and mid sets get fast-played.

Note that currently board cards in node-id are ignored, so r:0:c:c:3d:b123 affects all turns, not just the trey of diamonds.

set_hand_type_order <highcard pair twopair trips straight flush fullhouse quads straightflush> (in any order)

e.g. for short deck (6+) holdem, add these two commands on the top of the script:

set_low_card 6
set_hand_type_order highcard pair twopair straight trips fullhouse flush quads straightflush

set_info_freq <iterations>

Set the SOLVER: message interval, default 25.

set_isomorphism <turn> <river>

Enable or disable (0 | 1) turn/river suit isomorphisms (never needed really).

set_low_card <card>

card		the rank of the lowest card in the deck [2..6], default 2 obv

Should be called before set_board and set_range when building a tree.

set_must_use_hole_cards <n>

n		the number of hole cards that must be used to make a poker hand (0 = texas holdem, 1 = ?, 2 = greek holdem)

set_pot 0 0 <pot>

Set the starting pot (only the third value is used).

set_precision <precision>

precision	[-2..2], default 0

Adjusting precision may improve performance and/or reduce memory usage depending on the tree and the target exploitability. Should not be needed if adaptive precision is enabled (default).

set_prefetch_mode <mode>

mode		[0..2], default 2

Should not be changed unless it happens to improve performance for some reason.

set_rake <fraction> <cap>

(implemented since build 1068)

Example: set_rake 0.05 3 sets rake to 5% with a 3-chip cap.

set_range <position> <range>

range		1326 values [0..1]

set_recalc_accuracy <flop> <turn> <river>

Set solve_partial accuracy.

set_scheduler

deprecated

set_simd_level <level>

level		maximum number of parallel evals to use [1..8], default 8

Smaller values may improve performance on older hardware.

set_strategy <node-id> <childnum> <strategy>

childnum    index of action [0..num_actions-1]
strategy    1326 values [0..1]

Set the strategy of an action. The strategy of each action should be set and the values should add up to 1.

set_threads <n>

Set the number of threads used by the solver. Defaults to one per logical processor.

set_value <variable> <value>

Set value of a variable.

Example:

set_value test 123
set_value ok!
echo $test
123
verify_value test 124 0.5
ERROR: verify_value unexpected value

show_all_lines

Show all betting lines without board cards in node-id format.

show_categories <board>

Show category ids for each pair of holecards on the given board, first line for made hands, second line for draws

show_category_names

Show category names.

show_children <node-id>

show_cpu_info

Show CPU vendor, name and list of supported features.

show_effective_stack

Show effective stacks at the root of the tree.

show_hand_order

Return the hand order used by the solver.

show_locked_combos <node-id>

show_memory

Show total and available physical memory.

show_node <node-id>

show_probs <node-id>

Show both players' probabilities of reaching a node and probabilities of possible actions.

show_range <position> [node-id]

show_range_grid <position>

Show ASCII range visualization.

show_range_grid IP

  A  K  Q  J  T  9  8  7  6  5  4  3  2
A 25 .. .. ** ** ** ** ** ** ** ** ** **
K .. .. ** ** ** ** ** ** ** ** ** ** **
Q ** ** .. ** ** ** ** ** ** ** ** ** **
J ** ** ** .. ** ** ** ** ** .. .. .. ..
T ** ** ** ** .. ** ** ** ** .. .. .. ..
9 ** ** ** ** ** ** ** ** ** 50 .. .. ..
8 ** .. .. .. .. ** ** ** ** 50 .. .. ..
7 .. .. .. .. .. .. .. ** ** ** 50 .. ..
6 .. .. .. .. .. .. .. .. ** ** ** 50 ..
5 .. .. .. .. .. .. .. .. .. ** ** 50 ..
4 .. .. .. .. .. .. .. .. .. .. ** ** ..
3 .. .. .. .. .. .. .. .. .. .. .. ** ..
2 .. .. .. .. .. .. .. .. .. .. .. .. **
END

show_settings

Returns an empty list.

show_stats [epsilon] [position]

epsilon     reach and strategy probabilities lower than this value are treated as 0 (default 0)

Show interesting numbers.

Example:

show_stats 0.0001
epsilon 0.0001 (0.01%) | OOP+IP
                    stat         flop         turn        river        total
          decision nodes           10         1862       188160       190032
     canonical decisions           10         1368       114320       115698
       infosets/decision        344.5      330.439       316.67      316.807
                infosets         3445       615277     59584720     60203442
         infoset-actions         8957      1392469    128107148    129508574
      reachable infosets        66.1%        46.4%        39.5%        39.5%
         pure strategies        67.2%        71.5%        74.6%        74.6%
   reachable pure strats        54.4%        54.3%        59.2%        59.1%
    weighted pure strats        51.8%        53.4%        56.9%        56.8%
END

show_strategy <node-id>

show_strategy_pp <node-id>

show_tree_info

Show lines added with add_info_line.

show_tree_params

skip_if_done <filename> <label>

Jump forward to label: in script if file exists.

sleep <duration>

duration	milliseconds to sleep

solve_all_splits <turns | rivers>

Solve forgotten and rebuilt (rebuild_all) streets again. May take a long time.

solve_partial <node-id>

Solve forgotten subtree.

solver_time

Return the time since the current solver instance started in seconds.

spawn <cmdline>

cmdline		child process command line parameters

Spawn a child solver process that exits when parent exits (for testing multiple workers).

stdoutback

Stop redirecting stdout.

stdoutredi <filename>

Redirect stdout to file.

stdoutredi_append <filename>

Append stdout to file.

stop

Stop solver after current iteration is finished.

take_a_break <duration>

Pause the solver for duration seconds.

traverse_subgames

Used internally by master/workers.

unlock_node <node-id>

Unlock strategies of given node.

verify_value <variable> <value> [tolerance]

Verify that value of a variable equals value ± tolerance (default 0).

wait_for_solver

Wait until solver is finished.