云计算任务调度仿真03

前面陆续分享了基于policy gradient和DQN实现的深度强化学习任务调度仿真,上次的DQN没有实现fix-qtarget和experience replay,这次再分享实现了这两个方法的DQN任务调度仿真。
经验重放,定义存储和存放次序,这里也可以自行修改

    def store_transition(self, s, a, r, s_):
        #经验重放
        one_hot_action = np.zeros(self.n_actions)
        one_hot_action[a] = 1
        self.replay_buffer.append((s, one_hot_action, r, s_))
        if len(self.replay_buffer) > self.memory_size:
            self.replay_buffer.popleft()

在学习过程定期更新网络

    def learn(self):
        # 定期替换网络参数
        if self.learn_step_counter % self.replace_target_iter == 0:
            self.sess.run(self.replace_target_op)
            # print('-------------target_params_replaced------------------')

        # sample batch memory from all memory: [s, a, r, s_],采样学习,批量学习
        minibatch = random.sample(self.replay_buffer, self.batch_size)
        state_batch = [data[0] for data in minibatch]
        action_batch = [data[1] for data in minibatch]
        next_state_batch = [data[3] for data in minibatch]

        # calculate target q-value batch
        q_next_batch = self.sess.run(self.q_next, feed_dict={
   self.s_: next_state_batch})
        q_real_batch = []
        for i in range(self.batch_size):
            q_real_batch.append(minibatch[i][2] + self.gamma * np.max(q_next_batch[i]))
        # train eval network
        self.sess.run(self._train_op, feed_dict={
   
            self.s: state_batch,
            self.action_input: action_batch,
            self.q_target: q_real_batch
        })

        # increasing epsilon
        if self.epsilon < self.epsilon_max:
            self.epsilon = self.epsilon + self.epsilon_increment
        else:
            self.epsilon = self.epsilon_max
        # print('epsilon:', self.epsilon)
        self.learn_step_counter += 1

运行效果
在这里插入图片描述
还有一些对比算法
在这里插入图片描述
代码是基于TensorFlow1.x实现的,可以在此基础上再修改优化,完整的代码可根据名字去GitHub上下载获取。

相关推荐

  1. 计算知识点-03

    2024-01-11 19:30:05       33 阅读
  2. 计算知识点-02

    2024-01-11 19:30:05       34 阅读
  3. 09-进程和计划任务管理

    2024-01-11 19:30:05       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 19:30:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 19:30:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 19:30:05       87 阅读
  4. Python语言-面向对象

    2024-01-11 19:30:05       96 阅读

热门阅读

  1. 【C/C++】C语言的高级编程

    2024-01-11 19:30:05       58 阅读
  2. MySQL

    2024-01-11 19:30:05       50 阅读
  3. 编程江湖:Python探秘之旅-----控制流程的艺术(二)

    2024-01-11 19:30:05       59 阅读
  4. 每日一看大模型新闻(2023.11.20)

    2024-01-11 19:30:05       49 阅读
  5. SpringMVC-05

    2024-01-11 19:30:05       56 阅读
  6. PTA:输出句子中每个单词的长度

    2024-01-11 19:30:05       56 阅读
  7. py远程执行命令,获取返回值

    2024-01-11 19:30:05       61 阅读
  8. UI自动化测试革命:拥抱Maestro框架的未来之旅

    2024-01-11 19:30:05       58 阅读