1

我不确定如何在 cligo4(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].

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

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

谢谢。

4

1 回答 1

3

怎么样

#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)将被合并到集合中。
于 2015-06-16T19:32:41.543 回答