최적화 제약
최적화 제약
FD 변수를 최소화/최대화하는 술어들을 설명해요.
본문
fd_minimize/2, fd_maximize/2
Templates
fd_minimize(+callable_term, ?fd_variable)
fd_maximize(+callable_term, ?fd_variable)
Description
fd_minimize(Goal, X)는 변수 X를 최소화하는 값을 찾기 위해 Goal을 반복적으로 호출해요. Goal은 X를 인스턴스화해야 하는 Prolog 목표인데, 일반적인 경우는 fd_labeling/2(9.9.1절)의 사용이에요. 이 술어는 재시작이 있는 분기-한정(branch-and-bound) 알고리즘을 사용해요: call(Goal)이 성공할 때마다 계산은 Goal의 마지막 호출 끝에 있는 X의 값인 V에 대한 새 제약 X #< V로 재시작돼요. 실패가 발생하면(Goal에 남은 선택점이 없거나 추가된 제약이 저장소의 나머지와 모순되기 때문에) 마지막 해가 최적이므로 다시 계산돼요.
fd_maximize(Goal, X)는 fd_minimize/2와 비슷하지만 X가 최대화돼요.
Errors
- Goal이 변수 —
instantiation_error - Goal이 변수도 callable 항도 아님 —
type_error(callable, Goal) - Goal의 술어 지시자 Pred가 기존 프로시저에 대응하지 않고
unknownProlog 플래그 값이 error(8.22.1절) —existence_error(procedure, Pred) - X가 변수도 FD 변수도 정수도 아님 —
type_error(fd_variable, X)
Portability: GNU Prolog 술어.