Beispiel #1
0
def reportsApiTest3():

    policy = PytorchPolicy(32, 1, 32, 3, 64, Connect4GameState(7, 6, 4),
                           "cuda:0", "torch.optim.adamw.AdamW", {
                               "lr": 0.001,
                               "weight_decay": 0.0001
                           })

    encoded = encodeToBson(policy.store())

    print("Encoded network into " + str(len(encoded)))

    response = requests.post(
        url=
        "http://127.0.0.1:8042/api/networks/c48b01d7-18e8-4df0-9c8a-d9886473bb49/"
        + policy.getUUID(),
        data=encoded)

    response.raise_for_status()

    response = requests.get(
        url="http://127.0.0.1:8042/api/networks/download/" + policy.getUUID(),
        stream=True)
    response.raise_for_status()

    redownloaded = decodeFromBson(response.raw.data)

    prevId = policy.getUUID()

    policy.reset()

    policy.load(redownloaded)

    print(policy.getUUID(), prevId)
Beispiel #2
0
    def test_network_posting(self):
        run = self.postARun()

        policy = PytorchPolicy(32, 1, 32, 3, 64, Connect4GameState(7, 6, 4),
                               "cuda:0", "torch.optim.adamw.AdamW", {
                                   "lr": 0.001,
                                   "weight_decay": 0.0001
                               })

        postBytes(urlBase + "api/networks/" + run["id"] + "/" +
                  policy.getUUID(),
                  config["secret"],
                  encodeToBson(policy.store()),
                  retries=1)

        networkList = requestJson(urlBase + "api/networks/list/" + run["id"],
                                  config["secret"],
                                  retries=1)
        self.assertEqual(len(networkList), 1)
        self.assertEqual(networkList[0]["id"], policy.getUUID())

        redownloaded = decodeFromBson(
            requestBytes(urlBase + "api/networks/download/" + policy.getUUID(),
                         config["secret"],
                         retries=1))

        game = Connect4GameState(7, 6, 4)
        game = game.playMove(np.random.randint(7))
        game = game.playMove(np.random.randint(7))

        policy.isRandom = False
        forwardResultPre = policy.forward([game])[0]
        preUUID = policy.getUUID()
        policy.reset()
        policy.isRandom = False
        forwardResultReset = policy.forward([game])[0]
        policy.load(redownloaded)
        policy.isRandom = False
        forwardResultPost = policy.forward([game])[0]

        self.assertEqual(preUUID, policy.getUUID())

        self.assertTrue(np.all(forwardResultPre[0] == forwardResultPost[0]))
        self.assertTrue(np.all(forwardResultPre[1] == forwardResultPost[1]))

        self.assertFalse(np.all(forwardResultPre[0] == forwardResultReset[0]))
        self.assertFalse(np.all(forwardResultPre[1] == forwardResultReset[1]))
Beispiel #3
0
def getRandomGame():
    game = Connect4GameState(7, 6, 4)
    for _ in range(np.random.randint(25)):
        if game.hasEnded():
            break
        moves = game.getLegalMoves()
        game = game.playMove(random.choice(moves))
    return game
    def test_nothingCorrect(self):
        game = Connect4GameState()
        solver = PonsSolver("../pons/7x6.book", mode="strong")
        generator = TestDatabaseGenerator2(game, solver, 300, self.tempFile.name, SemiPerfectPolicy(0.5), True, 4, True)
        generator.main(timeout=8)
        self.assertEqual(len(generator.results), 300)

        tester = DatasetPolicyTester2(ControlledPlayer(solver, 99999), self.tempFile.name, game)
        moveAccuracy, resultAccuracy = tester.main()

        self.assertEqual(moveAccuracy, 0)
        self.assertEqual(resultAccuracy, 0)
    def test_halfperfect_limit_frames(self):
        game = Connect4GameState()
        solver = PonsSolver("../pons/7x6.book", mode="strong")
        generator = TestDatabaseGenerator2(game, solver, 150, self.tempFile.name, SemiPerfectPolicy(0.5), True, 4, True, 1)
        generator.main(timeout=16)
        self.assertEqual(len(generator.results), 150)

        tester = DatasetPolicyTester2(ControlledPlayer(solver, 2), self.tempFile.name, game)
        moveAccuracy, resultAccuracy = tester.main()

        self.assertEqual(moveAccuracy, 50)
        self.assertEqual(resultAccuracy, 50)
Beispiel #6
0
def makeReport():
    game = Connect4GameState(7, 6, 4)
    game = game.playMove(np.random.randint(7))
    game = game.playMove(np.random.randint(7))

    report = dict()
    report["knownResults"] = [1]
    report["generics"] = dict()
    report["policyUUID"] = "ab98246f-4b80-48e8-97fc-d365d4a3aa3d"
    report["policyIterated"] = np.random.rand(7).astype(np.float32)
    report["uuid"] = str(uuid.uuid4())
    report["state"] = game.store()

    return report
Beispiel #7
0
 def setUp(self):
     self.subject = Connect4GameState(7, 6, 4)
Beispiel #8
0
def createGame(moves):
    game = Connect4GameState(7, 6, 4)
    for move in moves:
        game = game.playMove(move - 1)
    return game