나는 함수의 최소 비용을 최적화하고 찾으려고합니다. 아래 프로그램은 findall/3
을 사용하여 SWI-Prolog에서 제공하는 clpfd
라이브러리를 사용하여 생성 된 모든 가능한 값 옵션을 반복합니다.findall/3을 사용하여 최적화 된 최소값
아래에이 프로그램을 사용하여 생성 된 값 중 일부가 목록으로 수집됩니다. 최소값을 얻으려면 단순히 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