Giter VIP home page Giter VIP logo

zzp110 / actor-critic-based-resource-allocation-for-multimodal-optical-networks Goto Github PK

View Code? Open in Web Editor NEW

This project forked from boyuanyan/actor-critic-based-resource-allocation-for-multimodal-optical-networks

1.0 1.0 0.0 322 KB

Source code of 2018 GLOBECOM paper named "Actor-Critic-Based Resource Allocation for Multimodal Optical Networks"

Home Page: http://boyuanyan.com/papers/Actor-Critic-Based%20Resource%20Allocation%20for%20Multi-modal%20Optical%20Networks-0913-yby.pdf

License: GNU General Public License v3.0

Python 91.26% Shell 8.74%

actor-critic-based-resource-allocation-for-multimodal-optical-networks's Introduction

Please cite this paper if you want to develop something based on this repository in your publications

The Reinforcement Learning implementation of this project is forked from https://github.com/ikostrikov/pytorch-a2c-ppo-acktr. The two projects listed below are help to study RL.

https://github.com/openai/gym/wiki/Table-of-environments

https://github.com/openai/baselines-results/blob/master/acktr_ppo_acer_a2c_atari.ipynb

1. Parameters

在如下的参数设置中,ksp.sh得到的阻塞率在10%左右,一轮游戏的最终得分为5000分左右。

--net 6node.md --wave-num 10 --rou 8 --miu 300 --max-iter 300 \
--k 1 --weight None --workers 4 --steps 2700

2. reward

这种奖惩机制的结果不理想,因此做了更改。相关结果可见results/before20180306 见Service.py。 必须保证ARRIVAL_OP_OT的值和其他reward值不一样 这个失败的实现代码的tag是v0.1。没有将路由信息的k个channel放进去。

|state|变量名(Service.py)|action|reward| |:----|:-----|:-----|:-----| |该时间点没有业务到达,可能有业务离去(取决于事件排序)| NOARRIVAL_NO|No-Action|1| |该时间点没有业务到达,可能有业务离去(取决于事件排序)| NOARRIVAL_OT|选择其他RW选项|0| |该时间点有业务到达(可能同时有业务离去),但是没有可达RW选项|ARRIVAL_NOOP_NO|No-Action|1| |该时间点有业务到达(可能同时有业务离去),但是没有可达RW选项|ARRIVAL_NOOP_OT|选择其他RW选项|0| |该时间点有业务到达(可能同时有业务离去),并且有可达RW选项|ARRIVAL_OP_OT|选择可达RW选项|10| |该时间点有业务到达(可能同时有业务离去),并且有可达RW选项|ARRIVAL_OP_NO|选择不可达RW或者No-Action|-5|

上述是之前做的一次尝试,结果非常不好,因此做了得分调整。引入了参数控制:

state 变量名(Service.py) action reward
该时间点没有业务到达,可能有业务离去(取决于事件排序) NOARRIVAL_NO No-Action 1
该时间点没有业务到达,可能有业务离去(取决于事件排序) NOARRIVAL_OT 选择其他RW选项 -1
该时间点有业务到达(可能同时有业务离去),但是没有可达RW选项 ARRIVAL_NOOP_NO No-Action args.punish
该时间点有业务到达(可能同时有业务离去),但是没有可达RW选项 ARRIVAL_NOOP_OT 选择其他RW选项 args.punish
该时间点有业务到达(可能同时有业务离去),并且有可达RW选项 ARRIVAL_OP_OT 选择可达RW选项 args.reward
该时间点有业务到达(可能同时有业务离去),并且有可达RW选项 ARRIVAL_OP_NO 选择不可达RW或者No-Action args.punish

3. 情况处理

  1. 某时间点有一个业务到达和一条及以上业务离去,则根据事件排序结果, 先处理排在到达业务之前的离去业务,然后返回到达业务的observation
  2. 某时间点只有业务离去,则直接进行业务离去处理,然后返回业务离去 之后的observation
  3. 如果执行完某个行为以后,返回done=True,即本轮游戏结束。则自动reset(),重新开启一局 游戏,并且返回本次游戏的obs, reward,和done=True同时返回。由于done的作用仅仅是计算 return和reward,所以一次的误差不会带来什么影响。
  4. 转成np.ndarray类型的图像CHW矩阵的时候,做了灰度图的归一化处理。
  5. 如果处理的到达业务是最后一个到达业务的话,则本游戏直接结束。因为后续只能是业务释放
  6. 默认将路由信息也作为k个channel放进去了,相关方法可见draw.py文件。

4. 优化想法(未完成的事情)

  1. 把实时算出来的路由图像也加进去算作一个channel
  2. 可以考虑把路由图像部分作为网络另一支路。
  3. 现在是按照时间线一步一步前进,这样导致batch样本里面真正可用的只占1.0/args.rou, 是否应该修改成每一步都会直接推进到下一个业务到来的时刻?

已经实现了。增加了--step-over的选项,one_time表示按照时间序列推进,one_service表示 按照事件序列推进。

  1. 增加模型验证的程序,其中注意act方法中的deterministic的取值,应该为True吧。
  2. visdom可视化
  3. 多机多卡的加速
  4. 用FC网络进行横向结果对比
  5. 学习率调整
  6. 把模型封装进gym,可以利用gym自带的API进行可视化
  7. on-policy和off-policy算法增加进去(ppo,acktr)
  8. 如何实现路径计算
  9. 核心问题 :如果上述结果比较理想的话,下一步要面临的直接问题就是40,80,362乃至更多channels的分配问题
  10. 将5wave组合成10wave,小模型组合大模型
  11. 尽快实现更加robust的算法,比如PPO,ACKTR以及LSTM扩展

5. 分析与验证

  1. 1channel_access_check 证明了GRWA具有判断网络可达性的能力
  2. RL的action space,不同源宿下对应的路由是不一样的,这种隐性的逻辑尚未验证深度学习能否掌握
  3. 学习得到的模型是否具备学习路由算法的能力,需要去探索以前的神经网络在这方面的应用。
  4. 得到在指定rou/miu情况下,指定wave_num的指定光网络模型对应的网络结构以后,需要探究以下几个方面的问题:
    1. 该结构对于不同的rou/miu情况,是否仍然work
    2. 该结构是否可以作为更多wave_num的更大模型的pretrain,或者是teacher网络,以降低更大光网络模型训练所需要的时间
    3. 该结构是否考虑到时序,不同的num_steps下结果会有什么不一样,与LSTM的对比呢?

6. 对比实验

  1. 使用FC网络,对最小网络表达进行学习。需要对step函数进行修改
  2. 增加ksp中计算出来的路由图像的channels,以此来明确给出路由信息。
  3. 能否直接输出网络路由,利用object detection或者landmark的相关技术。


7. 踩过的坑

  1. numpy中的布尔类型默认是numpy.bool_,这种类型不能使用“is True”这样的语句来判断真值。 要使用bool()做类型转换。
  2. np.random.randint太坑了,使用Process多进程同时启动生成的随机数完全一样,搞得我还以为 是所有的进程共享一个游戏内存呢。改成了random模块的randint
  3. 使用graphviz生成图像然后用PIL.Image读入进行处理的方式,有以下两个弊端,目前并没有 比较可行的解决方案:
    1. 磁盘频繁读写造成效率低下,并且对磁盘的损伤比较大,很容易出现错误
    2. 不同帧图像覆盖的是同名文件,可能会出现图像文件还没有刷新好,就已经被读入的错误

作者已经回复了,详情可见:xflr6/graphviz#49 (comment) 现在直接在内存中做转换,已经在RwaNet.py中实现了。

  1. 使用graphviz生成的拓扑图像,在neato布局方式下,有可能会不一样,如下图所示。而且我在生成图像 的时候,并没有给节点做标记,这可能是目前训练不成功的重要原因之一。

  1. 必须将模型设置为eval模式,才能够正确进行模型效果评估。因为我都是用了BN。
  2. 在写网络拓扑的md的时候,不要加空格,否则会读到带空格的节点名称,导致无法匹配
  3. 在解析节点的时候,不要用.startswith方法,因为节点数大于10的拓扑,会出现多匹配的情况
  4. argparse在解析bool参数的时候,只要该参数在脚本中存在,则无论指定False或者True,都判定为True

8. 基础模型

该工程的实现源自于ikostrikov 共享的利用pytorch实现A2C、PPO、ACKTR算法的工程,我fork到 自己的仓库中,加入了一些测试结果 等等辅助理解的内容。

PongNoFrameskip-v4

模型有效性的判断是通过PongNoFrameskip-v4这个游戏进行评估的。 该游戏大体是玩乒乓球,在gym中没有找到名字对应的游戏,但是应该是 https://gym.openai.com/envs/Pong-v0/ 里面提到的那样。

参数名 参数取值 注释
action space Discrete(6) 每隔k帧进行一次action选择,k为{2,3,4}的均匀分布
observation space Box(210, 160, 3) HWC模式
reward range (-inf, inf)

actor-critic-based-resource-allocation-for-multimodal-optical-networks's People

Contributors

boyuanyan avatar

Stargazers

 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.