Beispiel #1
0
    def __init__(self, game, Type="default"):
        self.game = game
        self.Type = Type
        Solver = None
        Solver = RegretSolver

        self.isetflag = [
            -1 * np.ones(game.numIsets[0]), -1 * np.ones(game.numIsets[1])
        ]

        self.solvers = []
        self.solvers.append(
            list(
                map(lambda x: Solver(game.nactsOnIset[0][x]),
                    range(game.numIsets[0]))))
        self.solvers.append(
            list(
                map(lambda x: Solver(game.nactsOnIset[1][x]),
                    range(game.numIsets[1]))))
        self.stgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.stgy[0].append(np.ones(nact) / nact)
            else:
                self.stgy[0].append(np.ones(0))

        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.stgy[1].append(np.ones(nact) / nact)
            else:
                self.stgy[1].append(np.ones(0))

        self.outcome, self.reward = generateOutcome(game, self.stgy)
        self.nodestouched = 0
        self.round = -1

        self.sumstgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.sumstgy[0].append(np.ones(nact) / nact)
            else:
                self.sumstgy[0].append(np.ones(0))
        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.sumstgy[1].append(np.ones(nact) / nact)
            else:
                self.sumstgy[1].append(np.ones(0))

        self.sampledtrans1 = list(
            map(lambda _u: np.zeros(game.nactsOnHist[_u]),
                range(game.numHists)))
        self.sampledrews1 = list(
            map(lambda _u: np.zeros(2), range(game.numHists)))
        self.weight1 = np.zeros(game.numHists)
Beispiel #2
0
    def __init__(self, game, Type="regretmatching"):
        self.game = game
        self.Type = Type
        Solver = None
        if Type == "regretmatching":
            Solver = RegretSolver
        else:
            Solver = RegretSolverPlus

        self.isetflag = [
            -1 * np.ones(game.numIsets[0]), -1 * np.ones(game.numIsets[1])
        ]

        self.solvers = []
        self.solvers.append(
            list(
                map(lambda x: Solver(game.nactsOnIset[0][x]),
                    range(game.numIsets[0]))))
        self.solvers.append(
            list(
                map(lambda x: Solver(game.nactsOnIset[1][x]),
                    range(game.numIsets[1]))))
        self.stgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.stgy[0].append(np.ones(nact) / nact)
            else:
                self.stgy[0].append(np.ones(0))

        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.stgy[1].append(np.ones(nact) / nact)
            else:
                self.stgy[1].append(np.ones(0))

        self.outcome, self.reward = generateOutcome(game, self.stgy)
        self.nodestouched = 0
        self.round = -1

        self.sumstgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.sumstgy[0].append(np.ones(nact) / nact)
            else:
                self.sumstgy[0].append(np.ones(0))
        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.sumstgy[1].append(np.ones(nact) / nact)
            else:
                self.sumstgy[1].append(np.ones(0))
Beispiel #3
0
    def __init__(self, game):
        self.game = game

        self.trajs = [[], []]

        self.isetflag = [
            -1 * np.ones(game.numIsets[0]), -1 * np.ones(game.numIsets[1])
        ]

        self.stgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.stgy[0].append(np.ones(nact) / nact)
            else:
                self.stgy[0].append(np.ones(0))

        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.stgy[1].append(np.ones(nact) / nact)
            else:
                self.stgy[1].append(np.ones(0))

        self.outcome, self.reward = generateOutcome(game, self.stgy)
        self.nodestouched = 0
        self.round = -1

        self.sumstgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.sumstgy[0].append(np.ones(nact) / nact)
            else:
                self.sumstgy[0].append(np.ones(0))
        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.sumstgy[1].append(np.ones(nact) / nact)
            else:
                self.sumstgy[1].append(np.ones(0))

        self.Q = [[], []]
        for owner in range(2):
            for iset in range(game.numIsets[owner]):
                self.Q[owner].append(np.zeros(game.nactsOnIset[owner][iset]))
Beispiel #4
0
    def __init__(self, game, Type="regretmatching", thres=0.0):
        print("initializing solver")
        self.thres = thres
        self.time = 0

        self.game = game

        self.Type = Type
        Solver = None
        if Type == "regretmatching":
            Solver = RegretSolver
        else:
            solver = RegretSolverPlus

        self.cfvCache = []
        self.cfvCache.append(
            list(
                map(lambda x: np.zeros(game.nactsOnHist[x]),
                    range(game.numHists))))
        self.cfvCache.append(
            list(
                map(lambda x: np.zeros(game.nactsOnHist[x]),
                    range(game.numHists))))

        self.probNotUpdated = [
            np.zeros((game.numHists, 2)),
            np.zeros((game.numHists, 2))
        ]
        self.probNotPassed = [
            np.zeros((game.numHists, 2)),
            np.zeros((game.numHists, 2))
        ]
        self.histflag = [
            -1 * np.ones(game.numHists), -1 * np.ones(game.numHists)
        ]
        self.isetflag = [
            -1 * np.ones(game.numIsets[0]), -1 * np.ones(game.numIsets[1])
        ]

        self.reachp = [np.zeros(game.numIsets[0]), np.zeros(game.numIsets[1])]

        self.solvers = []
        self.solvers.append(
            list(
                map(lambda x: RegretSolver(game.nactsOnIset[0][x]),
                    range(game.numIsets[0]))))
        self.solvers.append(
            list(
                map(lambda x: RegretSolver(game.nactsOnIset[1][x]),
                    range(game.numIsets[1]))))
        """
		"""
        self.stgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.stgy[0].append(np.ones(nact) / nact)
            else:
                self.stgy[0].append(np.ones(0))

        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.stgy[1].append(np.ones(nact) / nact)
            else:
                self.stgy[1].append(np.ones(0))
        self.round = -1
        self.nodestouched = 0
        self.outcome, self.reward = generateOutcome(game, self.stgy)

        self.sumstgy = [[], []]
        for i, iset in enumerate(range(game.numIsets[0])):
            nact = game.nactsOnIset[0][iset]
            if game.playerOfIset[0][iset] == 0:
                self.sumstgy[0].append(np.ones(nact) / nact)
            else:
                self.sumstgy[0].append(np.ones(0))
        for i, iset in enumerate(range(game.numIsets[1])):
            nact = game.nactsOnIset[1][iset]
            if game.playerOfIset[1][iset] == 1:
                self.sumstgy[1].append(np.ones(nact) / nact)
            else:
                self.sumstgy[1].append(np.ones(0))