目标是运筹优化算法工程师的学习计划

对运筹优化相关工作的理解

从目前我的理解出发,运筹优化算法工程师的工作内容是对实际中的运筹或者说优化问题进行建模和求解。因此这项工作对建模能力、代码能力、算法能力都有一定要求,以下也是从这三个方面对研究生的学习进行规划:

建模

能力培养

最直接的建模能力的培养来源于平时对论文的阅读,在问题描述后先不直接看作者建立的模型,而是想象一下自己会如何对该问题进行建模。如何选择目标函数,并设置相应的约束。有时间的话最好自己先动手写一写;之后就参照论文中的模型和约束,看看有什么比较不常见的约束以及其作用,甚至还可以试图找一找模型中可能得缺陷和错误。

从就业的角度出发,争取明年参加1-2个数学建模比赛并且拿到奖项。

代码

代码主要是用C++ 写启发式算法,用python进行数据清洗,调用gurobi求解器或者写精确解算法。python的pandas、numpy等各种库都要熟练使用,还需要掌握一些进阶的用法,比如lamda表达式等。考虑到机器学习的普遍,熟悉一些机器学习的模型和包也是很有必要的,比如torch、tensorflow、sklearn和一些AutoML的包。

当然,数据结构是基础知识,要熟练运用python和C++建立各种数据结构,在各种场景中选择合适的数据结构便于数据的存储和操作。因此对应的学习计划就是学习数据结构的知识、代码实现和应用场景。代码能力可以看一看leetcode的题目,看人家是如何用各种巧妙的方法解决题目的,同时也算是为面大厂准备八股文。

算法

算法大致能分为启发式算法和精确解算法两类。当然这是运筹算法的范畴,机器学习算法另算。启发式算法大概的框架是类似的,一类是以local search为基础的,在一个解的基础上对该解进行改进;另一种是以evaluation为基础的,会有一组解,然后对一组解进行改进。
精确解本质上就是一种聪明的穷举法,尽各种方法去对解空间进行cut,缩小解空间的搜索范围。

在业界,目前凭感觉认为启发式可能应用得更加广泛,因为精确解求解大规模的NP-hard问题是很难在有限时间内求出最优解的,此时运算相同的时间启发式的结果应该会优于精确解。但是启发式算法的门槛比较低,掌握精确解算法的设计和实现肯定会是一个加分项。

对算法的学习可以先总体过一遍数据魔术师中介绍的各种优化算法,了解它们的框架、难点、优缺点和适用场景。然后在自己的论文中进行实践和验证。精确解可能要先从做精确解算法的论文入手,有机会可以在自己的论文中进行尝试,最低也要复现1-2篇精确解算法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值