如何在clingo 4.5中最小化文字的实例数

时间:2015-06-15 18:44:25

标签: answer-set-programming clingo

我不确定如何在clingo4(ASP求解器)中编写优化语句。

我想最小化每个答案集中某些文字的实例总数。

我在ASP中模拟火灾响应代理。代理可以选择在不同时间执行某些简单操作,例如:

0{call_fire_department(Area, Time, Time+1)}1:- [preconditions].
0{send_security_guard(Guard, Area, Time, Time+1)}1:- [preconditions].
0{activate_fire_suppression(Area, Time, Time+1)}1:- [preconditions].

代理人在特定时间有目标,需要混合使用上述操作。我想尽量减少上述每个实例的数量,同时仍然实现代理目标。

如何编写适当的优化声明? (我假设我需要一个'最小化'声明)。

感谢。

1 个答案:

答案 0 :(得分:1)

怎么样

#minimize{
    1, call, Area, Time : call_fire_department(Area, Time, Time+1) ;
    1, send, Guard, Area, Time : send_security_guard(Guard, Area, Time, Time+1) ;
    1, activate, Area, Time : activate_fire_suppression(Area, Time, Time+1)
}.
  • 1表示对事实计数1
  • 标记(呼叫,发送,激活),保护,区域和时间确保计算每个事实。例如。没有标记activate_file_suppression(foo, 20, 21)call_fire_department(foo, 20, 21)将合并到集合中。