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

JuMP的@constraint约束中实现{ a_j, b_j }类数组编码的咨询

JuMP @constraint 自定义离散集合的实现方法

你需要的{a_j, b_j}形式的离散元素集合,可以通过以下几种方式在@constraint中实现:

  • 直接传入离散数组字面量
    如果是固定的几个索引值,直接把元素放在方括号[]中作为索引范围即可,示例:
# 示例:仅对j为2、4、6的变量加约束
@constraint(model, [j in [2,4,6]], x[j] <= 10)
  • 动态生成成对集合后遍历
    如果是每组有两个对应元素的{a_j, b_j}结构,可以先定义存储成对元素的数组,再在约束中遍历:
# 提前定义所有(a_j, b_j)对
pairs = [(1,3), (2,5), (4,6)]
# 写法1:按索引遍历
@constraint(model, [j in 1:length(pairs)], x[pairs[j][1]] + x[pairs[j][2]] <= 1)
# 写法2:直接解包遍历更简洁
@constraint(model, [(a, b) in pairs], x[a] + x[b] <= 1)
  • 多索引场景用映射容器
    如果不同上层索引对应不同的{a_j, b_j}集合,可以用字典存储映射关系后调用:
# 定义i对应的专属集合S[i]
S = Dict(1 => [2,5], 2 => [1,3], 3 => [4,6])
@constraint(model, [i in 1:3, j in S[i]], x[i,j] >= 0)

注意:Julia 1.0及以上版本不再支持用大括号{}直接定义数组/集合,定义有序离散元素集合优先用方括号[],如果需要无序去重的特性可以用Set()构造集合传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:36:03