我必须解决一个多目标问题,但我不知道我应该使用CPLEX还是Matlab。你能解释一下这两种工具的优缺点吗?非常感谢!
发布于 2012-01-08 15:37:05
这实际上是一个在存在多个目标的情况下选择最合适的建模方法的问题,而不是在CPLEX或MATLAB之间做出选择。
多准则决策本身就是一个完整的子领域。看看:http://en.wikipedia.org/wiki/Multi-objective_optimization。
一旦你决定了方法并制定了你的问题(通过将你的多个目标压缩成一个加权的目标,或者作为一系列线性规划),这两个工具都可以为你完成这项工作。
由于您熟悉MATLAB,因此您可以从使用它来解决一系列线性规划(目标编程方法)开始。Mathworks的这个页面有几个例子,并提供了逐步的详细信息:http://www.mathworks.com/discovery/multiobjective-optimization.html帮助您入门。
发布于 2020-11-13 21:59:43
这个问题可能不是你当前关心的问题。然而,我的答案是相当普遍的,所以让我把它贴在这里。
如果解决多目标问题意味着导出特定的帕累托最优解,那么您需要解决通过对目标进行缩放(聚合)而获得的单目标问题。缩放的类型及其参数(如果有)的值取决于决策者的偏好,例如,当不同的目标相互冲突时,他/她/您希望如何确定它们的优先级。加权总和,成果标量化(又称加权Chebyshev)和字典序优化是最广泛使用的类型。它们有不同的优点和缺点,所以这里没有通用的建议。
CPLEX在以下情况下是首选的:(A)您的缩放问题属于CPLEX解决的类(显然),例如,它是一个混合整数线性/二次问题,以及(B)问题足够复杂,计算时间至关重要。CPLEX专门处理狭义的问题,在复杂情况下应该比Matlab快得多。
不必将多目标方法的选择限制为Matlab/CPLEX或其他解算器提供的方法(通常范围较窄)。很容易自己制定一个可伸缩的问题,然后运行适当的单目标优化(来源:这是我的主要研究领域之一,参见例如implementation for the class of knapsack problems)。这个问题归结为找到一个合适的单目标求解器。
如果你想获得关于整个最优集合的一些一般信息,我建议从推导最低点和理想的目标向量开始。
如果你想得到帕累托最优集的表示,除了前面提到的基于群体的启发式方法,比如,还有针对特定类别问题开发的精确方法。示例:a library implemented in Julia、a recently published method。
这里提到的所有概念都在Miettinen (1999)的综合书籍中进行了描述。
发布于 2012-08-08 09:16:46
cplex能解决Pareto型多目标问题吗?我所知道的是,它可以通过定义字典序对象来解决简单的目标规划问题,或者它使用加权和随着灵敏度信息逐渐改变权重,并“枚举”高度依赖于权重且看起来非常主观的pareto前端。
您可以将here称为cplex如何解决双目标问题,这似乎并不好。
对于包含排名的真正的帕累托方法,我只知道一些GA变体可以像NSGA-II那样做。
https://stackoverflow.com/questions/8556117
复制相似问题