Example #1
0
 def copy(self):
     """need to reimplement this because the __init__ signature of
     IntDict is not identical to that of defaultdict"""
     result = IntDict(self.parent)
     defaultdict.update(result, self)
     # see http://www.logilab.org/ticket/23986
     return result
Example #2
0
 def __init__(self, item_coder_data=None, properties=None,
              boundary_types=None, boundary_format=BoundaryFormat.mass):
     '''
     Initialize a dataset.
     '''
     defaultdict.__init__(self, dict)
     self.properties = dict()
     self.boundary_format = boundary_format
     # Masses
     if item_coder_data is not None and item_coder_data is not dict:
         defaultdict.update(self, item_coder_data)
     # Properties
     if properties is not None:
         self.properties.update(properties)
     # Boundary types
     if boundary_types is not None:
         self.boundary_types = set(boundary_types)
     else:
         self.boundary_types = set([1])
     # Coders
     self.coders = set()
     # Populate coders
     for coder_masses in defaultdict.values(self):
         for coder in coder_masses.keys():
             self.coders.add(coder)
Example #3
0
    def runTrails(self,
                  alphas=[0.001, 0.005, 0.00592],
                  betas=[0.0003, 0.0005, 0.00798],
                  lambdas=[0, 0.2, 0.4, 0.6],
                  degree=[3],
                  path="Result/"):
        print("actor_critic(lambda)\n")
        log = "alpha    beta     lambda2     degree    mean_return    max_return     last_return\n"
        dict = {}

        for alpha in alphas:
            for beta in betas:
                for lambda2 in lambdas:
                    trails = []
                    for i in range(self.trail_n):
                        if self.state_type == "continue":
                            result = self.run(alpha=alpha,
                                              beta=beta,
                                              lambda2=lambda2)
                        else:
                            result = self.run_Tabular(alpha=alpha, beta=beta)
                        trails.append(result)
                    path_temp = path + self.env_name + "/" + self.agent_name + "/"
                    name = path_temp + str(alpha) + "_" + str(
                        beta) + "_" + str(lambda2)+"_"+\
                           str(self.degree)
                    name = name.replace(".", "")
                    pickle.dump(trails, open(name, "wb"))
                    plot_trails(trails, name)
                    trails = np.array(trails)
                    trails = trails[:, 90:]
                    dict.update({
                        str(alpha) + "_" + str(beta) + "_" + str(lambda2) + "_" + str(self.degree):
                        np.mean(trails)
                    })
                    print("done one trails", np.mean(trails))

        sorted_J = sorted(dict.items(),
                          key=operator.itemgetter(1),
                          reverse=True)
        print(str(sorted_J[0]))
        f = open(path_temp + 'log.txt', 'a')
        f.write(str(sorted_J))
        f.write("\n")
        f.close()
Example #4
0
    def runTrails(self,
                  alphas=[0.001, 0.002, 0.003, 0.008],
                  epsilons=[0.008, 0.01, 0.05],
                  lambda2s=[0, 0.3, 0.5, 0.8],
                  path="Result/"):
        log = "alpha    epsilon     lambuda       degree    mean_return    max_return     last_return\n"
        dict = {}

        for alpha in alphas:
            for epsilon in epsilons:
                for lambda2 in lambda2s:
                    trails = []
                    for i in range(self.trail_n):
                        if self.state_type == "continue":
                            result = self.run(alpha=alpha,
                                              epsilon=epsilon,
                                              lambda2=lambda2)
                        else:
                            result = self.run_tabular(alpha=alpha,
                                                      epsilon=epsilon,
                                                      lambda2=lambda2)
                            print("done one", i)
                        trails.append(result)
                    path_t = path + self.env_name + "/" + self.agent_name + "/"
                    name = path_t + str(alpha) + "_" + str(
                        epsilon) + "_" + str(lambda2) + "_" + str(self.degree)
                    name = name.replace(".", "")
                    pickle.dump(trails, open(name, "wb"))
                    plot_trails(trails, name)
                    trails = np.array(trails)
                    trails = trails[:, 90:]
                    dict.update({
                        str(alpha) + "_" + str(epsilon) + "_" + str(lambda2) + "_" + str(self.degree):
                        np.mean(trails)
                    })
                    print("done one trails", np.mean(trails))
        sorted_J = sorted(dict.items(),
                          key=operator.itemgetter(1),
                          reverse=True)
        print(sorted_J[0])
        f = open(path_t + 'log.txt', 'a')
        f.write(str(sorted_J))
        f.write("\n")
        f.close()