作为算法工程师里的一小撮,相比机器学习、人工智能、视觉等算法工程师,运筹优化算法工程师在国内算是又小众又新鲜。作为近几年才慢慢进入大众视野的岗位,人们对其的认知和了解相对其他AI领域,还是较少的。比如我,其实也不清楚到底运筹优化的定位在哪。所以在这里和自己探讨下,看看如何成为一名更好的、合格的运筹优化算法工程师,给自己一个方向。如果有人不怕被坑,欢迎参考,当然更欢迎拍砖和补充。
引言
运筹学(operations research, OR)是研究如何为复杂的工程或者管理问题构建数学模型,以及如何分析模型以探索可能解决方案的一门学科。
这是运筹学,OR的定义,简而言之,作为一名OR人,解决的问题通常是通过三个步骤对现有场景或问题进行优化。
- 问题描述和建模
- 模型分析和数据分析
- 算法求解+应用
所以这么一看,OR确实不如机器学习、深度学习、计算机视觉等学科那么高大上和牛逼,所以不推荐大家学习。因为工资比前者差很多,HC也差很多。(日常劝退)
基本要求
基本要求是要健康,能加班。
之后是具体的一些要求:
- 学历:本科学历劝退,除非你特别优秀,不过这种就推荐去海外读个硕士或博士回来。企业的要求百分之90%以上都是硕士学历起。对博士十分热爱,而且竞争也很激烈,博士很多,海外名校博士也很多,所以学历不够要么劝退,要么改行,要么继续深造。
- 专业:涉及运筹学的专业很多,包括并不限于应用数学,运筹学,计算机,工业工程,系统工程,物流工程,管理学等等。基本学习的课程包括运筹学,最优化理论,数值分析,线性代数,统计学,概率论,高数等等,对数学要求高。
- 编程能力:最重要,语言常用的有C/C++,Java,Python,Lua等,推荐C/C++,因为快。Python的话建议一定要掌握,完成日常业务和数据分析没问题,但是在工程化追求极致速度的算法的场景下就不推荐了。
- 建模和求解能力:cplex、gurobi等求解器必须会用一个,掌握建模三段论,熟悉基本的模型,能建初各种复杂约束,掌握常用线性化技巧。
- 数据处理和分析能力:掌握基本数据分析和处理能力,通常用Python做,也就是说,基本的机器学习方法和统计学方法和流程要会,因为模型的输入数据需要你处理和分析。
- 搜索能力:能在短时间内找到项目问题的相关资料和参考文献,筛选出有用的、好用的、靠谱的资料,然后复现,修改,比较,对比。
- 英语能力:至关重要
- 沟通能力
- 理解能力和知识量
拓展需求
- 丰富的项目经验
- 发表过顶级期刊
- 发表过垃圾期刊
- 丰富的大厂经验
- 高star的开源代码
- 优秀的比赛成绩
- 计算机专业背景
- 算法与数据结构精通
- 机器学习,强化学习,深度学习等
仿真验证
仿真真的很重要!
由于现实世界存在的不确定性、非线性模型、无法建模的问题、鲁棒性检验等,导致我们无法百分百确认效果。而如果能构建出一个与真实业务场景高度拟合的仿真世界,来测试我们的解决方案,简直完美。等于提前进行了中试的过程。而计算机仿真世界成本低,无危险,不干扰生产,可模拟各种参数情况,可运行无数次等等,给了我们打动领导和说服业务人员的最基本的武器。
- 仿真通常需要如下技能:
- 离散事件仿真原理
- 仿真的语言与框架,仿真软件就算了
- 3D可视化
- 数据输出和数据分析
常见的业务场景
传统运输领域
VRP 车辆路径问题
- 城市配送
- 快递配送
- 零担物流
PDP pickup and delivery problem 取送问题
- 外卖配送
- 同城闪送
- 跑腿
- 滴滴专车
DARP dial-a-ride problem
- 滴滴拼车
- 共享公交
share bike rebalance problem
- 共享单车调度
- 投放
- 停车点选址
TSP 旅行商问题
- 客户拜访
- 门店巡查
facilitity location problem 设施选址问题
- 门店选址
- 仓库选址
hub location problem 枢纽选址问题
- 轴辐式网络枢纽选址和分配
工业生产领域
2D/3D loading problem and bin packing problem 装箱问题
- 货物装箱
- 货物打包
cut stock 下料问题
- 原材料分割
- 磁盘打包
Job schedule,work shop
- 流水线生产调度
- 排班排产
航空领域
- ARP 航班恢复
- 航班计划
- crew assignment
仓库
- 选址
- layout 设计
- 货位分配
- agv,rgv调度
- 拣货调度的
- 库存控制和管理
- 补货管理
零售
dynamic price 动态定价
revenue management 收益管理
产品设计,广告管理
其他
常用的求解方法
枚举法 brute
求解器
- gurobi
- cplex
Construction Heuristics
column generation
拉格朗日乘子法
Benders decomposition
BP BCP
VNS
LNS/ALNS
三个维度
数据分析
找数据,辅助决策,指标
机器学习
预测,降低不确定性,发现规律
运筹优化
工具
Git
- 会使用git管理代码版本,实现备份、迭代与他人协作开发的能力
- 推荐廖雪峰老师的课程
SCI-hub
- 下载英文文献的神器,世界变得更美好的重要贡献者。
- 请点击SCIHUB
PPT
- 及其重要的工具,海量技巧值得玩味。
Markdown
- 方便快捷,一般用有道云笔记或印象笔记
- 本文也是用Markdown写的,可以自己在csdn用Markdown格式试着写一篇
Anaconda
- 解决python相关的需求
Notepad++
- 好用的文本编辑器
公众号
数据魔法师
- 华科的秦虎教授维护的,学习算法的良心地方
运筹&帷幄
- 里面有一些信息吧,运筹偏少,AI挺多的
苦逼的物流专业如何找一份好工作?
物流作为苦逼专业,如何才能在竞争激烈的社会中脱颖而出,拿到高薪高福利和广阔的发展前景呢?这个问题时常让我陷入烦恼,毕竟房价这么贵,要恰饭的啦。
2020届秋招实录
焦虑,到了找工作的时候。来记录下找工作的历程吧。
目标薪水 10K-15K,第一份正式工作还是去大厂吧,我这么菜不知道能找到工作不
志愿
菜鸟,顺丰科技,华为,网易考拉,小米,京东,苏宁,
便利蜂:待面试
美的IT:有内推,有联系,基本稳拿,不知道工资
福佑卡车:没有校招,之后投投
春秋航空:不知道招聘计划
快仓科技:未知
物流行业分析
物流行业里面,能支持我买房梦想的企业还真是不多,适合我们的坑就更少了,所以必须搜集足够多的信息,方便我们精准打击。
阿里巴巴
马云爸爸的淘宝王国,其实对国内物流网络的建设有着不可磨灭的功劳。毕竟在十多年前,寄一个包裹,可以慢,可以贵,可以不靠谱。现在却方便快捷到不行,旗下菜鸟也贡献了许多创新和实干,我们的物流体验越来越好。
旗下的,可以考虑的企业包括:
- 菜鸟
- 盒马鲜生
- 饿了么
- 阿里云
当然,以上都是我不考虑的了,因为去不了,投个暑期实习都没过,所以就这样吧。博士,海归,C9应该是优先的吧,可以放心大胆得投递简历。
顺丰
顺丰作为国内快递业巨头,当然是咱们物流人最好的归宿之一。万幸,最近顺丰也在着力打造新物流体系,简直是全村的希望。
- 顺丰科技
- 顺丰同城
- 丰巢
航空公司
- 春秋航空
- 四川航空
华为
滴滴
京东
-
京东达达到家
职责描述: -
深入研究派单、订单合并、路径规划等领域的算法问题,并从效率、公平性等多个维度对相关算法进行优化。
-
基于海量数据挖掘业务中的真实需求和痛点。使用人工智能/机器学习/运筹学等手段,优化众包物流配送平台的成本和效率。
职位要求:
-
计算机/数学/运筹学/经济学 等相关专业本科以上学历
-
扎实的机器学习/数据挖掘或最优化理论基础,有相关领域的算法实践经验。
-
熟悉一门常用的编程语言,如Java/C++/python等,有一定的工程能力。
-
对算法有浓厚的兴趣,对世界充满好奇心
-
自我驱动、结果导向,强烈的责任心。
-
符合以下任一条件会有加分:
-
熟悉VRP、TSP等路径规划问题和优化算法
-
有数学建模的相关经验
-
有强化学习的相关经验
-
四通一达
网易
岗位描述
1.负责考拉供应链相关运筹优化工作,包括但不限于仓网规划,调拨规划,仓内包材优化,生产波次优化、库存管理等等实际业务问题;
2.通过优化建模解决供应链实际问题,提升供应链效率,降低成本;
3.调研业内前言的优化问题解决方案,应用到考拉业务中,并持续进行优化。
岗位要求
1.计算机、应用数学、运筹学、工业工程、统计学或相关专业本科及以上学历;
2.熟悉运筹学领域的算法理论和应用,包括LP,DP,MIP,启发式算法,SA,GA等;
3.大型优化项目经验或者数学建模竞赛获奖经历优先;
4.较强编程能力,熟练掌握C、C++、JAVA、Python至少一门语言;
5.零售或供应链从业经历或项目经验优先;
6.有良好的沟通表达和团队合作能力,有激情。
新独角兽
美菜网
货拉拉
工作职责:
1.深入理解业务,研究订单分派、路径规划、智能调度、动态定价等领域的算法问题,并从效率、公平性等多个维度对相关算法进行优化。
2.基于海量数据挖掘业务场景中的真实需求和痛点,创新的利用机器学习/深度学习/运筹学手段,创建与实现解决实际问题的模型。应用领域包括但不限于反欺诈模型、图像识别、语音识别、NLP、知识图谱、风险控制、推荐系统。
任职资格:
- 计算机/数学/统计学/运筹学等相关专业硕士或以上学历,有3年以上相关工作经验。有扎实的数据结构和算法基础,有较好的数学功底。
- 精通机器学习、深度学习、最优化、运筹学相关理论,有相关领域的算法实践经验。
- 编程基础扎实,熟悉使用一门常用的编程语言,包括但不限于:C/C++、Java、Python、Scala、Go。熟悉Linux开发环境。
- 熟练掌握海量数据处理技术,有使用Hadoop/Hive/Spark分析海量数据的能力和经验。至少掌握一种常见的深度学习开源框架。
- 关注业界前沿技术,洞悉人工智能国际会议研究动态,不断提升自己在机器学习、运筹优化、机制设计、数理统计等方向的能力。
- 自我驱动、结果导向、强烈的责任心。
- 符合以下任一条件会有加分:
- 熟悉VRP、TSP等路径规划问题和优化算法
- 有分布式机器学习、强化学习的相关经验
- 在人工智能相关顶级会议有论文发表者
- 编程能力杰出者