GCoptimization::EnergyType GCoptimization::swap(int max_num_iterations ) { int curr_cycle = 1; EnergyType new_energy,old_energy; new_energy = compute_energy(); old_energy = new_energy+1; while ( old_energy > new_energy && curr_cycle <= max_num_iterations) { old_energy = new_energy; new_energy = oneSwapIteration(); curr_cycle++; } return(new_energy); }
GCoptimization::EnergyType Swap::start_swap(int max_num_iterations ) { int curr_cycle = 1; EnergyType new_energy,old_energy; new_energy = dataEnergy()+smoothnessEnergy(); //old_energy = new_energy+1; // this doesn't work for large float energies old_energy = -1; while (old_energy < 0 || (old_energy > new_energy && curr_cycle <= max_num_iterations)) { old_energy = new_energy; new_energy = oneSwapIteration(); curr_cycle++; } //printf(" swap energy %d",new_energy); return(new_energy); }