【问题标题】:SWI Prolog maximize function appears to not workSWI Prolog 最大化功能似乎不起作用
【发布时间】:2014-07-16 15:15:25
【问题描述】:

我是 prolog 新手,我在 ubuntu 上使用 swi-prolog 来学习。我正在使用clpfd 模块来解决工人/产品分配问题。 该问题在第 7 页的this 论文中有所说明。 以下是我从那篇论文中得到的信息。

solver(Sol) :- 
   Sol = [A,B,C,D],
   [A,B,C,D] ins 1..4,
   all_distinct(Sol),
   element(A,[7,1,3,4],A1),
   element(B,[8,2,5,1],B1),
   element(C,[4,3,7,2],C1),
   element(D,[3,1,6,3],D1),
   A1 + B1 + C1 + D1 #= E,
   maximize(E,Sol),
   label(Sol).

我无法让maximize 工作。它会引发错误

ERROR: solver/1: Undefined procedure: maximize/2
ERROR:   However, there are definitions for:
ERROR:         maximize/3

有人能指出为什么maximize 函数没有按预期工作,或者我应该如何构建它?提前致谢。

【问题讨论】:

    标签: prolog swi-prolog clpfd


    【解决方案1】:

    在 SWI-Prolog 中,最大化可作为 labeling/2 选项使用。将maximize/2label/1 目标替换为:

    labeling([max(E)], Sol]

    在回溯时,您会以E 的降序获得解决方案。

    【讨论】:

    • s(X):今天刚刚使用了min(Expr)。我挖它是完整的
    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2012-04-06
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多