コード例 #1
0
    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)
コード例 #2
0
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)