设计模型的基本步骤:
1、整理手头资料,将“甲方”的需求文档归为“目标”和“约束”两部分。
2、根据目标的内容,再把“显性”的目标,“隐性”的目标全部找出来。有时候甲方不了解数学模型结构,可能把一部分目标隐藏在文字里了,要自己去理解和挖掘清楚。
3、把可以用数学公式刻画的目标全部整理出来,并尝试给出刻画公式的一个“母版”,目标确定的话也就意味着决策变量定下来了。
4、把可以纳入优化问题一起求解的目标函数和只适合做实验完成后对“求解方案”做测验的“困难”目标分离开来,构造出这部分“困难”目标的简单的“近似”的目标,添加到优化目标组里。
5、整理约束,尽量把能够用数学公式刻画的约束全部整理出来,并刻画清楚。把不能够用,或者不适合用数学公式刻画的约束作为筛选可行解的“规则”,这部分“规则”约束一般都是通过结合一些“启发式”算法求解的。“规则”里常常带有一些行业经验在里面,有些经验有用但是不是说的很清楚,要通过一些“模拟”实验以统计的方式掌握到一些关键数据,因为就算是“规则”性约束,其本质一定是可以用数学去量化后,再刻画的。启发式算法一个很大优势就是可以在一个非常非常庞大的求解空间里,根据“规则”条件快速地找到一些不错的可行解,相当于把一个大海缩小成了一个湖泊。而且这个湖泊中的解都是比较不错的。但是启发式算法在寻找“最优解”上先天不足,没理论保证,既不能保证一定找到最优解,不能了解最优解的性质,也不能保证收敛到最优解的算法复杂度。所以原问题经启发式算法辅助求解后,从“大海捞针”问题转变成了“湖泊捞针”或者“池塘捞针”,这时候有理论保证的较成熟的优化技术就可以上场了。
我们一起讲解一下数学模型的三个基本部件,即目标、约束、变量。
目标:
对于优化目标组里的目标,我们要知道什么是“好目标”或者“易求解目标”,什么是“坏目标”或者是“难求解目标”?按从好到坏区分可以排列如下:
线性目标>二次凸目标>一般非线性凸目标>有结构特点的非凸目标(凸目标+非凸目标的组合目标,且非凸部分可以比较容易找到还可以的凸逼近)>