用于ASP求解的Python包Clynbor

Clyngor

什么是Clyngor?

在这里插入图片描述
进到它的项目主页,我就被这张图片深深吸引了。
在之前的文章中已经讲到了Answer Set Programming(回答集编程),以.lp做结尾的脚本,如果我们想将使用ASP做任务规划的话,如何将它使用到我们的项目工程当中至关重要。所以,Clyngor就可以来帮我们了。当然,也可以使用clingo 的API,但我们这次来简单讲讲Clyngor。

安装Clyngor

$ pip install clyngor

Python中嵌入ASP

from clyngor import ASP
answers=ASP("""
	#你的ASP程序代码
""")
for answer in answers:
		print (answer)

或者使用solve:

from clyngor import solve
answers = solve(inline="""
	#你的ASP程序代码
""")
for answer in answers:
		print (answer)

或者直接调用ASP源码脚本:

answers = solve('concepts.lp')

如果想要更加直接的得到ASP的结果,我们在ASP脚本中使用“#show”后,在Python中:

for answer in answers.sorted:
		print (answer)

ASP中嵌入Python

Clyngor提供了converted_types功能,允许从ASP代码内部调用python时避免基于类型注释的样板代码。

#script(python)
from clyngor.upapi import converted_types
@converted_types #如果不使用converted_types,则用户必须确保该f函数返回列表,并且参数为预期类型。
def f():
    ............
#end. %结束
p(X):-(X)=@f(). %调用

一个简单地例子:输入城市一城市二,这两个城市之间有路。

#script(python)
from clyngor.upapi import converted_types
@converted_types
def road():
    city=input('Please input the city:')
    return city
#end.

city1(X):-(X)=@road().
city2(Y):-(Y)=@road().

road(X,Y):-city1(X),city2(Y).

% Displa
#show road/2.

结尾

Clyngor项目首页:https://github.com/aluriak/clyngor
Clyngor团队很活跃,他们的更新速度很快,大家可以时不时关注以下。战斗尚未结束,同志还需努力💪。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值