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

AMPL中如何编写矩阵相邻元素后位不小于前位的约束

语法错误核心原因
  1. 你写的PROD-1属于非法的集合索引表达式,AMPL不支持直接对集合做减法来获取去掉最后一位的子集
  2. 约束的多维度索引需要放在同一个大括号内,用逗号分隔,不允许在冒号后单独再加索引大括号
修正方案

分两种常见场景选择对应写法即可:

场景1:PROD是从1开始的连续整数集合(最常见的定义方式)

直接使用card(PROD)获取PROD的元素总数,遍历1到总数-1即可:

subject to prioridade{i in SEM, j in 1..card(PROD)-1}:
    d[i,j] <= d[i,j+1];

场景2:PROD是任意有序非连续集合

用AMPL内置的集合操作函数保证兼容性:

# ord(j, PROD) 获取j在PROD集合中的顺序位置
# next(j, PROD) 获取PROD集合中j的下一个元素
subject to prioridade{i in SEM, j in PROD: ord(j, PROD) < card(PROD)}:
    d[i,j] <= d[i, next(j, PROD)];

内容的提问来源于stack exchange,提问作者MATHEUS HENRIQUE NASCIMENTO DA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:05