最优风险缓解策略的混合整数规划

2020-10-15 06:29:37

风险分析协会(SRA)将风险定义为发生不幸事件的可能性,在数量上可以将其定义为后果的概率和程度/严重程度的组合。根据这个基本定义,我们可以将风险正式化:

威胁是事件发生的概率,脆弱性是考虑到风险源的发生,对后果的不确定性和严重性。

例如,假设我们已经确定了可以减轻上面确定的所有风险的措施。

每项缓解措施都有成本,如果我们有x$的特定预算,那么分配要缓解的风险的最佳方式是什么?

如果我们有无限的预算,我们可以通过实施缓解措施来减轻所有上述风险。但在预算有限的情况下,应该决定减轻哪些风险。

上述问题中的未知变量是离散变量,它们是整数,限制在0和1之间,这是一个离散优化问题,由于没有二次项,所以是一个线性问题。

这种特定的资源分配问题称为背包问题,决策者必须在固定预算下从一组项目中进行选择。早在1897年,人们就对它进行了广泛的研究。因为人们只能选择要包含或不包含的项目,所以通常称为0-1背包问题。有许多算法和启发式算法可以解决这类问题,我们选择使用MIP方法,因为当我们想要添加其他约束和逻辑考虑时,它非常灵活。

值得注意的是,这个问题是NP完全的,因此没有已知的算法既正确又快速(多项式时间)来解决背包问题的每一种情况。

假设一项缓解措施依赖于另一项措施。例如,假设直到实现另一措施d5才能实现特定措施d1。通过添加新的约束,可以在前面的模型中包括这一考虑事项。

人们可以通过添加更多的逻辑考虑因素来进一步丰富模型,假设两个缓解计划是不兼容的,它们不能同时实施。假设d1和d4是冲突的缓解措施,我们可以选择d1或d4:

我们还可以考虑三个或更多相互冲突的决定,如果d1、d2和d4不兼容,并且我们只能选择其中一个,则只需添加以下约束:

我们可以不断添加约束,以便对决策之间的复杂交互进行建模,等等。如果我们有不兼容的约束,则可能没有优化问题的解决方案。

整数规划是离散优化的一个子集,它寻求对约束条件下的目标函数进行优化。LP格式是一种人性化的建模格式。在实践中,尽管其他格式更适合大规模问题。

基本结构非常简单,可以直接从问题的数学公式中翻译出来。第一部分详细说明了要优化的目标函数,以及它是最大化问题还是最小化问题。第二部分指定约束,LP文件可以包含任意数量的约束。最后,最后一节指定变量的类型。

一旦问题以LP格式表示出来,我们就可以简单地将文件提供给MIP优化器,这样我们就有了最优解决方案。CBC就是这样一个优化器:代表Coin-or BRANCH和CUT,CBC是一个用C++编写的开源混合整数线性规划解算器。

最大化目标函数obj:420d1+160d2+4d3+135d4+4d5+210d6,满足c0:90d1+80d2+30d3+45d4+4d5+50d6<;=150二进制d1d2d3d4d5d6

CBC提供了一个独立的可执行文件,可以直接从命令行调用该文件来优化问题。

最优策略包括降低风险1、5和6。该策略为目标函数赋值634。

最大化*目标函数obj:420d1+160d2+4d3+135d4+4d5+210d6,服从c0:90d1+80d2+30d3+45d4+4d5+50d6;=150c1:d5-d1;=0c2:d6+d5;=1二进制d1d2d3d4d5d6。

既然这位新手商人已经了解了混合整数规划的秘密,他就去应用他新学到的知识,根据成本和预期价格来优化进口哪些商品。他决定分配1000美元的预算,然后他找到了最优解决方案。一位老商人看到这位新手在做什么,就给了他1美元。

新手商人说:“你为什么给我1美元?”老商人说:“用你的新预算重新计算一下。”这位新手商人开悟了。

由于MIP问题的谨慎性质,分配的预算中的微小变化可能会导致解决方案的巨大差异。