Changes in UPI 2 -> 3
New in 3.0
3.0 UPI provides no breaking changes to the UPI. Any code working with the 2.0 solver should mostly work with the 3.0 solver with minor exceptions.
The new functionality in the 3.0 are display suits isomorphisms (controlled by set_display_iso etc.), EV incentives and fast loads.
Fast loads in 3.0
The 3.0 solver has an option to load saves in fast mode, which means that the solver lazily reads data from the disk as needed making the basic operations (load_tree, calc_ev etc. ) very fast even on large saves. However that comes at the price that some functionality doesn't work without explicitely loading the full tree.
If your workflow depends on this functionality you have to either load tree with full
argument or call load_all_nodes
before performing those operations.
Breaking changes in UPI 1.10 -> 2
Overview
Listed below are changes that could break existing client code and not all changes between 1.x and 2.x.
End strings
PioSolver 2.x+ behavior
The client is expected to call set_end_string
at the start of
communication and then output from all commands will end with specified END string.
If the set_end_string
command is not called then END string is never shown.
> set_end_string END
set_end_string ok!
END
> is_ready
is_ready ok!
END
PioSolver 1.x behavior
Some commands are single line (the result is always a single line) and some are multi-line (the result is many lines terminated with END).
> is_ready
is_ready ok!
> calc_results
EV OOP: 132.353
EV IP: 47.647
OOP's MES: 331.413
IP's MES: 247.089
Exploitable for: 199.251
END
set_strategy
PioSolver 2.x behavior
set_strategy
takes as an argument N * 1326 floats where N is the number of children and each block of 1326 numbers denotes strategy for subsequent child.
set_strategy r:0 <1326 floats> <1326 floats> <1326 floats>
PioSolver 1.x behavior
In PioSolver 1.x the client is required to call set_strategy N times each time with 1+1326 arguments, where the first argument was an index of a child node and following 1326 floats were strategy.
set_strategy r:0 0 <1326 floats>
set_strategy r:0 1 <1326 floats>
set_strategy r:0 2 <1326 floats>
set_board, show_categories
PioSolver 2.x behavior
All commands which expect board as an argument require that cards are not separated by space.
> set_board AcAdAh
set_board ok!
END
> set_board Ac Ad Ah
ERROR: set_board incorrect or missing argument
END
> show_categories Qc8c7d
<numbers>
<numbers>
END
> show_categories Ac Ad Ah
ERROR: show_categories incorrect or missing argument
END
PioSolver 1.x behavior
set_board
and show_categories
expect board as N separated cards.
> set_board Ac Ad Ah
set_board ok!
> set_board AcAdAh
ERROR: set_board incorrect or missing argument
> show_categories Ac Ad Ah
<numbers>
<numbers>
END
> show_categories AcAdAh
ERROR: show_categories incorrect or missing argument