偏运筹方向的算法工程师是不是很少啊?

关注者
294
被浏览
180,108

10 个回答

说少确实是少,但是要看和什么比了,要是和目前大热的机器学习比,肯定偏运筹方向的算法工程师是很少了。不过也要明白一点就是目前连高中生都知道要去学人工智能,机器学习,所以偏机器学习的算法工程师的需求是很大,但是竞争也是同样的大。相对来说运筹优化还处于一个比较冷门的状态吧,而业界对运筹优化的重视程度也在逐渐提升,我觉得未来运筹的发展是会越来越好的。

下面主要列举一下国内招聘运筹优化算法工程师的公司:

1 美团:美团有外卖的配送,涉及订单的分配,路径优化,配送定价策略等等。

美团招聘

2 京东:京东目前物流这块做的很好,背后的技术支撑就是运筹优化。京东去年就推出了两个运筹优化方面的竞赛,其中一个是车辆路径规划问题,车辆路径规划问题是经典的组合优化问题,混合整数规划问题。

城市物流车辆调度竞赛

3 华为:华为在做的手机终端生产计划,制造一个手机有几百个零件,这几百个零件由几十个厂来生产,每个厂在未来的一段时间内每天生产哪种零件,生产多少,如何运输,如何管理物料等等。在学术界实际上是属于production planning的问题,本质上还是混合整数规划的问题。

【供应链】运筹学在华为诺亚方舟能干什么|附内推

还有华为2017年软件精英赛,涉及网络流和博弈论等内容,很多云服务器资源的调度的问题都是经典的优化问题 华为2017年软件精英赛

4 悠桦林:主要是做航空优化的,里边都是一群学历怪。

悠桦林(上海)--优化算法工程师

5 杉数科技:杉数是目前国内专做运筹学的龙头,同时杉数也聚焦于优化求解器的研发,LEAVES优化求解器是国内第一个运筹优化求解器。

【招聘】杉数科技--算法工程师

6 其它:上面列举的仅仅是一部分,还有阿里巴巴旗下的菜鸟物流,盒马生鲜,顺丰科技,滴滴出行等都需要很多运筹优化方面的算法工程师。

最后谈一点运筹优化在业界应用的感想吧。读博期间研究了很长时间运筹优化的理论,目前刚在业界顶级实验室实习了一段时间,其实目前学界和业界的gap还是比较大的,业界目前的做法基本上就是线性规划+简单的启发式规则去搞。线性规划在学术界来看是几十年前的东西了,目前来说建模完成导入solver一解就行了,所以目前来说不得不承认的是业界目前虽然在广泛应用运筹优化的东西,但是事实上可以不需要有很高深的运筹优化的背景也是可以的。有一些基本的数学基础和cs基础完全是可以胜任这样一个很基础的线性规划+简单启发式的模式的。

更多关于2019算法工程师招聘的分析可以参考

运筹优化算法工程师的从业人员远远少于其他方向的算法工程师,比如机器学习,CV,NLP,推荐系统等。这主要是因为,运筹岗对数学建模的能力要求比较高,而业界普遍存在,会编程的不太懂运筹建模,懂运筹建模的又不太会编程的情况。相应的,运筹岗的入门门槛就显得相对高一些,学习曲线更陡峭一些。

附上相关学习资料整理:

下面结合我本人的理解,以及业内大厂的招聘要求和面试经验,谈一谈运筹优化算法工程师,具体需要具备哪些能力。

运筹优化的应用场景,涉及供应链,交通,物流,生产调度,电力等。以物流与供应链领域为例,仓库选址,库存控制,货位规划,路径规划,人员排班,车辆调度,以及动态定价,库存控制等,都需要运筹优化算法工程师去建模,并设计算法求解。

求解优化模型的算法,大致可以分为两类,启发式算法和精确解算法。启发式算法侧重于计算机编程能力,精确解算法侧重于数学建模和模型分解能力。

大体上看,启发式算法主要分两类,一类以邻域搜索为中心,比如模拟退火,禁忌搜索,迭代局部搜索,变邻域搜索,自适应大邻域搜索等算法。另一类是群智能算法,比如遗传算法,蚁群算法,粒子群算法等。启发式算法,说白了就是有方向的穷举法,在计算资源有限的情况下,算法工程师需要根据问题场景和模型特点,选择合理的邻域结构或操作机制,在全局搜索能力和局部搜索能力之间做权衡。

精确解算法,通常用于求解混合整数规划模型。从最简单的分支定界,割平面,到列生成,benders分解,拉格朗日松弛,到最难的分支定价。除了分支定界和割平面有比较通用的算法框架外,其他高阶一些的精确解算法,完全需要根据问题特点来构建模型分解模型,与其说是算法,不如说是建模技巧更合适。人们通常说精确解算法比启发式算法要难,这种难不是难在编程,而是难在建模和数学推导。大厂招聘运筹优化算法工程师,一般把启发式算法当做基础能力,精确解算法作为加分项。

此外,运筹优化的算法工程师,也需要懂些基础的机器学习算法。因为在构建优化模型时,常常会涉及数据清洗,预测,算例仿真与分析等环节,这就涉及到分类,回归,降维,聚类等常见的机器学习应用场景。类似支持向量机,决策树,朴素贝叶斯,BP神经网路,以及稍微复杂一些的随机森林,GBDT,XGboost等算法,最好能够有一定程度的理解和应用。

最后说一下编程语言方面的要求。建议运筹优化算法工程师,懂一门常见的编译性语言(比如C++/Java),还有一门脚本语言(一般要求使用python)。C++/Java运行速度比较快,适合用来编写启发式算法,而Python可以用来调用cplex,gurobi等求解器实现精确解算法,或者是调用sklearn,tensorflow等机器学习包,实现相关功能。

以上就是我关于运筹优化算法工程师分享的内容,欢迎大家留言补充~