Minizinc似乎会生成无效的FZ代码
我的模型中有以下部分:
constraint forall(d in Day, s in Student)
(
let {
%groups in day
array[int] of var opt Group: gid = [g | g in assignment[s] where group_day[g] == d];
%groups starts in day
array[int] of var opt Time: gsid = [group_start[g] | g in gid];
%groups ends in day
array[int] of var opt Time: geid = [group_end[g] | g in gid];
%groups durations in day
array[int] of var opt Time: gdid = [group_duration[g] | g in gid];
var opt Time: min_start = min(gsid);
var opt Time: max_end = max(geid);
var opt Time: sum_dur = sum(gdid);
var opt int: time = ((max_end - min_start) - sum_dur);
} in
wasted_time_units[d,s] = deopt(time)
);
我一直在尝试通过从模型中删除opt
数据类型来使其正常工作,从而使整个gid
删除检测到的模型不一致
错误。固定和DEOPTING gid
数组工作起来,但是sigsment
是一个变量,因此产生了无效的输出。最终,我到达了上面显示的模型,它通过了类型检查,但是现在我遇到了一个隐秘的错误:
Error: Unknown character in line no. 1914
Error: Unknown character in line no. 1914
Error: Unknown character in line no. 1914
Error: syntax error, unexpected '(', expecting FZ_ID in line no. 1914
下面我附加了Flatzinc输出(在方括号中使用线号):
[1913] constraint int_lin_eq([1,1,1,-1],[X_INTRODUCED_894_,X_INTRODUCED_908_,X_INTRODUCED_922_,X_INTRODUCED_955_],0):: defines_var(X_INTRODUCED_955_);
[1914] constraint '-'(X_INTRODUCED_954_,X_INTRODUCED_952_,X_INTRODUCED_956_):: defines_var(X_INTRODUCED_956_);
[1915] constraint '-'(X_INTRODUCED_956_,X_INTRODUCED_955_,X_INTRODUCED_957_):: defines_var(X_INTRODUCED_957_);
[1916] constraint int_ne_reif(X_INTRODUCED_963_,0,X_INTRODUCED_962_):: defines_var(X_INTRODUCED_962_);
错误是什么意思,如何可以我避免吗? Minizinc似乎正在生成无效的FZ代码。
I have the following piece of my model:
constraint forall(d in Day, s in Student)
(
let {
%groups in day
array[int] of var opt Group: gid = [g | g in assignment[s] where group_day[g] == d];
%groups starts in day
array[int] of var opt Time: gsid = [group_start[g] | g in gid];
%groups ends in day
array[int] of var opt Time: geid = [group_end[g] | g in gid];
%groups durations in day
array[int] of var opt Time: gdid = [group_duration[g] | g in gid];
var opt Time: min_start = min(gsid);
var opt Time: max_end = max(geid);
var opt Time: sum_dur = sum(gdid);
var opt int: time = ((max_end - min_start) - sum_dur);
} in
wasted_time_units[d,s] = deopt(time)
);
I've been trying to get it working by removing opt
data type from the model, by deopting the whole gid
, but that threw model inconsistency detected
error. Fixing and deopting gid
array worked, but assignment
is a variable so that produced invalid output. Finally I have arrived to the model shown above, it passed the type check but now I'm getting a cryptic error:
Error: Unknown character in line no. 1914
Error: Unknown character in line no. 1914
Error: Unknown character in line no. 1914
Error: syntax error, unexpected '(', expecting FZ_ID in line no. 1914
Below I've attached the FlatZinc output (with line numbers in square brackets):
[1913] constraint int_lin_eq([1,1,1,-1],[X_INTRODUCED_894_,X_INTRODUCED_908_,X_INTRODUCED_922_,X_INTRODUCED_955_],0):: defines_var(X_INTRODUCED_955_);
[1914] constraint '-'(X_INTRODUCED_954_,X_INTRODUCED_952_,X_INTRODUCED_956_):: defines_var(X_INTRODUCED_956_);
[1915] constraint '-'(X_INTRODUCED_956_,X_INTRODUCED_955_,X_INTRODUCED_957_):: defines_var(X_INTRODUCED_957_);
[1916] constraint int_ne_reif(X_INTRODUCED_963_,0,X_INTRODUCED_962_):: defines_var(X_INTRODUCED_962_);
What does the error mean and how can I avoid it? It seems like minizinc is generating invalid FZ code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过修补微型解决方案解决了问题。
在这里处理问题:
https://github.com/minizinc/minizinc/libminizinc/588 开发分支,问题消失了!
The problem was solved by patching minizinc.
Issue was handled here:
https://github.com/MiniZinc/libminizinc/issues/588
After compiling the develop branch, the issue disappeared!