Сетоф: Есть ли способ пораньше остановиться? - PullRequest
0 голосов
/ 05 мая 2020

Я хочу найти минимальное количество ошибок для множества расписаний. Я составляю расписание, беру его ошибки, сохраняю все ошибки в списке и беру первый элемент (MinError). MinError> = 0, поэтому мне интересно, могу ли я остановить этот процесс, когда случайное расписание получает Errors = 0 и возвращает MinError.

setof(Errors,A^B^C^(schedule(A,B,C),schedule_errors(A,B,C,Errors)),[MinError|_]).

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать if-then-else с сокращением, чтобы прекратить обработку дальнейших решений, когда вы найдете свои минимумы:

setof(Errors, 
      A^B^C^(
             schedule(A,B,C),
             schedule_errors(A,B,C,Errors),
             (Errors=0 -> ! ; true)
            ), 
      [MinError|_]).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...