记录强化学习过程(一)——配置环境

本文档记录了使用Anaconda安装Tensorflow-GPU,并在Pycharm中配置环境进行编程的过程。同时介绍了如何安装Gym库,并通过示例代码测试环境。在测试中,展示了随机动作在CartPole-v1环境下的运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文的主要目的是记录一下学习过程,以后需要的时候方便自己查找
一、tensorflow
https://tf.wiki/zh_hans/basic/installation.html#gpu 这个链接是tensorflow-gpu的安装步骤,建议是使用anaconda进行安装,随后再用pycharm配置一下环境,使用pycharm编程。
在毕设中,使用的是anaconda安装tensorflow-gpu版本,随后在pycharm内进行编程

配置环境
关键是找到anaconda安装环境的位置。内的envs文件内,找到python.exe选中,点击确定即可创建一个有tensorflow的项目。
二、安装gym
在这里插入图片描述
等待安装完成之后,可以使用上图中的程序,测试一下:

import gym
if __name__ == '__main__':
    env = gym.make('CartPole-v1')  # 1.构造env, 根据name指定
    env.reset()  # 2.初始化env
    for _ in range(1000):
        env.render()  # 3.渲染
        env.step(env.action_space.sample())  # take a random action#4.action
    env.close()

更加细节的内容可以在这一篇文章中找到 OpenAI Gym 通俗理解和简单实战https://www.jianshu.com/p/73ece4f41f7f
点击运行,结果如下所示:
在这里插入图片描述
这里产生的动作是随机的,所以产生什么效果都不奇怪。

### 使用 FCFS 调度算法进行强化学习环境建模及实现 #### 方法概述 在强化学习环境中,调度问题是常见的研究领域之。FCFS(First-Come, First-Served)作为种经典的调度算法,在简单性和可解释性方面具有优势[^1]。然而,由于其缺乏对任务优先级的支持以及可能产生的饥饿现象,它通常被用作基线方法与其他更复杂算法对比。 为了将 FCFS 应用于强化学习环境,可以通过以下方式构建: 1. **定义状态空间** 状态空间应描述当前待调度的任务集合及其属性。例如,可以包括每项任务的到达时间、执行时间和剩余资源需求等特征。这些信息可以用数组或列表表示,便于后续处理。 2. **设计动作空间** 动作空间对应于调度决策的具体操作。对于 FCFS 来说,这过程非常直观——总是选择最早到达的任务作为下个要执行的目标。因此,动作实际上是个固定的策略而非自由变量。 3. **奖励函数的设计** 奖励函数需反映系统性能指标,比如吞吐率最大化或者平均等待时间最小化等问题。考虑到 FCFS 的特性倾向于延长较短任务的完成周期而偏向长时间运行的大规模作业,所以在设定奖惩机制时应当特别注意平衡不同类型请求之间的差异影响。 4. **仿真平台搭建** 利用 Python 编程语言配合 Gym 工具包创建自定义环境实例,并集成上述各要素形成完整的实验框架。下面给出段示例代码展示如何初始化这样个场景设置: ```python import gym from gym import spaces class FCFSEnv(gym.Env): def __init__(self): super(FCFSEnv, self).__init__() # 定义观察空间 (假设最大有50个任务) self.observation_space = spaces.Box(low=0, high=float('inf'), shape=(50,), dtype=np.float32) # 对于FCFS而言,无需额外的动作维度 self.action_space = spaces.Discrete(1) def step(self, action): reward = calculate_reward_based_on_current_state() done = check_if_all_tasks_are_completed_or_timeout_occurs() next_observation = update_task_queue_and_generate_new_observations() return next_observation, reward, done, {} def reset(self): initial_state = generate_initial_set_of_jobs_with_arrival_times_execution_requirements() return initial_state def calculate_reward_based_on_current_state(): pass # 实现具体的奖励逻辑 def check_if_all_tasks_are_completed_or_timeout_occurs(): pass # 检查终止条件 def update_task_queue_and_generate_new_observations(): pass # 更新队列并生成新的观测值 ``` 此脚本片段展示了基本结构但省略了些细节部分以便读者自行补充完善。值得注意的是,尽管这里采用离散型动作用户也可以扩展至连续控制情形下调整参数配置从而适应更多元的应用场合[^4]。 --- #### 案例分析 ##### 场景:单机多任务 CPU 资源分配 在个理想化的单处理器架构上测试不同输入模式下的表现效果。假设有 N 个独立进程依次提交给系统,则按照它们各自的抵达次序逐安排占用计算单元直至结束为止。期间记录各项统计数值如响应延迟总和、周转时刻均值等等来进行定量评估比较。 ##### 场景二:分布式集群中的批量作业管理 当面对大规模数据中心内部署众多节点互联组成的网络拓扑图谱之时,同样能够运用类似的原理指导全局范围内的资源配置流程。不过此时除了单纯遵循先后顺序之外还需要兼顾地理分布因素的影响以减少通信成本提升整体效率水平[^2]。 --- #### 总结说明 虽然 FCFS 并不是最先进的解决方案选项之,但它确实提供了个良好的起点让初学者理解基础理论概念并通过实践加深认识程度。与此同时还可以进步探索改进版本诸如 Shortest Job Next(SJN), Round Robin(RR) 或者 Multilevel Feedback Queue(MLFQ)等形式来满足特定条件下更加严格的要求标准[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值