示例#1
0
    for id, var in enumerate(trainable_var[0:int(num / 2)]):
        container.append(trainable_var[id + int(num / 2)].assign(var))
    for contain in container:
        sess.run(contain)


print("------------for tensorflow --------------")
tf.reset_default_graph()
with tf.variable_scope('Qnet'):
    Qnet = Qnetwork(s_size=2, a_size=4)
with tf.variable_scope('Targetnet'):
    Targetnet = Qnetwork(s_size=2, a_size=4)

print("------------for env & google info--------------")
#env = environment('40.468254,-86.980963', '40.445283,-86.948429')
env = environment('23.792471,90.4172313', '23.7617169,90.3583898')
step_rewardG, chargenumG, SOCG, timeG = env.origine_map_reward(
)  # The info of google map route
env.battery_charge()
step_length = 1000  # meter
env.length = 1000 / step_length
print("stride length: ", env.length)
learning_rate = 0.0001
#sleep = False

print("------------for map --------------")
s = env.start_position
saver = tf.train.Saver(max_to_keep=50)
print("map bound: ", env.map_bound)
north = env.map_bound['north']
east = env.map_bound['east']
示例#2
0
 def __init__(self):
     self.xcs = standard_XCS()
     self.env = environment()
    container = []
    for id, var in enumerate(trainable_var[0:int(num / 2)]):
        container.append(trainable_var[id + int(num / 2)].assign(var))
    for contain in container:
        sess.run(contain)


print("------------for tensorflow --------------")
tf.reset_default_graph()
with tf.variable_scope('Qnet'):
    Qnet = Qnetwork(s_size=2, a_size=4)
with tf.variable_scope('Targetnet'):
    Targetnet = Qnetwork(s_size=2, a_size=4)

print("------------for env & google info--------------")
env = environment('40.468254,-86.980963', '40.445283,-86.948429')
step_rewardG, chargenumG, SOCG, timeG = env.origine_map_reward(
)  # The info of google map route
env.battery_charge()
step_length = 1000  # meter
env.length = 1000 / step_length
print("stride length: ", env.length)
learning_rate = 0.0001
#sleep = False

print("------------for map --------------")
s = env.start_position
saver = tf.train.Saver(max_to_keep=50)
print("map bound: ", env.map_bound)
north = env.map_bound['north']
east = env.map_bound['east']
示例#4
0
    def agent(self):
        results = []  #list of LSS
        data_train = []  #list of parameters values
        data = []
        pred_2 = []
        for cycle in range(10):  #10 first cycles to initially train the ANN
            a, b, c, d = self.random_parameters()
            a = (a - 1000) / 2500
            b = (b - 45) / 20
            c = (c - 2) / 2
            d = (d - 800) / 1760

            result = environment(c)  #LSS according to the environment
            data_train.append(a)  #the parameters are written in the list
            data_train.append(b)
            data_train.append(c)
            data_train.append(d)
            if result < 0:
                results.append(0)
                pred_2.append(0)
            else:
                results.append(result[0][0])
                pred_2.append(result)

        data_train_2 = data_train
        results_2 = results
        data_train = np.reshape(
            data_train, (-1, 4))  #the list is reshapped as a 4 column matrix
        results = np.reshape(results,
                             (-1, 1))  #the list is reshapped as a 1 column

        data = np.concatenate((data_train, results), axis=1)
        data = pandas.DataFrame(data=data)
        data.to_csv('data.csv'
                    )  #To save in the same file the parameters and the result
        data = pandas.read_csv('data.csv')
        data_train[0:, 0] = data.iloc[0:, 1].values
        data_train[0:, 1] = data.iloc[0:, 2].values
        data_train[0:, 2] = data.iloc[0:, 3].values
        data_train[0:, 3] = data.iloc[0:, 4].values
        results = data.iloc[0:, 5].values
        best_weights = GA(data_train, results, 8,
                          12)  #GA calculates the weights
        best_weights[1] = np.squeeze(best_weights[1])
        best_weights[3] = np.squeeze(best_weights[3])
        model = get_model()  #Return the ANN model
        best_weights = model_fit(
            model, data_train,
            results)  #To train the ANN with the first cycles
        wrong_results = 0
        good_results = 0

        for i in range(10):  #number of different taken parameters
            a, b, c, d = self.random_parameters()
            a = (a - 1000) / 2500  #To normalize the 4 parameters

            d = (d - 800) / 1760
            data = array([[a, b, c, d]])

            result = model.predict(data)  #the ANN predicts the LSSS
            if result < 0:
                pred_2.append(0)
            else:
                pred_2.append(result)
            env_result = environment(a, b, c, d)
            if env_result < 0:
                results_2.append(0)
            else:
                results_2.append(env_result[0][0])
            data_train_2.append(a)
            data_train_2.append(b)
            data_train_2.append(c)
            data_train_2.append(d)
            data_train = np.reshape(data_train_2, (-1, 4))
            results = np.reshape(results_2, (-1, 1))
            pred = np.reshape(pred_2, (-1, 1))
            data_train = pandas.DataFrame(data=data_train)
            results = pandas.DataFrame(data=results)
            data_train.to_csv('parameters.csv')
            results.to_csv('results.csv')
            pred = pandas.DataFrame(data=pred)
            pred.to_csv('predictions.csv')
            predictions = model.predict(
                data_train)  #The ANN makes predictions for all data
            error = metrics.mean_absolute_error(results, predictions)

            reward_2 = abs((result - env_result) / result)
            if reward_2 > 0.05:
                wrong_results = wrong_results + 1
                best_weights[1] = np.squeeze(best_weights[1])
                best_weights[3] = np.squeeze(best_weights[3])
                model = get_model()  #Return the ANN model
                best_weights = model_fit(model, data_train, results)

                print("number of wrong results= ", wrong_results,
                      " number of good results= ", good_results)
            else:
                good_results = good_results + 1
                last_data = data
                parameter_choice = [
                    0, 1, 2, 3, 4, 5, 6, 7
                ]  #to choose if increasing/decreasing a,b,c or d
                for i in range(8):
                    parameter = random.choice(parameter_choice)
                    parameter_choice.remove(parameter)
                    result_saved = model.predict(last_data)
                    data = last_data
                    e, f, g, h = a, b, c, d
                    reward_1 = 1

                    while (reward_1 == 1) and (e >= 0) and (e <= 1.2) and (
                            f >= -0.25) and (f <= 1) and (g >= 0) and (
                                g <= 1) and (h >= 0) and (h <= 0.97):
                        result_saved = model.predict(data)
                        last_data = data
                        a, b, c, d = e, f, g, h
                        e, f, g, h = self.improved_LSS(a, b, c, d, parameter)
                        data = array([[e, f, g, h]])
                        result = model.predict(data)
                        print("result= ", result, " best result: ",
                              result_saved, " a= ", e, " b= ", f, " c= ", g,
                              " d= ", h)
                        if result > result_saved:
                            reward_1 = 1
                        else:
                            reward_1 = -1
                print("number of wrong results= ", wrong_results,
                      " number of good results= ", good_results)
            graphComparison(predictions, results, "Data Sample",
                            "Lap Shear Strength (N)",
                            "Comparison graph for final model")
            graphComparison(pred, results, "Data Sample",
                            "Lap Shear Strength (N)",
                            "Comparison graph for each iteration")
            graphLinearRegression(results,
                                  predictions,
                                  "Experimental Values (N)",
                                  "Predicted Values (N)",
                                  "Linear regression for final model",
                                  save=True)
            graphLinearRegression(results, pred, "Experimental Values (N)",
                                  "Predicted Values (N)",
                                  "Linear regression for each iteration")
            Final_weights = pandas.DataFrame(data=best_weights)
            Final_weights.to_csv('final_weights.csv',
                                 save=True)  #To store the weights
示例#5
0
        'num_plant' : num_plant,
        'state_dim' : 2*num_plant,
        'action_dim': 2*num_plant,
        "num_episode": 2,
        "memory_capacity": 10000,
        "batch_size": 100,
        "gamma": 0.99,  # discount factor
        "learning_rate": 1e-4,
        "epsilon_start": 1,
        "epsilon_end": 0.02,
        "epsilon_decay": 1000,
        "target_update": 500
        }
    
    # create environments
    env = environment(num_plant)
    
    # train
    multiPendulumSim = MultipendulumSim(env, configuration)
    multiPendulumSim.train()
           
    

    '''
    # generate pendulum
    pend_1 = Pendulum(network = 'wireless', pend_id = 1)
    pend_2 = Pendulum(network = 'wire', pend_id = 2)
    
    # simulation data plot
    dataPlot = dataPlotter_v2()