作为算法工程师里的一小撮,相比机器学习、人工智能、视觉等算法工程师,运筹优化算法工程师在国内算是又小众又新鲜。作为近几年才慢慢进入大众视野的岗位,人们对其的认知和了解相对其他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
- 求解器:1)gurobi 2)cplex 3)SCIP 等 致敬国产求解器开发者!
- BB,BC,BP,BCP
- column generation
- 拉格朗日乘子法
- Benders decomposition
启发式
- Construction Heuristics
- Local Search
- Metaheuristics:single trajectory & popluation based
全栈:五个维度
- 数据分析:找数据,辅助决策,指标
- 机器学习:预测,降低不确定性,发现规律
- 运筹优化:建立模型,寻找优化点,给出更好的解
- 仿真建模:验证,实验,测试
- 强化学习:online场景的新方向
工具
Git
- 会使用git管理代码版本,实现备份、迭代与他人协作开发的能力
- 推荐廖雪峰老师的课程
SCI-hub
- 下载英文文献的神器,世界变得更美好的重要贡献者。
- 请点击SCIHUB
PPT
- 及其重要的工具,海量技巧值得玩味。
Markdown
- 方便快捷,一般用有道云笔记或印象笔记
- 本文也是用Markdown写的,可以自己在csdn用Markdown格式试着写一篇
Anaconda
- 解决python相关的需求
Notepad++
- 好用的文本编辑器
公众号
- 数据魔法师:华科的秦虎教授团队维护的,学习算法的良心地方,技术实力超强,每期的学术报告都是知识的海洋
- 航音绕梁:同济梁哲教授团队维护,航空OR最强,yyds
- 东南数智港:东南薛巍立教授团队维护,品类管理,强化学习,论文复现,我的珍藏
- 运筹&帷幄:有一些信息资讯,运筹偏少,AI挺多的,有庞大的社群维护
求职公司分析
阿里系
- 菜鸟
- 盒马
- 饿了么
- 阿里云
- MMC
快递系
- 顺丰科技
- 顺丰同城
- 丰巢
- 德邦
- 中通
航空系
- 春秋航空
- 四川航空
- 东方航空
- 悠桦林
- 派迩
互联网
- 滴滴
- 京东
- 字节跳动
- 网易
- 华为
新独角兽
- 美菜网
- 货拉拉
- 点我达
- 便利蜂
- 秒针系统
- 松果出行
- 钱大妈
- 喜茶
- 猿辅导