To be absolutely clear, my attitude toward the usage of multiple accounts is "I can tolerate the practice but would not encourage it myself." (Full disclosure: I personally have no "need" for multiple accounts since I only run Foldit on my laptop, whose CPU only has 2 cores.) Plus, the reality is that fixing the system either through the designation of secondary accounts or through my above-mentioned "work with multiple trajectories" option will require extensive programming. Practically speaking, this means that those who use multiple accounts, even for legitimate reasons, will have an unfair advantage over other players for the foreseeable future even though they might never intend to cheat the system.
==> So, for the short term, I would recommend manually implementing the concept of "recent best" and "very best" in your recipes/scripts. It's cumbersome, but at least it works. The following is an example:
====================
- Suppose that this is the pseudo-code for your current script (I'm using Blue Fuse as an example here):
Set recent best
Process structure
Reset to recent best
Process structure further
Reset to recent best
.
This can be re-written by first re-inventing the wheel, namely re-creating the function of recent bests and very bests using quicksave slots.
Function initialize():
Set traj to 1 //Trajectory number, can be 1, 2, or 3
Set s1 to (traj-1)3+1
//Determines the quicksave slot to be used for the current solution; this will translate to 1, 4, or 7
Set s2 to (traj-1)3+2
//Determines the quicksave slot to be used for the recent best solution; this will translate to 2, 5, or 8
Set s3 to (traj-1)*3+3
//Determines the quicksave slot to be used for the very best solution; this will translate to 3, 6, or 9
Quicksave to slot s1 //Further processing will be done on this structure
Quicksave to slot s2 //Set recent best
Quicksave to slot s3 //Simulates the "very best" solution
Score structure, then store the result as current_score, score_recentbest, and score_verybest
.
.
Function set_recentbest():
Quickload slot s1 //Current structure
Score structure and store the result as current_score
Quicksave to slot s2 //Overwrite recent best
Set score_recentbest to current_score //Update score of recent best
.
.
Function load_recentbest():
Quickload slot s2 //Recent best slot
Score structure and store the result as score_recentbest
Quicksave to slot s1 //Overwrite current structure
Set current_score to score_recentbest //Update score
.
.
Function load_verybest():
Quickload slot s3 //Recent very best slot
Score structure and store the result as score_verybest
Quicksave to slot s2 //Overwrite recent best
Quicksave to slot s1 //Overwrite current structure
Set score_recentbest to score_verybest
Set current_score to score_verybest
.
.
Function update_recent_and_verybest():
Quickload slot s2 //Recent best slot
Score structure and store the result as score_recentbest
Quickload slot s1 //Current structure
Score structure and store the result as current_score
If current_score > score_recentbest:
—- Quicksave to slot s2, and set score_recentbest to current_score
—- //Update the recent best if the current structure scores better
Quickload slot s3 //Very best slot
Score structure and store the result as score_verybest
Quickload slot s1 //Current structure
If current_score > score_recentbest:
—- Quicksave to slot s3, and set score_very to current_score
—- //Update the very best if the current structure scores better
// Note that this ends up with the current structure being loaded last whatever happens.
// This is intentional, to ensure that you're working on the current structure.
.
.
.
While cumbersome, this is a one-time investment; for future purposes, one only needs to copy and paste the above functions.
The main part of the program is actually very short:
set_recentbest()
process_structure()
update_recent_and_verybest() //Insert one instance of this function every time before saving or loading the recent best or very best
load_recentbest()
process_structure_further()
update_recent_and_verybest()
load_recentbest()
- The bottom line is that you need one quicksave slot for storing the current structure, one for the recent best, and one more for the very best. Running multiple instances of the script only requires changing the value used for "traj" (1, 2, or 3).