智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结
【以前的文章】最后一公里极速配送 - 阿里云算法大赛总结
总结一下新的教训
1.由于都是NP难题,获得最优解用常规的方法非常困难,对于不是算法科班出身的人来说,首先应该到网络上寻找一下论文,是否有一些好的经验。
2.保持平常心,这种比赛获奖很困难,生活还是要和往常一样,只是将空余的时间给做比赛
3.每一个小功能,小函数,尽可能做一些简单的单元测试,这种题目往往代码最后非常复杂,难以调试,不做单元测试,可能以后调试都很困难
4.熟悉使用语言的多线程工作方式,例如C#的多线程特点
5.寻找好的计算资源,尽量在多核CPU上运行
6.加入官方群,问题及时和官方讨论
7.利用晚上进行大规模的迭代测试和参数实验
8.中间结果保存,减少每次执行时间。
大家都是为了奖金去的(TOP10都有奖金),TOP17的名次,和自己实力符合。

另外这次全程使用VS CODE 和 NET CORE 2.0 写的代码,在公司的PC和家里的MAC上通过GIT无缝衔接,体验不错。
代码:https://github.com/magicdict/AIForAirline
赛题:https://tianchi.aliyun.com/competition/information.htm?raceId=231609
一个人做题目很有趣,但是组队也不错,有人愿意和我组队参加第二赛季吗?难度增加不少的。前三有奖金,当然如果没有奇迹,基本上拿不到奖金的。
附上以前比赛经验:
穷举部分应该最后加入
一般来说,算法题目总归缺少不了排列组合的尝试,但是如果过早的在算法中引入了排列组合的大规模计算,则每次代码运行时间会很长,非常浪费时间。这里可以有两个方案,第一,可以做一个系统配置项,是否启用排列组合的尝试;第二,可以将排列组合的强度也做成一个配置项。
所谓的排列组合的强度,就是算法的广度和深度的限制。例如背包问题,如果全部有10个元素,我进行全排列尝试,20个元素,则进行简单的贪婪算法。这里的10就可以认为是一个阈值,超过阈值的时候,考虑到时间成本,使用一般的算法。
保证每次运行结果都是符合题目要求的
在复杂的场景下,你的算法可能是非常优秀的,但是可能在一个很微小的点上,是不符合题目要求的。题目要求是最大的前提,如果违反题目要求,再好的算法都是不能被采纳的。所以务必检查每次的运行结果是否符合题目要求。
保证编码正确
有时候,一个想法是正确的,但是往往可能出现编码的错误,使得结果变坏。所以,必须保证你的代码和你的想法是一致的。如果出现你的想法使得你的运行结果变差的时候,不要先急着推翻你的想法,而是应该先看一下是不是你的代码有什么错误,没有真正反映出你的实际想法。
逻辑和阈值
在复杂的算法题目中,有时候我们喜欢用阈值来运行出不同结果,然后选择最优的结果。但是,如果可能的话,应该以统计等方式决定阈值。如果可能的话,应该有一个明确的逻辑,而不使用阈值。阈值没有泛用性,并且有时候由于不能测试每一个阈值的效果,容易出现局部最优解,而不是全局最优解
版本管理
不是每一个想法都会给结果带来正面的效果,有些改动可能不但没有效果,而且使得结果变坏,我们需要一个版本管理的概念,将不好的结果及时回滚到原来的状态。有时候,两个想法可能被同事加入到代码中,并且两个想法独立使用和一起使用效果也不同,这个时候更加需要版本管理工具了。建议使用Git做版本管理工具,可以自由的添加或者删减不同的想法。
自动测试 和 电源管理
这次没有准备自动测试的代码,正确的做法是,白天进行编码工作,晚上对于阈值,各种想法的排列组合的效果,进行自动测试。
在自动测试的时候,请注意电源管理的设定,需要看一下是否设定了休眠,如果设定了休眠状态,基本上什么都运行不了了。
对于每次自动测试的结果,都必须保留下来,作为算法的评价依据。
中间指标 和 数据分析
在最终目标之外,还需要订立一些其他指标来判断算法的好坏。
整个最终结果往往是由多种因素决定的,如果将这些因素的量化结果也打印出来,对于这些指标进行分析,往往可以找到优化点。
有一些题目,在写算法之前,可以将题目中给定的数据集进行一些分析,总结出数据集的特征,然后针对这些特征选择算法,也是一个很重要的步骤。
从答案中找问题
很多算法的最终结果可能是一些调度计划和分配方案。仔细观察这些结果,找到一些明显可以优化的点,这也是提高算法结果的途径。
从算法执行结果这个答案中寻找你的算法中存在的问题,是一条很有用的途径
智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结的更多相关文章
- 新一代视频AI服务 —— 阿里云智能视觉重磅发布
3月27日下午,第51期阿里云产品发布会-智能视觉产品隆重发布,本次产品发布会首次面向全网用户深入的解读了智能视觉的前世今生. 行业背景 随着人工智能的技术不断成熟,AI逐渐在各行业内落地.在新零售领 ...
- 面向视频的全新AI架构 —— 阿里云智能视觉技术全解
我们都知道,AI技术正在以可见的速度被应用于各行各业,然而绝大部分业务场景想应用AI技术,都需要算法工程师根据自身业务的标注数据,来进行单独训练,才能打磨出合适的AI模型.如此一来,如何以最低的门槛和 ...
- Maven项目添加阿里云HBase依赖之后第一行才出现红叉报错“Missing artifact jdk.tools:jdk.tools:jar:1.6”的解决办法
首先是从阿里云上下载了一个样例项目"hbase-demo",然后用eclipse打开,此时eclipse会去下载aliyun.hbase依赖. 等待一段时间后,pom.xml却报错 ...
- 《阿里云天池大赛赛题解析》——O2O优惠卷预测
赛事链接:https://tianchi.aliyun.com/competition/entrance/231593/introduction?spm=5176.12281925.0.0.7e157 ...
- 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!
摘要: 开发者分会场致力于帮助开发者学习了解阿里云最新技术,为开发者设计全方位的技术成长与进阶之路. 2019阿里云云上Hi购季活动已经于2月25日正式开启,从已开放的活动页面来看,活动分为三个阶段: ...
- 高德携手阿里云发布“LBS云”,账户打通只是第一步
位置.游戏.视频,是公认的基于云计算的三大移动端应用方向.而今,LBS云有了更多进展,在高价值应用与云平台之间实现了资源打通和融合,高德迈出了实质性的一步. 高德地图副总裁郄建军(左)与阿里云业务总经 ...
- 阿里云centos+java环境搭建
目录 .准备 .安装jdk .安装tomcat .安装mysql 1.准备 购买阿里云服务器,我买的是Centos 6.5. 因为是linux,在window下管理我使用XManager,这个软件可以 ...
- 第一个入驻阿里云自营心选商城,如今它已经是营收过亿的SaaS独角兽
淘宝心选.网易严选.小米有品...越来越多的企业电商自有品牌围绕“低价好物”大做文章,用创新赢得了市场.作为To B从业人员,不由思考:C端的成功是否可以复制在B端? 伴随着互联网下半场的到来,云计算 ...
- Maven修改默认仓库为阿里云仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库. 第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加 ...
随机推荐
- 整理一些提高C#编程性能的技巧
1.使用StringBuilder代替使用string 连接符 "+" 说明:String类对象是不可变的(只读),一旦创建该对象,就不能修改该对象的值. 对象String对象的重 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一
前言 我从Quartz2.0开始使用,并对其进行了封装了界面,可以参考 http://www.cnblogs.com/ymnets/p/5065154.html 最近拿出来进行了优化,并升级到最新版, ...
- Angularjs在360兼容模式下取数据缓存问题解决办法
测试提了一个bug,在360浏览器兼容模式下,删除页面数据需要手动刷新浏览器才能看到最新的数据.首先要复现当时的问题,很容易就复现了,但是发现在360浏览器兼容模式下无法打开开发者工具.好在经过反复重 ...
- Vue 项目实战系列 (三)
我们继续前两节的开发.本节教程实现的效果如下: 效果很简单,但是实现起来却要用到Vue的很多知识,下面我们将一步一步的实现这个效果. 首先这些城市的信息都是从后台的server里面获取的,所以我们需要 ...
- 设置Ubuntu下adb 及 fastboot权限
以普通用户登录linux,然后运行adb devices会提示权限不够: List of devices attached ???????????? no permissions 这是因为 ...
- 持续集成篇-- SonarQube代码质量管理平台的配置与使用
样例视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 一.SonarQube的配置(前提,先用admin用 ...
- Chapter 6. H.264/MPEG4 Part10
本章节主要介绍有关H.264的内容 H.264有三种profile,分别是: Baseline Profile Main Profile Extended Profile 三者之间的关系和主要内容可以 ...
- 怎么用VBS脚本自动注册yy娱乐的账号
set WshShell=WScript.CreateObject("WScript.Shell") Const user = "hugetech2" Cons ...
- Resetting Frame Animation
最近在做个小项目的时候,需要用到帧动画.对应着某种状态,该动画可以停止和再次播放.我们知道,通过函数 someAnimObj.start() someAnimObj.stop() 可以很容易地实现 ...
- Linux系统网卡设置
由于做了虚拟机的克隆,发现克隆机和被克隆机的MAC地址相同了,下面我将要介绍一下linux中网卡的配置步骤,我使用的linux是CentOS release 6.9 (Final) 1.root用户编 ...