You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多目标优化时CPLEX返回状态-1(报错19118)的原因咨询

CPLEX多目标优化状态码-1问题排查与解决

错误原因

你遇到的状态码-1和MultipleObjException报错,核心原因是CPLEX不支持直接声明多个独立的minimize/maximize目标语句。你当前代码里写了三个单独的目标函数,这不符合CPLEX的多目标处理规则。

解决方案

根据你目标函数里的权重(0.5、0.25、0.25),可以采用两种常见的多目标处理方式:

1. 加权求和(单目标合并)

将所有目标统一为minimize类型(最大化目标取负值转换),然后按权重合并成一个单一目标函数,这是最直接的解决方式。修改后的目标函数如下:

minimize 0.5*(sum(i in tavail) 0.5*((pt[i]-pl[i]))) 
         - 0.25*(sum(i in tavail)(sum(j in number)(c[i]*pevdis[i][j]))) 
         + 0.25*(sum(i in tavail)(sum(j in number)(c[i]*pevch[i][j])));

注:原第二个目标是最大化,转换为最小化时需要添加负号,保证优化方向一致。

2. 分层优先级优化(多目标顺序求解)

如果你的需求是按优先级依次优化目标(比如先优化第一个,再在第一个最优的前提下优化第二个),可以使用OPL的多目标语法,通过lexicographic关键字定义优先级:

minimize lexicographic(
    0.5*(sum(i in tavail) 0.5*((pt[i]-pl[i]))),
    -0.25*(sum(i in tavail)(sum(j in number)(c[i]*pevdis[i][j]))),
    0.25*(sum(i in tavail)(sum(j in number)(c[i]*pevch[i][j])))
);

注:同样需要将最大化目标转为最小化形式,优先级顺序按括号内的排列顺序,越靠前优先级越高。

内容的提问来源于stack exchange,提问作者Harip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:25:22