变量求和

时间:2012-03-10 21:46:02

标签: prolog constraint-programming

如何在约束编程语言ECLiPSe(http://www.eclipseclp.org/examples/)中进行变量求和?

我正在尝试使用此功能:

:- lib(ic).         % include the standard interval constraint library
:- lib(branch_and_bound).   % include the branch and bound library for minimization
:- lib(ic_edge_finder).     % include the cumulative constraint library needed for resource constraints

    triangle(sums) :-
        places = [a,b,c,d,e,f,g,h,i],
        places :: 1..9,
        sums = [sum1],
        sums :: 10..30,
        alldifferent(places),
        sum1 #= a + b + c + d,
        sum1 #= b + e + f + g,
        sum1 #= d + g + h + i,
        flatten([places,sums],allVars),
        labeling(allVars).

我得到的错误是:

[eclipse 13]: compile('2a.ecl').        
undefined arithmetic expression in _1187 is sum1 in module eclipse
syntax error : in source transformation in triangle(sums) :- places = [a, b, c, d, e, f, g, h, i], places :: 1 .. 9, sums = [sum1], sums :: 10 .. 30, alldifferent(places), sum1 #= a + b + c + d, flatten([places, sums], allVars), labeling(allVars)

1 个答案:

答案 0 :(得分:1)

在ECLiPSe中,与Prolog一样,变量名称必须以大写字母或下划线开头:

Places = [A,B,C,D,E,F,G,H,I],