CrossPetrus
Member
Okay, so I’ve noticed a lot of people don’t really know how to use batch solver, nor where to find the resources to learn. That is what this is for.
What is batch solver?
Batch solver is a program that takes inputs that tell it what states need to be solved, and then…solves them. It is great for generating large alg sets because you don’t have to give it every state, but parameters that define the whole group of states. Now let’s get into how to use batch solver.
The input
There are 5 inputs you need to learn to use batch solver: Unique Orientations and Equivalencies, Prune, Search, Subgroup, and Scramble. Let’s start with Unique Orientations and Equivalencies.
Unique Orientations and Equivalencies
These tell your solver what actually needs to be solved. For example, let’s say we are generating oll. What needs to be solved is the orientation of the pieces. This means that their permutation doesn’t matter. So, we tell the solver that these pieces are equivalent (Note, you need to know the naming system of identifying pieces, which should be on Athefre’s website iirc). To do this, you put the pieces that are equivalent in curly braces (separated by spaces) {}. For oll, this would be {UF UL UR UB}. That’s equivalencies, but there’s also orientation. You can tell batch solver that the orientation of the pieces doesn’t matter. You do this by placing 1: and then the pieces whose orientation should be ignored. This wouldn’t apply for oll, but just as an example I’ll use ZBLS. It would have 1: UFR UFL UBR UBL (and {UF UL UR UB} {UFR UFL UBR UBL}). There are more advanced things you can do with this, but this should cover 99.99% of the alg sets you’d probably want to generate.
Prune and Search
I’ll cover these together. Prune basically just tells batch solver to store all states up to n moves away from being solved*. N is the number you put in. However, you can also put in the number of states (like 6m, or 5k), and batch solver will determine the largest prune value, n, that gives a number of states n moves away from being solved* where the number of states is less then or equal to your input. Search tells batch solver how long the solution can be (not directly, though). Basically, if you’re genning an algset and a case can’t be solved, then you need to up the search. The inputs you will need to put in will depend on the algset and your device, so I’d suggest just experimenting with finding good values that work for your device.
Subgroup
This one is easy. The subgroup is the moveset that the solver can use to solve the cases. You would just put in the moveset you want. Now, the more moves you input, the longer it will take to solve each case, so don’t just spam R U F L D M r S trying to get the best algs. And maybe you saw the asterisk earlier, and basically it’s supposed to be “solved with the moves of the given subgroup”. For oll, I would probably just put in R U F D as a baseline (you can always generate individual cases with a different moveset afterward).
Scramble
This tells the solver what to do to get to the given states needed to be solved. This will require you to think about how to get to the state. Let’s do some examples:
For oll, you need to have the corners to be in all possible orientations. We can use Sune (R U R’ U R U2 R’), plus U moves for this. We also need a way to get all possible edge orientations, which we can use any alg that effects eo for this. I’ll use F R U R’ U’ F’+ U moves. Now, we can tell the solver to do all possible combinations of these by putting them in <> and separating them with commas. So oll would look like this: <R U R’ U R U2 R’, U, F R U R’ U’ F’>
Now, you can also tell the solver to do this or that by putting algs of which it should do all possible combinations of the scramble, but with one of the algs in [ ]. Finally, the scramble reads left to right, so make sure you put things in the right order.
Output
At the bottom of the webpage, it will have a section labeled ‘sort algs by’. This basically is how it ranks candidate algs into best, second best, et cetera. I suggest using MCC. You can also have a secondary metric, which I like to use STM for. Then, at the very bottom it will have the statistics, which are pretty self explanatory. You press start search to start, and when it’s over you can press export output-> download-> and then upload the download to google sheets if you want it in a google sheet.
Additional Notes
You can also look at https://docs.google.com/document/d/16Q3wUisvyfMSqf8aOuKNjqeafrcqkQh5n-tazwUVMD0/edit?usp=drivesdk
and
If you ever have questions or need help with batch solver, feel free to post here, and I should respond within the day at most (unless after 11:30 est). If you ever want me to generate an algset for you, I’d be happy to, you can just dm me.
Hope this isn’t super confusing,
-CrossPetrus
What is batch solver?
Batch solver is a program that takes inputs that tell it what states need to be solved, and then…solves them. It is great for generating large alg sets because you don’t have to give it every state, but parameters that define the whole group of states. Now let’s get into how to use batch solver.
The input
There are 5 inputs you need to learn to use batch solver: Unique Orientations and Equivalencies, Prune, Search, Subgroup, and Scramble. Let’s start with Unique Orientations and Equivalencies.
Unique Orientations and Equivalencies
These tell your solver what actually needs to be solved. For example, let’s say we are generating oll. What needs to be solved is the orientation of the pieces. This means that their permutation doesn’t matter. So, we tell the solver that these pieces are equivalent (Note, you need to know the naming system of identifying pieces, which should be on Athefre’s website iirc). To do this, you put the pieces that are equivalent in curly braces (separated by spaces) {}. For oll, this would be {UF UL UR UB}. That’s equivalencies, but there’s also orientation. You can tell batch solver that the orientation of the pieces doesn’t matter. You do this by placing 1: and then the pieces whose orientation should be ignored. This wouldn’t apply for oll, but just as an example I’ll use ZBLS. It would have 1: UFR UFL UBR UBL (and {UF UL UR UB} {UFR UFL UBR UBL}). There are more advanced things you can do with this, but this should cover 99.99% of the alg sets you’d probably want to generate.
Prune and Search
I’ll cover these together. Prune basically just tells batch solver to store all states up to n moves away from being solved*. N is the number you put in. However, you can also put in the number of states (like 6m, or 5k), and batch solver will determine the largest prune value, n, that gives a number of states n moves away from being solved* where the number of states is less then or equal to your input. Search tells batch solver how long the solution can be (not directly, though). Basically, if you’re genning an algset and a case can’t be solved, then you need to up the search. The inputs you will need to put in will depend on the algset and your device, so I’d suggest just experimenting with finding good values that work for your device.
Subgroup
This one is easy. The subgroup is the moveset that the solver can use to solve the cases. You would just put in the moveset you want. Now, the more moves you input, the longer it will take to solve each case, so don’t just spam R U F L D M r S trying to get the best algs. And maybe you saw the asterisk earlier, and basically it’s supposed to be “solved with the moves of the given subgroup”. For oll, I would probably just put in R U F D as a baseline (you can always generate individual cases with a different moveset afterward).
Scramble
This tells the solver what to do to get to the given states needed to be solved. This will require you to think about how to get to the state. Let’s do some examples:
For oll, you need to have the corners to be in all possible orientations. We can use Sune (R U R’ U R U2 R’), plus U moves for this. We also need a way to get all possible edge orientations, which we can use any alg that effects eo for this. I’ll use F R U R’ U’ F’+ U moves. Now, we can tell the solver to do all possible combinations of these by putting them in <> and separating them with commas. So oll would look like this: <R U R’ U R U2 R’, U, F R U R’ U’ F’>
Now, you can also tell the solver to do this or that by putting algs of which it should do all possible combinations of the scramble, but with one of the algs in [ ]. Finally, the scramble reads left to right, so make sure you put things in the right order.
Output
At the bottom of the webpage, it will have a section labeled ‘sort algs by’. This basically is how it ranks candidate algs into best, second best, et cetera. I suggest using MCC. You can also have a secondary metric, which I like to use STM for. Then, at the very bottom it will have the statistics, which are pretty self explanatory. You press start search to start, and when it’s over you can press export output-> download-> and then upload the download to google sheets if you want it in a google sheet.
Additional Notes
You can also look at https://docs.google.com/document/d/16Q3wUisvyfMSqf8aOuKNjqeafrcqkQh5n-tazwUVMD0/edit?usp=drivesdk
and
Hope this isn’t super confusing,
-CrossPetrus
