我必须解决多目标问题,但我不知道是否应该使用CPLEX或Matlab。你能解释一下这两种工具的优缺点吗? 非常感谢你!
答案 0 :(得分:4)
这确实是一个关于在存在多个目标时选择最合适的建模方法的问题,而不是在CPLEX或MATLAB之间进行决策。
多标准决策制定本身就是一个完整的子领域。请看一下:http://en.wikipedia.org/wiki/Multi-objective_optimization。
一旦你决定了这个方法并制定了你的问题(通过将多个目标折叠成一个加权的目标,或者作为一系列线性程序),任何一个工具都可以为你完成工作。
由于您熟悉MATLAB,因此可以先使用它来解决一系列线性程序(目标编程方法)。 Mathworks的这个页面有一些示例,其中包含逐步详细信息:http://www.mathworks.com/discovery/multiobjective-optimization.html以帮助您入门。
答案 1 :(得分:1)
这个问题可能与您当前所关心的问题无关。但是我的回答相当普遍,所以让我在这里发布。
如果解决多目标问题意味着需要导出特定的Pareto最优解,那么您需要解决通过标定(汇总)目标而获得的单目标问题。标量的类型及其参数的值(如果有)取决于决策者的偏好,例如当他们彼此冲突时,他/她/您希望如何优先考虑不同的目标。加权总和,成就标量化(又称加权Chebyshev)和词典优化是最普遍的类型。它们有不同的优缺点,因此这里没有通用的建议。
在以下情况下首选CPLEX:(A)您的标量问题属于CPLEX解决的类(显然),例如它是一个[混合整数]线性/二次问题,并且(B)这个问题足够复杂,以至于计算时间至关重要。 CPLEX专门研究狭窄的问题,在复杂情况下应该比Matlab快得多。
您不必将多目标方法的选择限制为Matlab / CPLEX或其他求解器(通常较窄)提供的方法。您可以很容易地自己提出一个标量问题,然后进行适当的单目标优化(来源:这是我的主要研究领域之一,请参见implementation for the class of knapsack problems)。问题归结为找到合适的单目标求解器。
如果您想获得有关整个帕累托最优集的一些常规信息,我建议从推导最低点和理想目标向量开始。
如果您想派生帕累托最优集的表示,除了提到的基于群体的启发式算法(例如GA)外,还针对特定类型的问题开发了精确的方法。示例:a library implemented in Julia,a recently published method。
Miettinen (1999)在综合手册中描述了这里提到的所有概念。
答案 2 :(得分:0)
cplex可以解决一个pareto类型的多目标吗?我所知道的是它可以通过定义词典对象来解决简单的目标编程,或者它使用加权和来逐渐改变权重信息并“枚举”帕累托前沿,这很大程度上取决于权重并且看起来非常主观。
您可以参考here,了解cplex如何解决这个问题,这似乎并不好。
对于包含排名的真正的帕累托方式,我只知道一些GA变体可以像NSGA-II那样。
答案 3 :(得分:0)