def setUp(self): self.hracia_plocha1 = funkcie.plocha() self.hracia_plocha2 = funkcie.plocha() self.hracia_plocha2[4][8] = 0 self.hracia_plocha2[5][8] = 0 self.hracia_plocha2[6][8] = 0 self.hracia_plocha2[7][8] = 0 self.hracia_plocha2[8][8] = 0 self.hracia_plocha3 = funkcie.plocha() self.hracia_plocha3[4][8] = 0 self.hracia_plocha3[5][8] = 0 self.hracia_plocha3[6][8] = 0 self.hracia_plocha3[7][8] = 0 self.hracia_plocha3[8][8] = 0 self.hracia_plocha3[6][4] = 0 self.hracia_plocha3[6][5] = 0 self.hracia_plocha3[6][6] = 0 self.hracia_plocha3[6][7] = 0 self.hracia_plocha4 = funkcie.plocha() self.hracia_plocha4[4][8] = 0 self.hracia_plocha4[5][8] = 0 self.hracia_plocha4[6][8] = 0 self.hracia_plocha4[7][8] = 0 self.hracia_plocha4[8][8] = 0 self.hracia_plocha4[6][4] = 0 self.hracia_plocha4[6][5] = 0 self.hracia_plocha4[6][6] = 0 self.hracia_plocha4[6][7] = 0 self.hracia_plocha4[6][9] = 0 self.hracia_plocha4[6][10] = 0 self.hracia_plocha4[6][11] = 0 self.hracia_plocha4[6][12] = 0 self.hracia_plocha4[6][13] = 0 self.hracia_plocha4[6][14] = 0 self.hracia_plocha4[6][15] = 0 self.hracia_plocha5 = funkcie.plocha() self.hracia_plocha5[4][8] = 1 self.hracia_plocha5[5][8] = 1 self.hracia_plocha5[6][8] = 2 self.hracia_plocha5[7][8] = 3 self.hracia_plocha5[8][8] = 1 self.hracia_plocha5[4][6] = 1 self.hracia_plocha5[5][6] = 1 self.hracia_plocha5[6][6] = 7 self.hracia_plocha5[7][6] = 4 self.hracia_plocha5[4][7] = 2 self.hracia_plocha5[8][6] = 1 self.hracia_plocha5[6][4] = 1 self.hracia_plocha5[6][5] = 1 self.hracia_plocha5[6][6] = 1 self.hracia_plocha5[6][7] = 1 self.hracia_plocha5[6][9] = 0 self.hracia_plocha5[6][10] = 0 self.hracia_plocha5[6][11] = 0 self.hracia_plocha5[6][12] = 0 self.hracia_plocha5[6][13] = 0 self.hracia_plocha5[6][14] = 0 self.hracia_plocha5[6][15] = 1
def anneal(fun, init_temp, ticks, opt = 1): hracia_plocha = funkcie.plocha() rozlozenie_cur = funkcie.rozlozenie() funkcie.inicializuj(hracia_plocha, rozlozenie_cur) cur = funkcie.plocha(hracia_plocha) best = funkcie.plocha(hracia_plocha) ebest = fun(best, opt) ecur = fun(cur, opt) temp = init_temp delta_e = 0 while temp > init_temp/ticks: temp -= init_temp/ticks new_plocha = funkcie.plocha(cur) rozlozenie_new = funkcie.rozlozenie(rozlozenie_cur) funkcie.generuj(rozlozenie_new, new_plocha) enew = fun(new_plocha, opt) delta_e += math.fabs(enew - ecur) probability = funkcie.prob(ecur, enew, temp) randomnumber = random.random() if probability > randomnumber: # print(ecur - enew, temp) cur = funkcie.plocha(new_plocha) rozlozenie_cur = funkcie.rozlozenie(rozlozenie_new) ecur = fun(cur, opt) if ecur < ebest: best = funkcie.plocha(cur) ebest = fun(best, opt) ebest = funkcie.finalenergy(best) funkcie.vypis_plochu(best) print ("ebest: %d" % ebest) return ebest, delta_e