“夫运筹策帷帐之中,决胜于千里之外。”
1957年,研究人员从《史记·高祖本纪》中提取出“运筹”二字,并赋予当时的新兴学科Operations Research(简称OR)以中文名。
从字面看,这门学科似乎和运营、决策有关,那它到底有何实际应用意义和方法呢?
今天,小钛带领大家一同来聊聊大数据时代的决策引擎——运筹学。
运筹学(Operations Research)是一门新兴的交叉学科,自20世纪30年代初起开始有所发展。
我们中国人对“运筹”一词的了解,还是来自《史记》中刘邦称赞张良的一句话——“夫运筹策帷帐之中,决胜于千里之外,吾不如子房”。这句话是说张良在军帐中运用计谋就能决定千里之外的胜利。
运筹学,研究的也恰好是如何运转、经营有限的资源,在满足一定约束的条件下,达到整体最优的目标。
现在,人们普遍认为运筹学起源于第二次世界大战时期。但其实在二战前,运筹学就有了发展萌芽,比如经典的排队论、存储论等问题在二战前就有相关的理论被提出。
到了二战时期,盟军开始成立运筹学小组,研究各种作战问题,如雷达和防空武器的部署、运输船队的护航、反潜深水炸弹的投掷方法等——这些战术与战略问题的解决也为最终的全面胜利作出了重大贡献。
二战后,除军事方面的应用研究以外,运筹学也进入了工业、农业、经济和社会问题等诸多领域的应用视野,各国也纷纷成立了运筹学会。
从诞生至今,运筹学已经在多个领域有了非常成功的应用案例。
在航空领域,运筹学可以用于解决机型指派问题,飞机路径规划和机组排班问题等;机票的定价和超售问题也可以用运筹学来解决。
在供应链领域,运筹学仓库选址方法——即如何选取仓库地址使得运输成本和建站成本最低;库存管理,即如何合理地控制库存水平;以及路径规划,即在运输的过程中如何设计路径来优化成本的同时最大化满足客户的需求。
在金融领域,运筹学则可以用于收益管理、资产配置和风险控制。除此之外,在基建领域,电网的布局及分配、输油管道的铺设、人员排班等问题都可以用运筹学的方法来解决。
运筹学作为一门关于决策的学科,它运用的研究方法和其他科学领域的传统研究方法很相似。它解决问题的过程始于仔细的观察以及对一个实际问题的阐明,并同步收集相关数据。
解决问题的过程包括合适目标的选定,实际操作中的条件约束,各方间的关系,制订决策的时间限制等。其次,对问题进行建模,用一个数学规划模型充分诠释当前问题的本质特征,然后对模型采用适当的方法进行求解,最后进行验证和落地。
其中,建模和求解是运筹学应用中非常关键的两个步骤。
建模过程中最重要的是三大因素:决策变量,目标函数和约束条件。
决策变量即需要制定的可量化的决策。如我们在某个项目上需要投放多少人力,工厂的地址选在哪里等。
目标函数往往和成本、收益等挂钩,一般能够体现为决策变量的目标函数,且往往要求能得出目标函数的最大值或最小值。
约束则是决策过程中一些人为规定或实际操作中不能违反的条件,如对人员进行排班时需要保证每个人的工作时长不能超过8小时,解决仓库选址问题时需要保证仓库不能爆仓等等。当我们找到了能使得目标函数值最大或最小的最优解时,我们就找到了问题的最优决策。
模型的求解方法主要分为精确求解和启发式算法两种方法。
精确求解有割平面法、分支定界法等。当问题的规模比较小时,我们可以用精确求解方法取得问题的最优解。
但现实问题面对的对象往往很大、很多、很复杂——精确求解一般不能在有限的时间内为我们找到那个最优解。这时候我们可以用启发式算法来构造和搜索相对较好的解。
启发式算法有遗传算法、蚁群算法、模拟退火算法等。启发式算法求出来的解不一定是最优解,却是在可接受的成本(时间或空间)范围内能给出的较优解。
当然,我们也可以将精力放在建模上,然后将建好的模型以一定的格式输入到商业求解器中求解。CPLEX和GUROBI都是目前求解数学规划模型中非常优秀的软件,除此之外,也有不少学者和运筹学爱好者为运筹学算法的开源社区做出贡献。
二战之后,运筹学之所以能够从军事领域拓展运用到社会经济活动的各个领域中去,其中很重要的一个原因就是得益于计算机的高速发展。
人们要解决的问题规模不断增大,而强大的算力促进了各种算法和软件的产生,使得解决这些大规模问题成为可能。
如今我们身处于数字化转型时代,机器学习和深度学习算法成为热门研究领域,各种新的场景层出不穷。这对经典的运筹学理论来说是一个挑战,同时也是一个推动其不断创新的良机。运筹学的决策模型将会和机器学习、深度学习等理论相互促进,将海量的数据转化为决策,从而创造出更大的商业价值和社会价值!