# Cloud Resource Scheduling
### 阿里巴巴天池算法竞赛(2018):[阿里巴巴全球调度算法大赛](https://tianchi.aliyun.com/competition/entrance/231663/introduction)
初赛题目:作为整数规划+列生成算法的尝试
## 赛题简单说明:
> 有一些instance,这些instance分为若干类,每一类的instance属性相同,需要将这些instance放到若干宿主机(machine)上,使得目标函数值最小,同时满足以下约束:
>* 每个实例都标明了CPU、memory、disk此3个维度的资源需求,其中CPU、memory以分时占用曲线的形式给出,在任意时刻,任意一个宿主机A上,所有部署在宿主机A上的实例的任意资源都不能超过宿主机A的该资源容量;
>* 另外还有P、M、PM三类资源,定义了应用实例的重要程度,任意一台宿主机上的部署数目不能超过该类型宿主机能够容纳的重要应用数目上限;
>* 混部集群时刻处于复杂的干扰环境中,所以我们需要满足一些规避干扰约束,一条规避干扰约束被描述为<APP_A, APP_B, k>,代表若一台宿主机上存在APP_A类型的实例,则最多能部署k个APP_B类型的实例。注意,k可能为0。APP_A和APP_B也可能代表同一个APP(e.g. <APP_A, APP_A, k>),代表同一台机器上最多可以部署的该APP的实例的数目.
> 目标函数: (用整数规划的时候对该目标函数进行了线性转换,近似拟合)
![](https://github.com/brucefeng10/CloudResourceScheduling/blob/master/resources/score-criteria.jpg)
## 数据观察(a版):
>* instance: 总共68219个,分为9338类,相同类的instance属性一样;
>* app: 总共9338个(类),每种类型app有若干个instance,总共68219个instance;
>* machine: 总共6000台,可分为大小两种型号,每种型号各一半;
## 测试结果:
>* 100个app,初始解用一个单位矩阵,使用一种类型的machine(大),迭代439次后子问题找不到reduced cost为负(<-1e-3)的列,原问题有整数解,总耗时1074s;实际上迭代次数达到100后,松弛主问题目标函数下降幅度就非常小了,下降曲线如下:
![](https://github.com/brucefeng10/CloudResourceScheduling/blob/master/resources/cost_descend_100.png)
>* 1000个app,初始解用一个单位矩阵,使用一种类型的machine(大),迭代555次(手动停止)reduced cost为-16,松弛主问题目标函数值从6844下降到4477(还在继续下降)
>* 1000个app,初始解用一个对角矩阵(每个machine使用率最大0.5),使用一种类型的machine(大),迭代100次花了46s,reduced cost为-0.39,松弛主问题目标函数值从551下降到472,整数解为1205,下降曲线如下:
![](https://github.com/brucefeng10/CloudResourceScheduling/blob/master/resources/cost_descend_1000.png)
>* 1000个app,考虑亲和约束,初始解用一个对角矩阵(每个machine使用率最大0.5),使用一种类型的machine(大),迭代100次花了239s,reduced cost为-0.41,整数解为1208;
>* 9338个app,初始解用一个对角矩阵(每个machine使用率最大0.5),使用一种类型的machine(大),迭代1000次花了20h,reduced cost为-0.47,松弛主问题目标函数值从5791下降到4752,整数解从13086减少到11722,下降曲线如下:
![](https://github.com/brucefeng10/CloudResourceScheduling/blob/master/resources/app9338_itr1000.png)
## 发现:
>* 有可能的话尽量选一个好一点的初始解,特别是大规模的问题,这样能更快得到好的解,会节省很多迭代时间;
>* 接上一条,针对该问题,建议先用启发式算法找个稍微好一点的解作为列生成的初始迭代解;
>* 此问题和cutting stock问题有个区别就是item非常多,但是每个item的需求量非常少,换句话说,列生成中生成的列使用率不高,即新生成的列在最终的整数解中只使用一次(相当于cutting stock中某个方案只切割一次),这意味着迭代次数会非常多。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
阿里巴巴全球调度算法大赛 - 整数规划(列生成算法).zip (26个子文件)
资料总结
greedy-rule_0630.py 41KB
tianchi_OR_20180616.py 18KB
resources
cost_descend_100.png 15KB
interference_1000.png 17KB
Inputdata
scheduling_preliminary_b_machine_resources_20180726.csv 178KB
scheduling_preliminary_app_interference_20180606.csv 681KB
scheduling_preliminary_b_app_interference_20180726.csv 644KB
scheduling_preliminary_submit_sample_20180606.csv 203B
scheduling_preliminary_machine_resources_20180606.csv 175KB
scheduling_preliminary_submit_sample_Data_A-Data_B_20180726.csv 381B
scheduling_preliminary_b_instance_deploy_20180726.csv 2.05MB
scheduling_preliminary_app_resources_20180606.csv 13.7MB
scheduling_preliminary_instance_deploy_20180606.csv 1.69MB
scheduling_preliminary_b_app_resources_20180726.csv 16MB
app9338_itr1000.png 20KB
score-criteria.jpg 266KB
cost_descend_1000.png 17KB
tianchiOR_CG_20180722.py 9KB
CG_model_20190826.py 15KB
CG_multi-raw_0803.py 13KB
model.mps 165KB
model_1000.mps 1.18MB
make_adjustment_0630.py 17KB
gurobi.log 1.79MB
test.py 2KB
README.md 4KB
共 26 条
- 1
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功