private static void RunPcm(PCMSolution PCM, ref int finalIterationsCounter) { int pcmIterationsCounter = 0; double oldPCMTarget = double.PositiveInfinity; // start PCM iterations while ((oldPCMTarget > PCM.Target) || (pcmIterationsCounter < 2)) { oldPCMTarget = PCM.Target; if (pcmIterationsCounter != 0) PCM.setD(); PCM.UpdatePrimaryMemberships(); PCM.UpdateClusterPrototypes(); PCM.setTarget(); pcmIterationsCounter++; finalIterationsCounter++; Application.DoEvents(); } }