# The Batch Solver - Generate large algorithm sets automatically!



## trangium (May 12, 2022)

The Batch Solver

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.


----------



## Athefre (May 12, 2022)

I highly recommend this program. All of APB, ACMLL, and some Nautilus algorithm sets were generated using the batch solver. It made the development process so much easier.

Something that isn't mentioned is that this program is also good for testing. If you have an idea, you can try various movesets then generate the algset and see if the algorithms are good. I used this to create the EO+RB analysis that I posted some time ago that compared standard Petrus with APB, Mehta, and a few others.


----------



## IsThatA4x4 (May 22, 2022)

Does the batch solver work on mobile? Also, is there a requirement for system memory because last time I tried to generate some PLLs (for fun to test it out), chrome apparently "ran out of memory".
Edit: on mobile (safari), the page reloads after about 30 seconds of searching depth 9.
Edit edit: It was because prune value, after watching the tutorial I understand it much better thank you!


----------



## trangium (May 24, 2022)

IsThatA4x4 said:


> Does the batch solver work on mobile? Also, is there a requirement for system memory because last time I tried to generate some PLLs (for fun to test it out), chrome apparently "ran out of memory".
> Edit: on mobile (safari), the page reloads after about 30 seconds of searching depth 9.
> Edit edit: It was because prune value, after watching the tutorial I understand it much better thank you!


It should work on pretty much all mobile browsers (though the only mobile browser I've tested is Safari).

The amount of system memory that is required depends on the prune value you use. For mid-range devices, I recommend these prune values for 3x3:
2-gen: 9/10
3-gen: 6/7
4-gen: 5/6
5-gen or higher: 4/5
If you have a higher-end computer, you may be able to get away with increasing these by up to ~25%. Because the amount of memory required grows exponentially in the depth, increasing it much beyond that is almost certainly going to result in a memory error.


----------



## OtterCuber (May 24, 2022)

A monumental achievement that will change cubing forever.


----------



## abunickabhi (May 24, 2022)

This is super good piece of software. I would love to use it to get lot of alternatives for the 5-style algs that I am generating!

Good work @trangium


----------



## Silky (May 27, 2022)

Amazing job on the tutorial. SUPER clear. I've been genning algs for the last few days (mostly for fun). Any advice for finding a balance between Batch and Cube Explorer? I definitely still find better algs using the later (not by anything insane of course). Seems the Cube Explorer is good for 5+ Gen algs and batch is better for 3-4 Gen algs. Usually just run cube explorer algs through MCC afterwards.


----------



## OreKehStrah (May 27, 2022)

Silky said:


> Amazing job on the tutorial. SUPER clear. I've been genning algs for the last few days (mostly for fun). Any advice for finding a balance between Batch and Cube Explorer? I definitely still find better algs using the later (not by anything insane of course). Seems the Cube Explorer is good for 5+ Gen algs and batch is better for 3-4 Gen algs. Usually just run cube explorer algs through MCC afterwards.


Typically I'll use the batch solver first, and then manually check any cases that stand out as being particularly subpar with CE.


----------



## trangium (May 28, 2022)

Silky said:


> Amazing job on the tutorial. SUPER clear. I've been genning algs for the last few days (mostly for fun). Any advice for finding a balance between Batch and Cube Explorer? I definitely still find better algs using the later (not by anything insane of course). Seems the Cube Explorer is good for 5+ Gen algs and batch is better for 3-4 Gen algs. Usually just run cube explorer algs through MCC afterwards.


Usually, if I only have to generate a few cases, I'll use Cube Explorer, but if it's a substantial number (20+) I'll use batch solver. Also, cube explorer is much faster for 4-6 gen subgroups with no wide or slice moves, and batch solver is significantly faster when slices are involved and is the only option when wide moves are involved.


----------



## Silky (May 29, 2022)

What I've been doing is genning first by MMC and then by STM. Afterwards I run the STM batch through MCC and usually get 1-2 better algs. I've been regenning SLS, GLS, and EZD; I should be posting that in a few days.


----------



## OreKehStrah (May 29, 2022)

Silky said:


> What I've been doing is genning first by MMC and then by STM. Afterwards I run the STM batch through MCC and usually get 1-2 better algs. I've been regenning SLS, GLS, and EZD; I should be posting that in a few days.


You can have the batch solver sort by STM as the primary metric and then by MCC as the secondary. This will rank the algs at each movecount so you can then decide for yourself if a lower movecount alg is better or not.


----------



## IsThatA4x4 (Jun 6, 2022)

Is there any way to set equivalence by permutation _only? _
E.g. Solving CPLS
If not, consider adding it, it would definitely be appreciated!


----------



## trangium (Jun 6, 2022)

IsThatA4x4 said:


> Is there any way to set equivalence by permutation _only? _
> E.g. Solving CPLS
> If not, consider adding it, it would definitely be appreciated!


There is! Just put *1:* before the set of pieces where orientation doesn't matter, but don't put any curly braces around them.


Spoiler: CPLS



1: UFR UFL UBL UBR
{UF UL UB UR}


----------



## Silky (Jun 6, 2022)

trangium said:


> There is! Just put *1:* before the set of pieces where orientation doesn't matter, but don't put any curly braces around them.
> 
> 
> Spoiler: CPLS
> ...


Is there any way to separate pieces to layers, disregarding permutation? Aka Square-1 EO


----------



## Filipe Teixeira (Jun 8, 2022)

how can I make it stop searching after finding a few algs?


----------



## Silky (Jun 8, 2022)

Filipe Teixeira said:


> how can I make it stop searching after finding a few algs?


[END SEARCH]


----------



## trangium (Jun 9, 2022)

Silky said:


> Is there any way to separate pieces to layers, disregarding permutation? Aka Square-1 EO


Yep! Just put the set of pieces that are separated in separate curly braces. For example, on 3x3, {UF UL UB UR} {UFR UFL UBL UBR} {DF DL DB DR} {DFR DFL DBL DBR} separates the U/D pieces to their layers.


----------



## IsThatA4x4 (Jun 19, 2022)

I have some requests which I don't know if you're working on them, but could be very beneficial regardless. If any of these are already things, I would love to know how to do them.

1. When generating the output, it would probably be much nicer to have the output table expand both horizontally and vertically, as opposed to just horizontally. You could add options like "# of columns / rows in output table". Currently this is quite an issue for large sets like ZBLL (/PHLL/HPLL if we're doing that), or 1LLL.

2. An option to hide failed cases? That way the empty box doesn't clog up the output, making it harder to find the cases that didn't fail

3. Font size for output. If we have image size, font size could also be a good option to add.

4. Ability to use a group of moves as part of a subset.
This basically means you could put <F R U R' U' F', R' F R F'> into the subset box, and it would solve with only sexy moves and sledgehammers. If this already exists, I don't know how to do it.

5. Relatively small, but an option to display the case probability next to the image. A minor thing but it could help some people.


----------



## mk8 (Jun 30, 2022)

how can i do cube rotations? i know y is like U and D' at the same time, x is like R and L' at the same time and z is like F and B' at the same time. for each, i can copy the clockwise move (U, R and F) from the already written definiton, but i'm not sure how i would define the counter-clockwise move. can somebody explain?


----------



## Silky (Jun 30, 2022)

@trangium Any idea how you'd set up OL5C for SSC? I tried setting it up as (1) <R, D R D' R D R2 D'>R U D2 and (2) <U, R U R' U R U2 R'>R U D2. Gotten some weird results. Feel like I'm missing something but can't quite tell what it is. Thinking it has to do with the UBL corner.


----------



## OreKehStrah (Jul 1, 2022)

Silky said:


> @trangium Any idea how you'd set up OL5C for SSC? I tried setting it up as (1) <R, D R D' R D R2 D'>R U D2 and (2) <U, R U R' U R U2 R'>R U D2. Gotten some weird results. Feel like I'm missing something but can't quite tell what it is. Thinking it has to do with the UBL corner.



What pieces need to be preserved and which don't? and is the L5CO the 4 U corners+DFR?


----------



## OreKehStrah (Jul 1, 2022)

mk8 said:


> how can i do cube rotations? i know y is like U and D' at the same time, x is like R and L' at the same time and z is like F and B' at the same time. for each, i can copy the clockwise move (U, R and F) from the already written definiton, but i'm not sure how i would define the counter-clockwise move. can somebody explain?


Sure!

You can take the existing definition and combine them to make rotations. Keep in mind you have to also include slices. For the prime moves, take the definition of the move, then simply reverse the order of the pieces. If you look at the definition, you see that the order of the pieces in each bracket set is the order that the pieces move. So { UF UL UB UR } is how the edges cycle in U, so if you want U' you reverse it: { UF UR UB UL }.

I went ahead and created and tested y for you so you can see how to make the other two from the existing definitions. For the slices, leave the second half as it was written.

y is U + D' + E'

y: (UF UL UB UR) (UFR UFL UBL UBR) (DF DL DB DR) (DFR DFL DBL DBR) (FR+1 FL+1 BL+1 BR+1) (RL FB+1 RL+1)

If you need more help just let me know!


----------



## Silky (Jul 1, 2022)

OreKehStrah said:


> What pieces need to be preserved and which don't? and is the L5CO the 4 U corners+DFR?


Get a solved cube and preform R U D2. This is doing to be the set up for the alg. There is an 2 oriented E-Slice edges in FL BL and WV pair in UFL ( psuedo pair so any U/D corient oriented accordingly )and a psuedo triplet in LD. The psuedo-triplet has the DFR corner oriented counter clockwise and DBR clockwise ( again do the setup to see what it looks like ). Corner permutation doesn't matter nor non-E-slice edges. The alg will orient UBL UBR UFR DFR DBR such that it will be off a U/D R move. Think of it as a conjugated winter variation. Original OL5C algs here.


----------



## trangium (Jul 1, 2022)

Silky said:


> @trangium Any idea how you'd set up OL5C for SSC? I tried setting it up as (1) <R, D R D' R D R2 D'>R U D2 and (2) <U, R U R' U R U2 R'>R U D2. Gotten some weird results. Feel like I'm missing something but can't quite tell what it is. Thinking it has to do with the UBL corner.


Try R U D2 <R, U R U'>.


----------



## Silky (Jul 1, 2022)

trangium said:


> Try R U D2 <R, U R U'>.


Awesome, works. Could you explain how this works? What does putting something before <x,y,z> do vs putting it after <x,y,z> ?


----------



## ruffleduck (Jul 1, 2022)

Silky said:


> Awesome, works. Could you explain how this works? What does putting something before <x,y,z> do vs putting it after <x,y,z> ?


The moves are applied before the combinations from the generator <x,y,z>

Basic example:
`U <R>` would generate the 4 states reached by (U), (U R), (U R2), (U R')
`<R> U` would generate the 4 states reached by (U), (R U), (R2 U), (R' U)


----------



## Melkor (Jul 10, 2022)

Silky said:


> Awesome, works. Could you explain how this works? What does putting something before <x,y,z> do vs putting it after <x,y,z> ?


Moves placed before and after the generator are applied before and after, respectively, the generator moves for each case. So this example performs R U D2 before applying R, U R U', R U R U', R2 U R U' R', etc.


----------



## mk8 (Jul 18, 2022)

suggestion: generators (i mean <these>) inside generators. idk how complex this would be, but it would be really cool. sorry if this is too much of a requirement. this program is awesome btw <3


----------



## OreKehStrah (Jul 18, 2022)

mk8 said:


> suggestion: generators (i mean <these>) inside generators. idk how complex this would be, but it would be really cool. sorry if this is too much of a requirement. this program is awesome btw <3


Just chain them. < set 1 > < set 2 > or is there something you found that this won’t work for?


----------



## ruffleduck (Jul 18, 2022)

mk8 said:


> suggestion: generators (i mean <these>) inside generators. idk how complex this would be, but it would be really cool. sorry if this is too much of a requirement. this program is awesome btw <3


Nested generators can always be expanded with the same effect. <<x, y, z>, a, b, c> = <x, y, z, a, b, c>


----------



## mk8 (Jul 19, 2022)

zzoomer said:


> Nested generators can always be expanded with the same effect. <<x, y, z>, a, b, c> = <x, y, z, a, b, c>


oh ok, but what if i wanted to do 
<a, b <x, y, z> c, d>?
(note that there are no commas between b <x, y, z> c)
but havent thought about a workaround like this, so thanks a lot!


----------



## mk8 (Jul 19, 2022)

sorry for double posting, but this post has abslutely nothing to do with the old one

i would like to ask how orientation is defined for the batch solver? if i needed all the corners to point up/down with U/D color (but have them permuted randomly), would that just be
`{UFR UFL UBR UBL ...}`
or
`1:UFR UFL UBR UBL ...`
as the equivalence or something completely different?
(the corners dont need to be in their correct layers, just facing U/D with U/D color)


----------



## IsThatA4x4 (Jul 19, 2022)

mk8 said:


> sorry for double posting, but this post has abslutely nothing to do with the old one
> 
> i would like to ask how orientation is defined for the batch solver? if i needed all the corners to point up/down with U/D color (but have them permuted randomly), would that just be
> `{UFR UFL UBR UBL ...}`
> ...


If you wanted U/D to face U/D, then you would put every corner in the curly braces {}

1:{}= don't care about permutation or orientation
1: = don't care about orientation, do care about permutation

For your case you were correct, to have U/D corners facing U/D, you would use {UFR UFL UBR UBL DFR DFL DBL DBR}
If, say, you DID want them on the correct layers, you would use
{UFR UFL UBR UBL}
{DFR DFL DBR DBL}


----------



## mk8 (Jul 19, 2022)

why nested generators would be useful:
im making a guimond-style separation+permutaton of corners on both layers which preserves the E slice, so its basically <R2 U D> gen. however, when solving, at this point when the algset is applied, the E slice (and CO ofc) will already be solved, so i would like to filter out the algs that have the right side of the E slice flipped by 180°. however, i can't put R2 as the setup move since i need U, D as the setup moves. one way to do this would be with nested gens, e. g. <U, D, R2 <U, D> R2>, but that is not really possible as of now (or is it?). or is there a better way to do this?

EDIT: for now i did it by manually typing out all the combinations of R2 <U, D> R2 (luckily theres just a few of them) but for future situations, it would be nice to have something like this implemented. tysm


----------



## kubesolver (Jul 19, 2022)

mk8 said:


> and another thing, this is pretty concrete but how could i make the a move from a generator be always executed an even number of times?
> im making a guimond-style separation+permutaton of corners on both layers which preserves the E slice, so its basically <R2 U D> gen. however, when solving, at this point when the algset is applied, the E slice (and CO ofc) will already be solved, so i would like to filter out the algs that have the right side of the E slice flipped by 180°. however, i can't put R2 as the setup moves since i need U, D as the setup moves. one way to do this would be what i asked above, e. g. <U, D, R2 <U, D> R2>, but that is not really possible as of now (or is it?). or is there a better way
> 
> EDIT: for now i did it by manually typing out all the combinations of R2 <U, D> R2 (luckily theres just a few of them) but for future situations, it would be nice to have something like this implemented. tysm


"all the combination" There are only 2 combinations needed
R2 U R2 and R2 D R2


----------



## mk8 (Jul 19, 2022)

kubesolver said:


> "all the combination" There are only 2 combinations needed
> R2 U R2 and R2 D R2


thinking about it you're probably right, my brain is just too slow right now to evaluate it

EDIT: bruh ur right. still tho, there could be a situation (i dont think i can come up with one rn) where this nesting would be needed, or?
sorry i currently dont possess the ability to perform mind operations more complicated than mashing a keyboard (lol), feel free to tell me im a dumbass (but please explain why i do wanna learn)


----------



## kubesolver (Jul 19, 2022)

> thinking about it you're probably right, my brain is just too slow right now to evaluate 
it's fairly simple: 
any R2 <U, D> R2 sequence can be decomposed like this:
R2 U' R2 = (R2 U R2)3 and R2 *U D* R2 = R2 *U* R2 R2* D* R2


----------



## mk8 (Jul 19, 2022)

also sorry for posting in this thread so much, but as @IsThatA4x4 said, being able to adjust the table size would be nice (maybe a dropdown to choose to set the width or height and a number box for the value ig) and the visualisation option to show both top and bottom layers (like top view, but for both) would be cool. im genning an algset that permutes pieces in both layers (U and D) at once and having to regen it all twice to get both the top & bottom views takes reeeeally long


----------



## trangium (Jul 19, 2022)

mk8 said:


> also sorry for posting in this thread so much, but as @IsThatA4x4 said, being able to adjust the table size would be nice (maybe a dropdown to choose to set the width or height and a number box for the value ig) and the visualisation option to show both top and bottom layers (like top view, but for both) would be cool. im genning an algset that permutes pieces in both layers (U and D) at once and having to regen it all twice to get both the top & bottom views takes reeeeally long


Workaround for now: To quickly generate images without waiting to generate algs again, set all the prune and search to 1, keeping everything else the same.


----------



## mk8 (Jul 20, 2022)

so i wanted to make a sort of a PBL step for the 3x3, where CO is done and the E slice needs to be preserved. this is what i put as the scramble:

```
<U, D,
R U R' F' R U R' U' R' F R2 U' R', --J perm
R' U R' F' R U R' U' R' F R2 U' R' U R2, --J perm on D
F R U' R' U' R U R' F' R U R' U' R' F R F', --Y perm
L2 R2 F R U' R' U' R U R' F' R U R' U' R' F R F' R2 L2 --Y perm on D
>
```
there should be only 8 cases, but the program somehow got 172. i didnt check them all out sice i didnt want to run it for this long. what could the problem be? (M and S slice edges are equivalent and dont need to be oriented. CO is done and every corner is in the correct layer. E slice is done. at the end of the alg all pieces except the M and S slice should be solved)

EDIT: oh and the algs are <R, U, D, F> gen, prune is 4 and search is 8, pre- and post- adjust are both <U, D>


----------



## IsThatA4x4 (Jul 20, 2022)

mk8 said:


> so i wanted to make a sort of a PBL step for the 3x3, where CO is done and the E slice needs to be preserved. this is what i put as the scramble:
> 
> ```
> <U, D,
> ...


What exactly did you put in the orientations and equivalences box?


----------



## mk8 (Jul 20, 2022)

IsThatA4x4 said:


> What exactly did you put in the orientations and equivalences box?


1:{UF UB UR UL DF DB DR DL}


----------



## mk8 (Jul 20, 2022)

welp i again fixed it myself with using z2, but i would still like to know what the problem was and how to fix it


----------



## OreKehStrah (Jul 20, 2022)

mk8 said:


> 1:{UF UB UR UL DF DB DR DL}


That is the problem. Remove the 1: because that tells the solver those pieces are equivalent and the orientation doesn’t matter.
Edit: misread because I am dumb. Disregard this lol.


----------



## mk8 (Jul 21, 2022)

guess whos here with more annoying questions

this is partly kind of a puzzle theory question, but its related to the batch solver:
whats a subset of moves/sequences (for the scramble) that 1. doesnt break EO 2. preserves the E slice and 3. preserves all the corners? im making an algset that permutes edges of the M and S slices after EO (corners and E slice have already been done), but i cant get the program to give me all the cases. i only use M2 and S2 so i dont break EO, but that only gives line, cross or checkerboard on top/bottom, and i have found (by playing with the cube) cases when there are 3 D edges on U. is this even possible? (kociemba cube solvers have given me pretty long <R U F B L D> solutions to these when i manually entered them in, so im not sure if i can manage this with only <M U D>, maybe <M U D R> or <M U D S>?)

an alternative i could do earlier in the solve is to solve DR and DL together with CP, and then only do regular L6E instead of L8E. but i cant figure out a move subset that preserves the belt and CO, but breaks CP and EO on M and S. any help would be very cool


----------



## ruffleduck (Jul 21, 2022)

mk8 said:


> guess whos here with more annoying questions
> 
> this is partly kind of a puzzle theory question, but its related to the batch solver:
> whats a subset of moves/sequences (for the scramble) that 1. doesnt break EO 2. preserves the E slice and 3. preserves all the corners? im making an algset that permutes edges of the M and S slices after EO (corners and E slice have already been done), but i cant get the program to give me all the cases. i only use M2 and S2 so i dont break EO, but that only gives line, cross or checkerboard on top/bottom, and i have found (by playing with the cube) cases when there are 3 D edges on U. is this even possible? (kociemba cube solvers have given me pretty long <R U F B L D> solutions to these when i manually entered them in, so im not sure if i can manage this with only <M U D>, maybe <M U D R> or <M U D S>?)
> ...


<M2, S2, M' U2 M, M U2 M', S' U2 S, S U2 S'> ?


----------



## IsThatA4x4 (Jul 21, 2022)

mk8 said:


> guess whos here with more annoying questions
> 
> this is partly kind of a puzzle theory question, but its related to the batch solver:
> whats a subset of moves/sequences (for the scramble) that 1. doesnt break EO 2. preserves the E slice and 3. preserves all the corners? im making an algset that permutes edges of the M and S slices after EO (corners and E slice have already been done), but i cant get the program to give me all the cases. i only use M2 and S2 so i dont break EO, but that only gives line, cross or checkerboard on top/bottom, and i have found (by playing with the cube) cases when there are 3 D edges on U. is this even possible? (kociemba cube solvers have given me pretty long <R U F B L D> solutions to these when i manually entered them in, so im not sure if i can manage this with only <M U D>, maybe <M U D R> or <M U D S>?)
> ...


<M2, U, D> probably works no?

if not then <M2, U, D, M' U2 M> should definitely work


----------



## mk8 (Jul 22, 2022)

also, an option to filter out all cases under a certain amount of moves (i dont need the solution for M2 in my sheet cuz its kinda obvious) and to hide failed cases would be pretty nice

EDIT: and something that probably doesn't even require that much effort: if a case fails, instead of a "solution" field there would be a "scramble" field with the (shortest) scramble used to achieve that state, so then you could manually check the failed cases in cube explorer instead of running the entire search again


----------



## trangium (Jul 23, 2022)

mk8 said:


> so i wanted to make a sort of a PBL step for the 3x3, where CO is done and the E slice needs to be preserved. this is what i put as the scramble:
> 
> ```
> <U, D,
> ...


I think the problem is your J perm on D algorithm.

You wrote: R' U R' F' R U R' U' R' F R2 U' R' U R2
It should be: R' U R' F' R U R' U' R' F R2 U' R' *U' *R2

Hopefully this fixes your problem.


----------



## Kyoobies (Jul 24, 2022)

Okay I've done what I could but I'm officially stuck and need help. I'm creating an alg set for my master pyraminx stuff, but this is post reduction so I only need a Jing's pyraminx for the puzzle definition (Completely ignoring the top tip center though, and instead solving L4E and face centers). And I did what I could, but when generating the algs it says that there's 131 cases it found. This was before I realized that I actually was messing up and said that the top tip also needs to be solved. Once I fixed that and said that it can be in any position, it actually jumped up to over 500 possible cases somehow.

But accounting for AUF, there should only be about double the amount of algs as L4E- which is 35. Because the rotation of the top centers takes the place of the top tip center, and that only leaves cases where the the bottom center is solved, or cases where the bottom center needs to swap with the front center. I'm assuming 71 cases total since it's double L4E, plus a pure centers flip for 71.

So I'm not sure what I'm doing wrong and I don't know how ignoring some pieces made it more cases instead of less, but I'm guessing I'm doing my definition wrong with the centers or something. If anyone can help that would be awesome, thank you!


----------



## IsThatA4x4 (Jul 24, 2022)

Kyoobies said:


> Okay I've done what I could but I'm officially stuck and need help. I'm creating an alg set for my master pyraminx stuff, but this is post reduction so I only need a Jing's pyraminx for the puzzle definition (Completely ignoring the top tip center though, and instead solving L4E and face centers). And I did what I could, but when generating the algs it says that there's 131 cases it found. This was before I realized that I actually was messing up and said that the top tip also needs to be solved. Once I fixed that and said that it can be in any position, it actually jumped up to over 500 possible cases somehow.
> 
> But accounting for AUF, there should only be about double the amount of algs as L4E- which is 35. Because the rotation of the top centers takes the place of the top tip center, and that only leaves cases where the the bottom center is solved, or cases where the bottom center needs to swap with the front center. I'm assuming 71 cases total since it's double L4E, plus a pure centers flip for 71.
> 
> So I'm not sure what I'm doing wrong and I don't know how ignoring some pieces made it more cases instead of less, but I'm guessing I'm doing my definition wrong with the centers or something. If anyone can help that would be awesome, thank you!  View attachment 20057


Putting 1: without curly braces after specifies that you want pieces to be permuted but not oriented, if you want to completely ignore them 1:{} will do that
I don't know what your alg set is meant to do as you didn't specify it, so I'm only guessing at the issue here


----------



## mk8 (Jul 24, 2022)

ok so this time, im completely lost and dont know what to do

im genning a (sort of) f2l algset, but without the cross, so the pair's edge could be in any of the cross pieces' positions

according to my calculations, (not accounting for advanced cases where either of the pieces is in the wrong slot) this should be 48 more cases than normal (its ehh, but theyre all really short so thats not the problem)

anyway, im not sure what subgroup/scramble should i do. theres just so many inserts & stuff in f2l, so idk which i should include and which are unnecessary. can someone help?

edit: just to clarify, i want to gen standard f2l algs which only affect the single slot

edit2: also if the case number is too big im ok with a short step at the start that reduces the number of cases (such as putting all the E edges into U or putting U/D edges into all cross slots, ...). any ideas would help

edit3: and also, it doesn't have to be the standard f2l approach, im just trying to do f2l minus cross in the fewest moves possible (with a tolerable algcount ofc)


----------



## Kyoobies (Jul 24, 2022)

IsThatA4x4 said:


> Putting 1: without curly braces after specifies that you want pieces to be permuted but not oriented, if you want to completely ignore them 1:{} will do that
> I don't know what your alg set is meant to do as you didn't specify it, so I'm only guessing at the issue here


I did try this initially, along with several minor changes (tip centers and trivial tips can't change permutatio is why). It was actually less cases when I made a mistake and forgot to tell it to ignore the trivial tip that's connected to the tip center. Fixing that and telling it to ignore top tips actually adds more cases despite solving less pieces; and if I remove that and say tips must he solved it goes back to 131.

And what I'm try to do is generate all of l4e for pyraminx, but with the addition of the face centers that a master pyraminx (or jings pyraminx) has. I'm also completely ignoring the U tip center (although on a regular jings pyraminx it's technically impossible to solve edges and centers without solving tip centers).


----------



## Kyoobies (Jul 25, 2022)

I think I figured it out. Jings Pyraminx has an extremely abnormal application of orientation for the face centers. But, it has been done before and I can translate the definition file by hand (thank you twizzle explorer). I don't have time to do it now but I should have all I need so well see how it goes!


----------



## mk8 (Aug 8, 2022)

im tryna gen CMSLL rn (basically CxLL that disregards the M and S slices) and i thought it would be simple, but nope, dumbass me somehow messed up again
D layer corners and E slice are solved (and need to be preserved), i need to solve U layer corners, everything else (U/D edges) is irrelevant

```
Equivalences: 1:{UF UR UB UL DF DR DB DL}
Scramble: <U, R U R' U R U2 R, R U R' F' R U R' U' R' F R2 U' R' U'>     (Us, sunes and jperms)
```
solving R U F gen with prune 5 and search 5 and pre-/post-AUF is U only
instead of the 42 cases i should have gotten i got 20k+, no idea why
help very moch appreciated

edit: ok now its giving the correct cases, all i did was reorder the edges in equivalences. why is this? (i have put the in order M then S , rather than U then D)

also im trying a sort of a eg-1-ish thing, where DFR and DFL are swapped and i need to solve them along with U corners. the scramble i put is

```
R2 F U F' R2 F U' F U F2 <U, R U R' U R U2 R, R U R' F' R U R' U' R' F R2 U' R' U'>
```
everything else same as before
the case number is ridiculously high again
what in the world am i doing wrong?
(R2 F U F' R2 F U' F U F2 swaps DFR and DFL)


----------



## trangium (Aug 8, 2022)

mk8 said:


> im tryna gen CMSLL rn (basically CxLL that disregards the M and S slices) and i thought it would be simple, but nope, dumbass me somehow messed up again
> D layer corners and E slice are solved (and need to be preserved), i need to solve U layer corners, everything else (U/D edges) is irrelevant
> 
> ```
> ...


The issue is probably your Sune algorithm.

You wrote: <U, R U R' U R U2 R, R U R' F' R U R' U' R' F R2 U' R' U'>
Should be: <U, R U R' U R U2 *R'*, R U R' F' R U R' U' R' F R2 U' R' U'>

Hopefully this fixes it!


----------



## Stasios (Sep 18, 2022)

Hi! I am quite new to this and so I don't know exactly how to go about it, and the tutorial hasn't helped much. How do I label the edges on the E layer as non-permutated and non-oriented? Thank you very much, help would be appreciated!


----------



## trangium (Sep 20, 2022)

Stasios said:


> Hi! I am quite new to this and so I don't know exactly how to go about it, and the tutorial hasn't helped much. How do I label the edges on the E layer as non-permutated and non-oriented? Thank you very much, help would be appreciated!


To indicate that the orientation of pieces don't matter, place "1: " at the start of the line.
To indicate that the permutation of pieces don't matter, surround them with curly braces.
The pieces in the E layer are FR, BR, BL, FL.

Putting this together, in unique orientations and equivalences, put 1: {FR BR BL FL}


----------



## trangium (Sep 26, 2022)

I created official documentation of all features of the batch solver. (I actually made it a while ago, but I figured I should post it here.) If you're curious about a more advanced or recent feature not covered in the tutorial, this is where to look. I've added quite a few features since the original post, and the documentation explains them all. (I usually report my development updates in my discord server, but the documentation should always be up-to-date.)


----------



## Burrito (Dec 30, 2022)

Hi, I am trying to gen TSLE algs (for zz, inserts last f2l edge and orients corners) and BatchSOlveer keeeps crashing.

Prune: 17

Subgroup: R, U, D, r, S, M

Scramble: < R U R' U R U2 R', U> R U' R' U2

ANy heel;p[ is appreciated.


----------



## trangium (Dec 30, 2022)

Burrito said:


> Hi, I am trying to gen TSLE algs (for zz, inserts last f2l edge and orients corners) and BatchSOlveer keeeps crashing.
> 
> Prune: 17
> 
> ...


1) Your prune is too high. Try 5 for Prune and 6 for Search. This will generate algs up to length 11 (because 5+6=11), and it won't crash your computer.

2) Your current scramble generates WV, because <R U R' U R U2 R', U> basically says "do any OLL" then R U' R' U2 says "take out the pair". To fix this, put the R U' R' U2 inside the brackets.

Hope this helps.


----------



## ruffleduck (Dec 30, 2022)

Burrito said:


> Hi, I am trying to gen TSLE algs (for zz, inserts last f2l edge and orients corners) and BatchSOlveer keeeps crashing.
> 
> Prune: 17
> 
> ...


Prune 17 is way too high. You'd need like over a terabyte of RAM for that lol. You don't need batch solver for this anyway; all the algs have been genned. I'd suggest using cube explorer instead for individual algs you want to generate.


----------



## ProStar (Dec 30, 2022)

I'm just now finding this, it looks amazing!


----------



## Burrito (Dec 30, 2022)

How would I gen TTLLs? Currently Im thinkiing if I put an alg from every subset it should work.


----------



## Silky (Dec 30, 2022)

Burrito said:


> How would I gen TTLLs? Currently Im thinkiing if I put an alg from every subset it should work.



Not extremely elegant but I would do this 
<U, R U R' F' R U R' U' R' F R2 U' R', R2 U' R2 S R2 S' U R2, F2 U R' F R' B2 R F' R' B2 R2 U' F2>

<U> Accounts for AUFs
<R U R' F' R U R' U' R' F R2 U' R'> Accounts for corner permutation in U layer (J-Perm)
<R2 U' R2 S R2 S' U R2> Accounts for edge permutation (U-Perm)
<F2 U R' F R' B2 R F' R' B2 R2 U' F2> Accounts for DFR corner permutation (Conjugated A-Perm)

If you're generating algs using batch try to think about the pieces the algset will effect ( and how it will effect them ) and apply algs you already know.


----------



## Burrito (Dec 30, 2022)

thanks!


----------

