【问题标题】:SWI Prolog, CLP(R): Can I bind a constraint to a variable?SWI Prolog,CLP(R):我可以将约束绑定到变量吗?
【发布时间】:2019-06-26 15:58:31
【问题描述】:

或者可以将约束变量绑定到另一个变量(参见下面的示例)?

?- use_module(library(clpr)).
true.

% this works
?- {X >= 5.0, X =< 10.0}, minimize(X).
X = 5.0 .

% but I do not know why this fails
?- C = {X >= 5.0, X =< 10.0}, minimize(X).
false.

% and this also fails consequently
?- C = {X >= 5.0, X =< 10.0}, term_variables(C, [Var]), minimize(Var).
false.

【问题讨论】:

    标签: prolog swi-prolog clpr


    【解决方案1】:

    Prolog 没有“赋值”,因此请注意,通常您应该首先了解其独特的编程模型。在这种特殊情况下,您可以“调用”您的绑定,让 library(clpr) 有机会执行其复杂的职责:

    ?- use_module(library(clpr)).
    true.
    
    ?- {X >= 5.0, X =< 10.0}, minimize(X).
    X = 5.0 ;
    false.
    
    ?- C = {X >= 5.0, X =< 10.0}, C, minimize(X).
    C = {5.0>=5.0, 5.0=<10.0},
    X = 5.0 ;
    false.
    

    但我认为将这个技巧系统地应用于您的约束模型可能会导致应用程序脆弱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多