#### trangium

##### Member

Batch Solver Tutorial by OreKehStrah

**Introduction**

Before the batch solver, generating algorithms involved inputting each and every case into Cube Explorer, running the search for that one case, testing out the generated algorithms to determine the best one for that case, then repeating the process for all cases in the set. For algorithm sets with 50, 100, or even 500+ cases, this quickly becomes extremely tedious and a huge time commitment. The batch solver automates most of this process. Given a suitable input, it will automatically generate algorithms for every case using the specified move groups and depths, and it will also sort the algorithms, making finding the fastest ones less time-consuming. It also automatically generates images for each case (for supported puzzles).

**Supported Puzzles**

The natively supported puzzles (with pre-loaded puzzle definitions) are 3x3, 2x2, Pyraminx, Megaminx, and Skewb. In addition, the batch solver supports any custom puzzle that's non-bandaging and non-commutative. More specifically, any particular move must always affect the pieces in the same location the same way, in addition to the previous requirements. This includes all WCA puzzles except Square-1 and Clock.

**Capabilities**

The batch solver can generate any algorithm set where the ending state is defined by just ignoring the orientation or permutation of certain pieces (separation of pieces is also supported). There are pretty much no restrictions on the starting state.

To illustrate an example output, here is the batch solver's generated algs for OCLL:

**History**

Source Code

May 10, 2020 - The start of what would eventually become the Batch Solver. I named it TORCS (Trangium's Other Replacement Cube Solver) because I originally intended for this to be similar to HARCS. At this point, all the program could do was solve a predetermined set of pieces on the 3x3x3 (e.g. X-Cross).

October 11, 2020 - Subsolver created - Short for "Subgroup Solver". I added the ability to only use a certain subgroup of moves when searching (e.g. only finding <RUF> solutions). This is actually still on my website. I also pretty drastically changed the structure of my code (for admittedly minor performance optimizations).

November 26, 2020 - MCC created - This would allow me to automatically rank the algorithms by how fast they could be executed. Although the ranking is far from perfect, it's at least better at sorting cases than merely STM.

May 27, 2021 - Algdesk created - I now implemented the Puzzle field, Unique Orientations & Equivalences field, and Scramble field, so at this point I basically had an early version of the batch solver except without batch solving - it could only solve one case at a time. Also, I drastically changed the structure of my code AGAIN, pretty much reverting it back to how it was before October 2020. Oh well.

July 22, 2021 - Batch solver created - The core functionality of the batch solver, i.e. generating algs for an entire algset at once, was done. However, there were a lot of smaller things (such as bugs, images, bugs, sorting, bugs, bugs, input sanitization, bugs, statistics, bugs, and did I forget to mention,

*bugs*?) that I had to iron out.

May 8, 2022 - Video tutorial released (thanks OreKehStrah!) and batch solver (pretty much) finished. What a journey.