MATLAB出现以下问题怎么处理

错误使用 optim.problemdef.OptimizationConstraint/concat
Multiple relations per OptimizationConstraint not supported.
Create a new OptimizationConstraint to capture the constraint with the different relation.

出错 optim.problemdef.OptimizationConstraint/vertcat

出错 Untitled4 (line 116)
sum(x(agentIndices, :), 2) == agentDemand;

从错误信息看,似乎是在定义优化约束(OptimizationConstraint)时,试图在一个约束中包含多个关系(relation),但是MATLAB不支持这种情况。它建议为不同的关系定义不同的约束。
具体的错误代码是:
sum(x(agentIndices, :slightly_smiling_face:, 2) == agentDemand
这里可能试图在一个约束中同时表达:
x(agentIndices, :, 2) == agentDemand

:slightly_smiling_face:
两个约束关系,导致错误。
解决方案是:

  1. 分离这两个约束关系,定义两个不同的OptimizationConstraint;
  2. 确保:slightly_smiling_face: 不是约束表达式的一部分,去除它。
    举例来说,如果要表达:
    x(agentIndices, :, 2) >= agentDemand

    x(agentIndices, :, 3) == 5
    这两个约束,应定义为:
    con1 = optim.OptimizationConstraint(x(agentIndices, :, 2), '>=', agentDemand);
    con2 = optim.OptimizationConstraint(x(agentIndices, :, 3), '==', 5);
    problem.Constraints = [con1, con2];
    而不应写成:
    problem.Constraints = optim.OptimizationConstraint(x(agentIndices, :, 2), '>=', agentDemand, x(agentIndices, :, 3), '==', 5);