Как минимизировать количество экземпляров литерала, в clingo 4.5
Я не уверен, как написать заявление об оптимизации в clingo4 (ASP Solver).
Я хочу минимизировать общее количество экземпляров определенных литералов в каждом наборе ответов.
Я имитирую агента реагирования на огонь в 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 ответ
Как насчет
#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 к факту
- Отметьте (позвоните, отправьте, активируйте), Guard, Area и Time, чтобы каждый факт учитывался. Например, без тега
activate_file_suppression(foo, 20, 21)
а такжеcall_fire_department(foo, 20, 21)
будет объединен в наборе.