shakes.append(Permutation(size,p)) shakes.append(Permutation(size,p1)) shakes.append(Permutation(size,p2)) shakes.append(Permutation(size,p3)) shakes.append(Permutation(size,p4)) shakes.append(Permutation(size,p1_2)) shakes.append(Permutation(size,p1_3)) shakes.append(Permutation(size,p1_4)) shakes.append(Permutation(size,p2_3)) shakes.append(Permutation(size,p2_4)) shakes.append(Permutation(size,p3_4)) if _debug>0: print "----- \n\n" curr_order = _instance.becker_order() if _debug>0: print "first local search" _start = time.time() maxima = localsearch(_instance, curr_order) if _debug>0: print "creating shakes ..." if _debug>0: print "starting ILS" i_out = ils(_instance,maxima['order'],shakes) _stop = time.time() print "best: %s" % i_out print "LS/ILS: %d / %d" % (_ls_runs, _ils_runs)
id=Permutation(size) shakes1={} for i in range(size/4): s = int(size/4) n= "( %04u %04u %04u %04u )" % (i, i+2*s, i+s, i+3*s) shakes1[n]=Permutation(size, [i, i+2*s, i+s, i+3*s]) n= "( %04u %04u )( %04u %04u )" % (i, i+2*s, i+1,i+2*s+1) shakes1[n]=Permutation(size, {i:i+2*s, i+2*s:i, i+1:i+2*s+1,i+2*s+1:i+1}) # n= "( %04u %04u %04u %04u )" % (i, i+3*s, i+2*s, i+s) # shakes1[n]=permutation(size, [i, i+3*s, i+2*s, i+s]) hipotetical_cost = instance.hipotetical_cost() print "hipotetical maximal: %d" % hipotetical_cost best_order = instance.becker_order() print "best_order: " + str(best_order) instance.order(best_order) best_cost = instance.cost(best_order) print "initial cost: %d" % best_cost best_changed = False for s in ["id" ] + sorted(shakes1.keys()): if s != "id": print "shaking: %s" % s shaked_order = shakes1[s](best_order) instance.order(shaked_order) print "starting LS cost: %d " % instance.cost() local_minima = False