Zimpl 中的条件集?

Conditional set in Zimpl?

我想在 Zimpl 中执行此操作,但是在我 运行 zimpl test.zpl:

之后出现以下错误

set A := { 1..6 }; set B := { 1..4 }; set dim[A] := <1> {1}, <2> {1}, <3> {3}, <4> {2}, <5> {1}, <6> {4}; set C := {<i, j> in A*B with j<dim[i]};

错误 800:文件 test.zpl 第 4 行:语法错误,意外的 SETSYM

设置 C := { 在 A*B 中,j < dim[i]};

基本上我想要 A*B: {<1,1>,<2,1>,<3,1>,<3,2>,<3,3>,<4,1>,<4,2>,<5,1>,<6,1>,<6,2>,<6,3>,<6,4>}

中的这些元素

知道为什么会发生这种情况以及如何解决它吗?

您需要将 dim 定义为参数而不是集合。您的示例应如下所示:

set A := { 1..6 };
set B := { 1..4 };
param dim[A] := <1> 1, <2> 1, <3> 3, <4> 2, <5> 1, <6> 4;
set C := {<i, j> in A*B with j < dim[i]};
do print C;