helbling/passist

automatically find good start

Closed this issue · 3 comments

automatically find which start would be a good one
display the optimal one by default according to some optimization function

The android https://github.com/namlit/siteswap_generator app seems to have a good heuristic for picking starts.

For reference its this:

    // The higher the returned integer value, the better the current rotation can be
    // used as a starting position.
    public int measureSuitabilityForStartingPosition() {
        int measure = 0;

        if (!isMandatoryGetin())
            measure += 1000;
        if (isGroundStateClubDistribution())
            measure += 10; 
        if (isGetinFree())
            measure += 1;
        if (Siteswap.isPass(at(0), getNumberOfJugglers()))
            measure += 100;
        for(int i = 1; i < getNumberOfJugglers(); ++i) {
            if (Siteswap.isPass(at(i), getNumberOfJugglers()))
                measure += 2;
        }   
        return measure;
    }   

Implemented.
No special starting throws yet. When asking around almost all siteswaps are just started directly with different start distributions of objects.
The only example I have so far is to start 792 with 794. However there is a very reasonable start for that one where A starts with 927 locally, two in left and one in right.

Currently the optimization function looks like this:

var weight = 100 * start_properties.is_ground_state - 10 * start_properties.squeezes + start_properties.starts_with_pass;