2018华为软件精英挑战赛-决赛赛题

以下描述部分主要是相对复赛赛题变化点,其他描述和条件均一致:
通用性描述变化点:
物理服务器: 物理服务器类型依然为3种:通用型(General)、计算加强型(High-Performance)和内存加强型(Large-Memory),但每种不同类型的服务器具有不同的价格,每启动一台新的服务器,都要开销相应的部署成本。
虚拟机规格: 不同规格的虚拟机通常具有不同的租赁价格,假设都只需要考虑按月租赁的场景,并且不需要考虑租赁时间的长短(月数)。此外,假设CPU大于等于16且CPU与内存(GB)比为1:1的虚拟机只能放置在计算加强型(High-Performance)的物理服务器上,而内存大于等于32GB且内存(GB)与CPU数量比大于等于4:1的虚拟机只能放置在内存加强型(Large-Memory)的物理服务器上,其他类型的虚拟机不做要求。
比赛程序内容: 请你设计一个程序能够精确预测虚拟机的分布并寻找最大利润率的虚拟机部署方案:在保证预测精确度的前提下,使得云平台的利润率最大化。
比赛胜负规则变化点:
比较参赛者程序输出的预测精度与利润率的乘积,较大者胜出。如果出现得分相同的情况,则比较程序运行时间,时间短者胜出。若运行时间也相同,则根据提交时间先后来区分排名。若输出结果不满足约束条件,得分为零。 
(备注:销售利润率=(总收入-总成本)/总收入)
补充说明变化点:
1. 如上要求特定类型的虚拟机规格必须放置到特定类型的物理服务器上,但不要求某种类型的物理服务器只能放置特定类型的虚拟机,即任何一台物理服务器存在资源碎片均可通过填补任何一个类型的虚拟机来减少冗余;
2. 决赛每个测试用例的训练数据集最多不超过10万条;
3. 程序运行时间要求不超过120s(单个用例);
4. 需要预测的虚拟机规格类型扩展到以下24种:
flavor1  1  1024
flavor2  1  2048
flavor3  1  4096
flavor4  2  2048
flavor5  2  4096
flavor6  2  8192
flavor7  4  4096
flavor8  4  8192
flavor9  4  16384
flavor10  8  8192
flavor11  8  16384
flavor12  8  32768
flavor13  16  16384
flavor14  16  32768
flavor15  16  65536
flavor16  32  32768
flavor17  32  65536
flavor18  32  131072
flavor19  1  8192
flavor20  2  16384
flavor21  4  32768
flavor22  8  65536
flavor23  16  131072
flavor24  32  262144
备注:flavor名称 CPU核数 内存大小(MB)
程序输入与输出变化点:
输入文件格式
程序输入为一个以空格分隔的文本文件,文件每行以换行符(’\r\n’)为结尾。
文件格式为:
物理服务器类型数量(默认为3)
类型名称1 物理服务器CPU核数 内存大小(GB) 硬盘大小(GB) 价格(万元)
类型名称2 物理服务器CPU核数 内存大小(GB) 硬盘大小(GB) 价格(万元)
类型名称3 物理服务器CPU核数 内存大小(GB) 硬盘大小(GB) 价格(万元)
(空行)
虚拟机规格数量
虚拟机规格名称1 CPU核数 内存大小(MB) 租赁价格(元)
虚拟机规格名称2 CPU核数 内存大小(MB) 租赁价格(元)
。。。(如上虚拟机规格信息若干行)
(空行)
预测开始时间
预测结束时间(时间跨度单位为:天)
(文件结束)
示例:
3
General  56  128  1200  3.49
Large-Memory  84  256  2400  4.36
High-Performance  112  192  3600  5.45
(备注:物理服务器类型名称不超过16个字符,CPU核数为不超过3位的整数,内存大小为不超过3位的整数,硬盘大小为不超过4位的整数,价格为浮点数,保留到小数点后两位。1GB=1024MB)
3
flavor5  2  4096  190.20
flavor10  8  8192  640.30
flavor15  16  65536  2380.50
(备注:虚拟机规格名称最大不超过10位字符,CPU字段最大不超过两位字符,内存字段最大不超过6位字符,价格为浮点数,保留到小数点后两位。)
2017-01-09 00:00:00
2017-01-15 23:59:59 //注:即7天的时间跨度
(备注:日期与具体时间之间为空格符。需要预测的时间跨度为1~4个星期,开始预测时间紧接着训练数据结束时间,每轮训练数据集是延续并逐步增加的,具体见决赛赛制说明。)
(文件结束)
输出文件格式
程序输出为一个以空格分隔的文本文件,文件每行以换行符(’\n’)为结尾。
文件格式为:
预测的虚拟机总数
虚拟机规格名称1 虚拟机个数
虚拟机规格名称2 虚拟机个数
……(如上预测的不同规格虚拟机名称及数量若干行)
(空行)
物理服务器类型名称1 预测所需数量
名称1-服务器1 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
名称1-服务器2 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
……(如上每种类型物理服务器对应放置每种虚拟机规格数量若干行)
(空行)
物理服务器类型名称2 预测所需数量
名称2-服务器1 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
名称2-服务器2 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
……(如上每种类型物理服务器对应放置每种虚拟机规格数量若干行)
(空行)
物理服务器类型名称3 预测所需数量
名称3-服务器1 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
名称3-服务器2 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……
……(如上每种类型物理服务器对应放置每种虚拟机规格数量若干行)
(文件结束)
(备注:物理服务器名称可用“类型名称-阿拉伯数字”表示,如General-1)
示例:
6
flavor5  3
flavor10  2
flavor15  1
General  2
General-1  flavor5  2
General-2  flavor5  1  flavor10  1
Large-Memory  1
Large-Memory-1  flavor10  1
High-Performance  1
High-Performance-1  flavor15  1
(备注:每个字段之间用空格隔开即可。如果输出结果中某种类型的物理服务器所需个数为0,则不需要写出来,例如“General 0”这种情况可以直接省略不写。)
单个用例评分公式变化点:
:表示第i种虚拟机规格的实际数量;;
:表示预测出来的第i种虚拟机规格数量;
: 表示虚拟机规格的集合;
: 表示预测到的第v个虚拟机的租赁价格;
: 表示所放置的第h个物理主机的部署成本;
: 表示预测出来的虚拟机集合;
: 表示所需要的物理主机集合。
(备注:由于这里统计的只是虚拟机按月租赁的价格,并非买断价格,假设每台物理服务器的寿命为50个月,即计算总部署成本的时候应为物理服务器的总价格乘以2%。单个用例满分为100分。注意如果出现利润率小于等于0的情况,均为0分。如以上例子中,利润率计算结果应为:  )
运行环境
开发语言支持:C/C++、Java 7/8、Python 2.7
CPU:Intel(R) Xeon(R) CPU E5-2680 V4 @ 2.40GHz
内存:2G
CPU核数:单核
编译器:gcc 4.8.4、java 1.8、python 2.7
操作系统:Ubuntu 14.04.4 LTS 64位,内核版本 Linux version 4.4.0-31-generic
SDK:为方便选手做题,分别提供c++(兼容c)、Java、Python的SDK包供参考(见DevCloud项目),详细描述信息请见SDK目录下的readme.txt。

你可能感兴趣的:(CodeCraft)