예제 #1
0
def load_default_model():
    engine.model.Network.FILTERS = 128
    engine.model.Network.BLOCK_COUNT = 12
    engine.setup_evaluator(use_rpc=False)
    engine.initialize_model("/tmp/model-156.npy")
예제 #2
0
            if args.visits == None:
                move = eng.genmove(ms * 1e-3, use_weighted_exponent=5.0)
            else:
                # This is safe, because of the visit limit we set above.
                move = eng.genmove(1000000.0, use_weighted_exponent=5.0)
            print "bestmove %s" % (uai_encode_move(move), )
        elif line == "showboard":
            print board
            print "boardok"
        sys.stdout.flush()


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--network-path",
                        metavar="NETWORK",
                        type=str,
                        help="Name of the model to load.")
    parser.add_argument("--visits",
                        metavar="VISITS",
                        default=None,
                        type=int,
                        help="Number of visits during MCTS.")
    args = parser.parse_args()
    print >> sys.stderr, args

    engine.setup_evaluator(use_rpc=False)
    engine.initialize_model(args.network_path)
    main(args)
예제 #3
0
def generate_game(args):
    config = chomp_rules.ChompGameConfig(16, 16)
    board = chomp_rules.ChompState.empty_board(config)
    e = engine.MCTSEngine()
    while True:
        print board
        selected_move = e.genmove(1.0,
                                  early_out=False,
                                  use_weighted_exponent=5.0)
        board.apply_move(selected_move)
        e.set_state(board.copy())
        if board.winner != None:
            break
        raw_input(">")


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--network",
                        metavar="PATH",
                        required=True,
                        help="Path of the model to load.")
    args = parser.parse_args()

    engine.setup_evaluator(use_rpc=False)
    engine.initialize_model(args.network)

    generate_game(args)
예제 #4
0
                self.accumulated_features.append(array)
                self.accumulated_slots.append(result_slot)
            except gevent.queue.Empty:
                self.process()
            if len(self.accumulated_features) >= self.MARSHALL_COUNT:
                #				print "Processing due to full batch."
                self.process()


class NetworkServer(RPCServer):
    def network(self, feature_string):
        result_slot = gevent.event.AsyncResult()
        submit_queue.put((feature_string, result_slot))
        return result_slot.get()


if len(sys.argv) != 3:
    print("Usage: %s model_path port-to-host-on" % (sys.argv[0], ))
    exit(1)

#model_path = train.model_path(sys.argv[1])
engine.initialize_model(sys.argv[1])

port = int(sys.argv[2])
print()
print("Launching on port:", port)

gevent.spawn(Processor)
server = gevent.server.StreamServer(("127.0.0.1", port), NetworkServer)
server.serve_forever()
예제 #5
0
        metavar="N",
        default=100,
        type=int,
        help="Number of milliseconds per move for supervised generation.")
    args = parser.parse_args()

    network_path = args.network
    network_name = os.path.splitext(os.path.basename(args.network))

    if args.random_play:
        print("Doing random play! Loading no model, and not using RPC.")
    elif args.use_rpc:
        engine.setup_evaluator(use_rpc=True, temperature=LOGIT_TEMPERATURE)
    else:
        engine.setup_evaluator(use_rpc=False, temperature=LOGIT_TEMPERATURE)
        engine.initialize_model(network_path)

    if args.supervised != None:
        args.uai_player = uai_ringmaster.UAIPlayer(args.supervised)

    if args.output_games == None:
        output_directory = os.path.join("games", network_name)
        if not os.path.exists(output_directory):
            os.mkdir(output_directory)
        output_path = os.path.join(output_directory,
                                   os.urandom(8).encode("hex") + ".json")
    else:
        output_path = args.output_games
    if args.no_write:
        output_path = "/dev/null"
    print("[%3i] Writing to: %s" % (args.group_index, output_path))