-DF5 option seems not to work
Hello,,
Did -DF5 option work in the last version of the code because I have some troubles with it?
I did a test to solve a scramble by compiling with -DF5 and no solution is returned by the program.
I've been looking through the code but nothing works. It seems that variable sol is empty.
If you know where this could come from I would be happy to exchange with you.
Hi,
I just cloned the repository and for me everything seems to be working fine.
Can you perhaps provide some more details of what you have been doing and what output you are seeing? What command-line parameters are you using? It might be that the solver is simply unable to find a solution that adheres to the settings you provided, i.e. if you run with -m 10 -l 20 it will search only for 10 milliseconds and only return a solution if it has at most 20 moves; it is very possible that no such solution can be found in the allotted time, then the solver will not return anything.
Hi, Indeed it was that, I had noticed it shortly after but you confirm it well. The calculation time was too low. Is there an optimal time for using -DF5 ? Usually how long do you attribute for a search with -DF5? Thank you, I congratulate you for this great project
Hello,
I'm trying to compile on a raspi. Without the -DF5 flag everything works perfectly but if I compile with -DF5 flag an error occurs.
g++ -std=c++11 -lpthread -O3 -DF5 -c -o src/prun.o src/prun.cpp
src/prun.cpp: In function ‘void prun::init_phase1()’:
src/prun.cpp:149:34: error: size ‘2236548672’ of array exceeds maximum object size ‘2147483647’
149 | phase1 = new prun1[N_FS1TWIST];
| ^
src/prun.cpp: In function ‘bool prun::init(bool)’:
src/prun.cpp:398:36: error: size ‘2236548672’ of array exceeds maximum object size ‘2147483647’
398 | phase1 = new prun1[N_FS1TWIST];
| ^
make: *** [<builtin>: src/prun.o] Error 1
I tried to fix it by changing the array type. The strange thing is that I didn't see any variable declaration change between compiling with or without -DF5.
Do you have any idea how to solve this problem?
Hi,
as for what settings you should use: if you don't use a move limit with -l, then the solver will simply search for the full -m milliseconds and return the shortest solution found in that time. On reasonably strong hardware it is rare that you will not find any solution in a few milliseconds. Further, use multi-threading if your processor has multiple cores and hyper-threads with -t, this is disabled per default. For my robot mirrcub3er, I used -m 25 -t 12 on a 6-physical/12-virtual core processor. You can also type bench to run a benchmark solving 10k random cubes and then look at the results in order to tune the settings for your system.
Regarding the compilation problem, in -DF5 mode we perform only 4-way rather than 16-way symmetry reduction. This means the pruning table (which you are looking at here) will be roughly 4x larger. Possibly the Raspberry has not enough RAM or there is some problem with addresses that are larger than 32 bit. In general, this solver is designed for fast solving and not for limited resource applications. I would recommend to run the solver on a standard PC / Laptop and have it send the solution to the robot controller (this is also what I do with my robots).
Hello, thank you for all your well detailed information on the settings, I will adapt this to my needs. I just noticed that I have a 32-bits operating system. This is probably the reason, because I have 4GB of RAM and I have already successfully compiled the source code on a virtual machine that has only 2GB of RAM. I will try to change the OS. I will keep you informed if it works.
Thank you