欢迎访问CMODELS主页
描述
当前版本的系统Cmodels是3.86.1。
从Cmodels的3.81版开始,系统支持增量答案集求解。(可以动态地为程序添加约束。)提供并记录了增量应答服务器解决的接口在table.h源文件中。
C模型说明
Cmodels是一个为任一析取逻辑计算答案集的系统包含选择规则的程序或逻辑程序。答案集解算器Cmodels使用SAT解算器作为搜索引擎用于枚举逻辑程序的模型--可能的解决方案,如果是析取程序SAT求解器zChaff也用于验证所发现模型的极小性。系统Cmodels基于两个语义之间的关系:逻辑程序的答案集和完成语义。对于被称为tight的大类程序,答案集语义与完成语义等价,因此SAT解算器可以枚举此类程序的答案集。另一方面,对于非轻型项目[6], 和[7]介绍了循环的概念公式,并表明完成模型扩展了所有程序的循环公式等价于答案集程序的。不幸的是,循环公式的数量可能很大,因此,计算所有这些可能会变得计算昂贵。这导致采用计算循环公式“按需”用于查找答案程序集。
Cmodels算法
C模型
- 1) 简化了给定的程序,
- 2) 验证简化程序是否严密,
- 3) 验证简化程序是否无头循环,
- 4) 形成竣工,
- 5) 将补语转换为子句形式,
- 6) 调用SAT解算器查找完成的模型,
- 7) 如果没有这样的模型,则返回没有答案集的结果,否则返回
- 8)
a) 如果程序很紧,则返回一个模型作为答案集。[2,5,10]
b) 如果程序不严密验证模型是否确实是一个答案集(如果程序不是无头循环SAT解算器zChaff为此验证调用)。
- 9) 如果模型是答案集,则返回答案集。当需要多个答案集时:
a) 在Relsat的情况下,Cmodels增加了对当前模型的否定并返回到步骤5。
b) 在Simo或zChaff的情况下,Cmodels添加了对当前模型的否定并使求解器继续进行计算。SAT解算器返回模型Cmodels后,返回步骤6。
- 10) 如果模型不是答案集,Cmodels将查找循环公式对当前模型不满意
a) 如果是Relsat Cmodels,则添加循环公式,然后返回步骤5
b) 如果Simo或zChaff Cmodels发现一个不满意子句从一个循环公式推导而来。注意本条款也可能是循环公式本身。它将此子句传递回SAT求解器,并使SAT解算器继续进行计算。SAT解算器继续计算并将新模型返回给Cmodels。Cmodels返回到步骤6。
有关Cmodels的一般信息
在某些情况下,此方法生成答案集的速度比算法快用于通用答案集求解器例如斯莫德尔斯(请参见基准点.tar和比较.ps).
Cmodels类似于Smodels或GnT,因为它的输入是接地的可以由前端生成的逻辑程序调用Lparse(Lparse),(L解析--dlp-choice或Lparse--dlp)或格林戈.您可以在中找到有关Lparse输入语言的信息Lparse用户手册.
C模型的输入可能包含权重约束,但不允许使用optimize语句。重量的表示Cmodels中使用的命题公式的约束基于[三].
Cmodels由编写尤利娅·利勒在其他成员的帮助下奥斯汀德克萨斯行动小组和马可·马拉特。该程序包含由编写的代码的某些部分帕特里克·西蒙斯用于系统Smodels。Cmodels还包括SAT求解器的代码西蒙,微型卫星,和zChaff公司.Marcello Balduccini修改了Windows的Cmodels代码。
安装Cmodels
C模型Sun/Linux/Windows代码.
Sun/Linux说明
- 下载Cmodels并解压缩软件包:
%gunzip模型-3.tar.gz
%tar xf cmodels-3.tar
- 光盘
到cmodels目录并编译程序(gcc版本4.6.3最后用于编译):
%cd模型
%制造
- 创建别名
别名cmodels 路径_模型/c模型 路径_模型/配置
(路径_模型是cmodels目录的完整路径)。您可以在README中找到有关CONFIG文件的更多信息。使用执行CmodelsRelsat要求将SAT解算器的可执行文件放在与Cmodels的可执行文件相同的目录。
调用Cmodels
Cmodels通常按如下方式调用:
%lparse(液化石油气) (选项)程序|厘米模式 (选项)
或
%外国佬 (选项)程序|c模型 (选项)
(程序是包含输入程序的文件的名称)。
两者都有lparse(液化石油气)和c模型可以后面跟着选项。指定输入程序是析取的lparse(液化石油气)应该后跟选项--dlp选项或--分布式处理程序.以防when选项--dlp选项使用析取,选择规则为允许在Lparse的输入。When选项--分布式处理程序由Lparse、Cmodels使用应遵循相同的选项--分布式处理程序. Lparse的其他选项在Lparse用户手册.
Cmodels的选项
用法:c模型[-解算器] [数][--dlp][-verify<0或1>][-numlf]
-解算器
使用解算器找到解决方案。可能的值为-兹克(默认)用于zChaff,-毫秒对于Minisat,-硅对于Simo来说,-秒代表Relsat。
--分布式处理程序
指定输入程序的cmodel析取的没有选择规则,即Lparse--分布式处理程序用于分析输入程序。
数
找到给定数量的完成模型(0表示“计算所有模型”;1是默认值)。
-验证<0或1>
此标志指定验证模型的方法当程序不是无磁头循环时:-verify 0考虑到程序的结构并拆分子程序验证模型的验证(默认);-verify 1使用方法类似于GnT中使用的方法。有关上一个的更多信息方法可以在中找到[11].
-数字
如果程序是析取的默认情况下,只有1个子句未被模型满足添加了from loop公式。使用此标志,您可以指定数量要添加的子句。
笔记
官方网站米(z)颖壳,微型卫星,西蒙,Relsat公司,Lparse(Lparse)可能包含有关系统更新版本的信息。
在UT奥斯汀CS部门的linux机器上cmodels目录是/项目/tag/cmodels3/linux。在这些计算机上运行Cmodels所需的别名是
别名cmodels/projects/tag/cmodels3/linux/cmodels
如果你喜欢Cmodels
那么你可能也对系统感兴趣
亚萨特,黑匣子,CCalc公司,DLV公司,斯莫德尔斯、和VITAL公司.
问题?
发送电子邮件至cmodels-help@cs.utexas.edu.
相关出版物
[1] 于。Babovich、E.Erdem和V.Lifschitz,Fages定理与答案集编程.英寸第八届非单调推理国际研讨会论文集, 2000.
[2] E.Erdem和V.Lifschitz,严密的逻辑程序。已提交以供发布。
[3] P.Ferraris和V.Lifschitz,权重约束作为嵌套表达式,未发表的草稿。
[4] V.Lifschitz,答案集编程和计划生成.人工智能,第138卷,2002年。
[5] 于。Babovich和V.Lifschitz,使用程序完成计算答案集,2003年未发表的草案。
[6] F.Lin和Yu。赵,ASSAT:用SAT解算器计算逻辑程序的答案集,程序中。AAAI-02标准。
[7] J.Lee和V.Lifschitz,循环析取逻辑程序的公式,进行中。ICLP,2003年。
[8] 于。Lierler和M.Maratea,模型-2:基于SAT的答案集求解器增强到非右程序,进行中。第页,共页LPNMR-72004年。
[9]E.Giunchiglia,Yu。Lierler和M.Maratea,模型-2:基于SAT的答案集编程,进行中。AAAI的, 2004.
[10]于。利勒,C模型紧析取逻辑程序,进行中。WCLP的,2005
[11]于。利勒,基于可满足性的析取答案集编程,进行中。ASP研讨会,2005年。
[12]E.Giunchiglia,Yu。M.Maratea Lierler先生基于命题可满足性的答案集规划,发表在《自动推理杂志》(Journal of Automated Reasoning),2006年。