Я пытаюсь оптимизировать и найти минимальную стоимость функции. В приведенной ниже программе используется findall/3
для перебора всех возможных значений значений, которые генерируются при использовании библиотеки , предоставляемой SWI-Prolog.Оптимизированное минимальное значение с помощью findall/3
Есть несколько значений Cost
, которые сгенерированы с использованием этой программы, ниже которой собраны в список. Я знаю, что для получения минимального значения я могу просто использовать предикат min_list/2
. Однако я хочу, чтобы после того, как программа обнаружила определенное значение, которое в настоящее время является минимальным, при вычислении других параметров, если значение оказывается больше минимального значения, оно не добавлено в список.
По сути, я хочу оптимизировать программу так, чтобы она просто учитывала минимальное значение, генерируемое программой.
optimise(input, arguments, Cost):-
findall(Cost, some_predicate(input, arguments, Cost), List).
some_predicate(input, arguments, Cost):-
Option in input..arguments, label(Option),
find_data(Option, Value),
find_cost(Value, Cost).
Вышеупомянутый код был изменен, так что он сгущен и отвечает цели.
Что * * является вопрос? – lurker
Как говорится - «оптимизируйте программу так, чтобы она просто учитывала минимальное значение, генерируемое программой» – Namit