本文是我在2017年9月团队Workshop上所讲内容的底稿。为方便各位同学学习交流,发布于此。
写此文的动机
曾几何时,我也是一只刚进入科研的小萌新。刚入门的时候有着一腔热情,但是每每阅读文献,尤其是高水平的文献的时候,总免不了产生一种知难而退之感。究其原因,主要来自于两方面:
英语水平不过关,专业词汇需要反复查。
基础知识点不足,常常出现大坑需要填。
这两方面因素使得阅读文献花费了巨大的时间成本。如果要重复文献中的方法或是案例,那么花费的时间会更多(因为几乎每一句话都要反复地读)。
第一点好弥补,很多词见得次数多了自然就熟了。第二点就难了,即使是同样的一种技术/一个模型/一种方法,不同的文章中运用的方式也会大相径庭,而且,作为以应用为导向的会议或者期刊论文来说,没有必要把方法论完整的叙述一遍。也就是说,这一点并不是多读论文就能弥补的。
那么,如何有效的解决这个问题呢?几年后的今天回过头来看这个问题,发现自己走了非常多的弯路,但也有幸走出了这种困境。虽然无法一时间将所有的知识倾囊相授,但是我想通过此文提出一个理解我们所研究问题的一个基本的框架。我希望通过运用这套方法能够对读者有所帮助。
当你开始阅读一篇本专业的新论文,你可以迅速地给它在研究领域内的位置;
通过知识整理,你可以知道你要从哪些地方开始你的研究工作。
理解交通规划与管理问题
出发点
我的专业是交通运输规划与管理,这是一个涉及面非常广的学科,其研究的内容从研究对象上来说,包括城市道路道路交通,城市轨道交通,铁路运输,航空运输等;从时间范围上来说,涵盖从规划问题(如动车段所选址)到运营控制(如列车调度)。在研究当中往往会读到非常多的论文,其研究的问题,问题的表达和解决问题的方法多种多样。如何快速的理解论文描述的问题呢?我以供求关系为理解问题的出发点。
“供”是指供给,在铁路运输中,列车上的每一个席位就是供给的一种形式;“需”是指客运需求,这是一个抽象的概念。产生需求的主体是人,比如“我想明天从北京去上海”表达了我的一种需求。交通规划与管理的问题背景都可以看做是供需关系在不同维度上的体现。
供给——管理优化
在研究的问题中,供给往往会受到非常多的约束。最基本的约束来自于时空的约束,比如,一条铁路线上不能无限制的开车,因为要保证安全;动车组不能无休止的运行,因为要维修;在内陆火车上吃不到海鲜,因为运过来时间不够(过保质期);列车不能无限制的卖票,因为车上席位有限。
解决上述的问题,除了引入新的资源以外(更高时速的列车,调整修程修制,换用席位更多的车型)外,更多的情况是有效的对现有资源进行有效组织。在这里我把这些手段统一称作“优化管理”。通常,解决这一类问题的手段是通过更好的计划或者是控制。我先简单区分一下这两者的区别。
计划:在何时何地进行何种操作。如,“11时30分XXX次列车从北京南站发车”,“10时-11时发出这种方案线的列车频率为5”。
控制:根据当前的状况调整/制定计划。如,“当XXX次列车晚点,运行图进行……调整”。
根据优化目标的不同,模型的构建会基于Scheduling或Optimal Control两类理论框架。当然,不同论文里面因为描述的问题不同,所构建的具体模型不同,但基本都符合这两类框架。
需求——现象描述
在供给对面的是形态各异的需求。需求中可以包含的信息是非常多的。我们不可能在解决所有的问题中都把所有关于需求的信息都用上,因为这是不必要且难于操作的。因而针对不同的问题(管理优化的目标)我们选取哪些信息,以及如何准确地把需求描述出来是最关键问题。
对需求的描述从最宏观到最微观的一个例子。
信息1:“有100人明天想从北京去上海。”
信息2:“50个人更倾向于火车出行,50人想要坐飞机。”
信息3:“倾向于火车出行的旅客倾向于坐上午10:00的火车。”
信息4:“如果火车票涨价500元,有20个人改乘坐飞机。”
……
信息N:“小明明天上午10点在上海有个会议;小王希望最近几天去上海旅游一趟;小李则是……”
如果我们要决定明天从北京去上海开几趟车,比如一趟车只能装25人。如果仅有信息1,我们做出的决策可能会是开4趟;再得到信息2,那么可能决策可能是开2趟;信息3、4可能会对这个决策有影响,但是从经验上来看,似乎相对于信息1和2就没有那么重要了;如果要制定出最优的决策,那么需要所有N条信息。当然,对于一个决策开几趟列车的人来说,收集这么多信息成本太高了,而且建模难度也太高了。
如何以建模语言把需求的有效特征描述出来,更是一个难题。这当中的难点在于,需求并不总是“100人”,“10:00",”500元“这样简单,旅客选择行为就是一个难于描述的需求维度。至少有两种模型都在描述这一现象。
离散选择模型,以Logit模型为代表;
用户均衡模型,以Backmann模型为代表。
这两种理论或是结合或是独立应用,都取得了广泛认可。这至少给了我一个启示:对于需求的建模似乎并没有正确,只要它能反映需求的主要特征且解释能力足够好,都是有应用潜力的。
如果追求与观测结果更加接近的模型,那么放弃了一些解释力模型也是有市场的,比如回归模型,人工神经网络等。但是放弃解释力是有代价的,那就是在宏观问题中的应用潜力收到影响。
框架
那么当我拿到一篇新的论文时,我应该如何快速获取其中有效信息呢。首先当然是快速先读一遍,尝试回答下面问题:
- 问题的背景和要素?(区分供给和需求)
- 问题属于哪一类模型?
第一个问题只要认真阅读我相信是很好回答的;而第二个问题实际上就在考验读者的积累了。如果你对论文的建模还比较模糊了话,不妨参考一下下表。
- 虽然数据分析不在我理解问题的框架当中,但是通过数据得到需求建模的信息(比如市场的划分等)是这个时代非常基础且重要的一种能力。
- 根据供需问题的划分,我对一些基础理论进行了分类。图中标签有中文有英文,取决于我第一次看到这个概念的时候它的语言。这些理论的背景都是来自于应用数学
这张表是我对目前我自己的知识框架的整理。如果我读到一篇关于开行方案的文章,它运用双层规划模型,上层问题是开行方案的编制,下层问题是服务网络配流,还涉及到了车底周转,那么这篇文章很快就能找到一个位置。同样,如果你有某些地方不太懂也可以找到遗漏的知识点。
那怎样才能整理出你自己的这一张表呢?
阅读文献
检索文献
文献检索其实非常的重要,因为大家时间有限,不可能精读一个领域的所有文章。所以如何从一篇文章中提取尽可能多的信息(读透)是非常重要的。我没有比较好的方法,但是还是有一个我认为不错的方法:
如果你对研究领域一点认识都没有的话,建议去找找影响力高的期刊或者图书;
从这些期刊中选择引用频率比较高的论文;
-
阅读这篇论文/这本书(的某个章节),完善你的框架:
了解论文的作者(们),如果不知道可以去ResearchGate和大学网站去找,
了解论文的引用文献,找到被引用次数高的期刊或者图书;
重复第3步。
总结文献
- 文件检索不等于找一篇看一篇,如果你看完一篇文章能够拓展你的认知,那么是很好的;如果一篇文章完全在你的认知以内,那可以快速的浏览。
- 高引的论文往往会向抽象的层次(基础理论侧)更进一步(提炼了问题)或者是提出了一个很好的求解方法,这种文章请标记为关键文章,有精读的必要。
- 请有效运用文献整理工具,如NoteExpress, EndNote等。
练习技能
当你开始有了几篇精读的文献之后,你就可以着手开始自己的研究了。不过,如果你需要有所创新的话,一些基本的技能还是要有所掌握的。
数学基础
数学,尤其是应用数学的分支,是框架中基础理论的基础。在研究中,你既需要数学语言来描述你的问题,又需要一些解析/数值方法来求解你的问题。一些基础技能罗列如下,包括一些关键点。
-
运筹学
-
线性规划理论
大规模问题: D-W分解,列生成方法原理
-
非线性规划理论
拉格朗日乘子,对偶理论,KKT条件
-
凸规划理论
F-W算法,交替方向乘子法(ADMM)
-
整数规划理论
B&B分支定界法
-
动态规划理论
Approximate Dynamic Programming (近似动态规划)
-
-
数理统计学
-
参数估计
极大似然法 E-M法 机器学习的方法
-
时间序列分析
ARIMA (自回归积分滑动平均模型) ,DLM(动态线性模型)等
-
计算机应用
我们的研究脱离不了计算机,在工作过程中,我主要用它来做三件事情:
-
管理信息系统
系统分析,建模,设计
-
求解最优化问题
调用求解器 Cplex Gurobi
-
进行数据分析
文件系统:SPSS 或者 R Python中的机器学习库
数据库:Oracle SQL
给萌新的学习哪些语言(技术)的推荐(层次由浅入深):
- 如果你只是需要求解 matlab+yalmip
- 如果你需要参与信息系统开发 C#
- 如果你需要进行数据分析 python / 简单统计 SQL
- 如果你需要发明“轮子” C++
团队协作
-
git