How to avoid getting stuck on local optimum, for genetic algorithms
It looks like you're dealing with premature convergence.

In other words, your population fills itself with individuals that represent the suboptimal solution and/or individuals that are (too) close to said solution.

The basic framework of a genetic algorithm is as follows:

P &lt;- Population of size N with N random individuals.
evaluate fitness of all individuals in P
while (stopping criteria not met) {
    C &lt;- empty Child set of size M
    while (size of C is not M) {
        parent1 &lt;- select an individual from P
        parent2 &lt;- select an individual from P

        child1, child2 &lt;- combine parent1 and parent2 somehow.
        child1, child2 &lt;- mutate children by chance
        evaluate fitness of child1, child2
        C &lt;- C + child1 + child2
    }
    P &lt;- combine P and C. (P remains size N)
}
return individual with best fitness


Note that the (e.g.) the size of the population/children doesn't have to be constant per se. Or you might combine a variable number of parents into a variable amount of children (e.g. a crossover between 5 parents resulting in 7 children). But I would keep it simple, at first.

As you can see, the main operators in a genetic algorithm are, in order 


Selection: Select individuals from the population that will be combined. Examples: tournament selection, proportionate selection, truncation selection, ...
Crossover: Combine selected individuals (parents) to new indidivuals (children). Examples: one-point crossover, n-point crossover, uniform crossover, cut and splice, ...
Mutation: By chance, (don't) mutate an individual by changing the individual slightly.
Recombination: Somehow insert the children into the set of parents.
Examples: Add all children to the population, sort the thing by fitness and remove the worst individuals so your population is size N again; Sort your population and drop the worst M individuals and add all children; often the same techniques that are presented in the selection phase are used. 


In your description, you're confusing multiple steps as if it were one (e.g. you skip the selection step but you incoorperate it in the crossover step). You also describe techniques as if it were a step of the algorithm (e.g. Elitism is a technique used in the recombination step to ensure that at least the best individuals don't die).

An example where premature convergence might/will occur is when you only select the best individuals as parents and only allow the best individuals survive (in the recombination step).

Some possible methods to resolve this:


Increase mutation rate. However, a mutation is usually a very random process. You would need 'pure' luck to escape the suboptimal solution.
Redesign your genetic operations. e.g. allow bad fitness individuals/offspring to survive the generation more frequently. It could be that you're currently selecting too much good individuals to survive. Don't let too much bad individuals survive though, or your algorithm will never converge to something good.
(...)


The goal is to tweek your genetic operations in such a way that in each next generation, the average fitness of your population has (preferably) increased while maintaining a big enough fitness variation. This is not easy.

There are several other methods to avoid premature convergence if the above doesn't help you out. I strongly recommend experimenting with altering your genetic operations first before doing this, however. Search terms: preselection, crowding, fitness sharing, incest prevention, ...