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

如何在JSON中定义空集以传入MiniZinc的集合数组?

MiniZinc中用JSON输入集合类型数组的正确方式

你在mzn文件里定义了如下数组:

array[1..14] of set of 1..100 : stationCalendarOffPeriod ;

之前尝试的两种JSON写法都不符合MiniZinc的JSON输入规范,错误原因和解法如下:

错误原因分析

  • 用{}表示集合:MiniZinc无法识别普通空对象为集合,必须明确标记类型;
  • 用[]表示集合:JSON数组会被MiniZinc解析为数组类型,但你的数组元素要求是集合,所以类型不匹配。

正确写法

MiniZinc的JSON输入中,集合类型需要用包含"set"键的对象来表示,键对应的值是集合元素组成的数组:

  • 空集合写为{"set": []};
  • 非空集合比如包含元素1、5、10,写为{"set": [1,5,10]}。

对应你定义的14元素数组,正确的JSON示例(全为空集合)如下:

{"stationCalendarOffPeriod": [
    {"set": []}, {"set": []}, {"set": []}, {"set": []},
    {"set": []}, {"set": []}, {"set": []}, {"set": []},
    {"set": []}, {"set": []}, {"set": []}, {"set": []},
    {"set": []}, {"set": []}
]}

如果需要给部分集合赋值,比如第一个集合包含3和7,第三个集合包含20,只需修改对应位置的对象即可:

{"stationCalendarOffPeriod": [
    {"set": [3,7]}, {"set": []}, {"set": [20]}, {"set": []},
    {"set": []}, {"set": []}, {"set": []}, {"set": []},
    {"set": []}, {"set": []}, {"set": []}, {"set": []},
    {"set": []}, {"set": []}
]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:42:10