The cycles bug (fixed in v1.21)

A couple users brought to my attention that ADMIXTURE was finding suboptimal solutions for large K---say K≥15. The plot below shows the loglikelihoods found for each of five runs (each with a different random seed) for each K in 1:20. Since each model K-1 is nested inside the model K, the loglikelihood should never decrease. Clearly something was going wrong in v1.20.
Loglikelihood plot

Running ADMIXTURE with -mEM showed that the accelerated EM algorithm was not susceptible to the problem, suggesting that there was a flaw in the block relaxation algorithm. And indeed there was! After spending some quality time with gdb, I identified the culprit as a single line in the quadratric programming routine, where long ago for various reasons I had set the number of cycles of the simplex algorithm to a measly 10---clearly insufficient for doing a pivoting search in twenty dimensions. It is now set much higher, and works well as of v1.21.

--Dave