def generate(self, input_variable, batch_size): input_variable = input_variable.view(batch_size, -1) encoder_hidden = self.encoder.init_hidden(batch_size) encoder_outputs, encoder_hidden = self.encoder(input_variable, encoder_hidden) decoder_hidden = encoder_hidden decoder_inputs = [(Variable(torch.LongTensor([[SOS_token]])), decoder_hidden)] # SOS beam = BeamSearch(self.vocab_size2, self.beam_size, decoder_hidden) # loop beam search for di in xrange(self.target_length): decoder_outputs = [] for decoder_input, decoder_hidden in decoder_inputs: decoder_output, decoder_hidden, _ = self.decoder( decoder_input, decoder_hidden, encoder_outputs) # SOS + Predict decoder_outputs.append((decoder_output, decoder_hidden)) decoder_inputs = beam.beam_search(decoder_outputs) return beam.generate(self.generate_num)
for i in range(100): sat = f.generate_sat(n, m, k) # print("\nThe generated 3-sat problem is: ", sat) # Hill Climbing # print("\nHill Climbing") state, boolval = hc.hill_climbing(f, sat, initial_state, bits_changed, m) # printS(state,boolval) if boolval: pf[0] += 1 # pf.append(boolval) #Beam Search # print("\nBeam Search - 3") state, boolval = bs.beam_search(f, sat, initial_state, bits_changed, m, beam_widths[0]) # printS(state,boolval) if boolval: pf[1] += 1 # pf.append(boolval) # print("\nBeam Search - 4") state, boolval = bs.beam_search(f, sat, initial_state, bits_changed, m, beam_widths[1]) # printS(state,boolval) if boolval: pf[2] += 1 # pf.append(boolval) # Variable Neighbourhood Descent # print("\nVariable Neighbourhood Descent") state, boolval = vn.var_neigh(f, sat, initial_state, var_functions, m)