http://www.zweigmedia.com/RealWorld/tutorialsf4/framesLinProGr.html에서 첫 번째 선형 프로그래밍 문제를 해결하려고합니다. X와 Y는 제로 또는 포지티브이며, 합은 최대 50 개가 될 수 있습니다. 2X + Y는 최대 60 개가 될 수 있습니다. 함수 X + 3Y는 최대화되어야합니다.프롤로그로 선형 프로그래밍 문제 해결
mysol2(X,Y,Z):-
X in 0..sup, % Error: Syntax error: Operator expected
Y in 0..sup,
X + Y =< 50,
2 * X + Y =< 60,
Z is max(X + 3*Y).
그러나, 그것은 (오류가 위의 표시)도로드되지 않습니다 :
나는 다음과 같은 코드를 사용하고 있습니다.
다음 코드와:
mysol2(X,Y,Z):-
X >= 0,
Y >= 0,
X + Y =< 50,
2 * X + Y =< 60,
Z is max(X + 3*Y).
프로그램로드하지만 실행에 :
ERROR: >=/2: Arguments are not sufficiently instantiated
가 어떻게 이러한 오류를 정정 할 수 있습니까?
SWI-Prolog에는 어느 라이브러리가 있습니까? – rnso
SWI-Prolog는 SICStus CLP (Q) 라이브러리의 [포트] (http://eu.swi-prolog.org/man/clpqr.html)와 함께 제공됩니다. 그러나 SWI 구현에는 실수가 있으므로 권장 할 수 없습니다. – mat
솔루션 '(X, 50), X = 0 + 0.'이 실패하는 동안'X = 0 + 0, solution (X, 50) .'이 성공합니다. 그러나'(is)/2','(> =)/2' ...에는이 문제가 없습니다. – false