% doktor obavlja doktor_obavlja('Dr1', 'pregled'). doktor_obavlja('Dr2', 'pregled'). doktor_obavlja('Dr2', 'masaža'). doktor_obavlja('Dr3', 'masaža'). doktor_obavlja('Dr3', 'uvod'). doktor_obavlja('Stažist', 'uvod'). % raspoloživost doktora doktor_raspoloziv('Dr1', '8-10'). doktor_raspoloziv('Dr1', '10-12'). doktor_raspoloziv('Dr1', '12-14'). doktor_raspoloziv('Dr1', '14-16'). % sredina dana doktor_raspoloziv('Dr2', '10-12'). doktor_raspoloziv('Dr2', '12-14'). % popodnevna smjena doktor_raspoloziv('Dr3', '12-14'). doktor_raspoloziv('Dr3', '14-16'). doktor_raspoloziv('Stažist', '8-10'). % zauzeca doktora doktor_zauzet('Dr1', '8-10'). %doktor_zauzet('Dr2', '12-14'). % zauzeca prostora prostor_zauzet('soba1', '8-10'). prostor_zauzet('soba2', '16-18'). % resursi resurs_zauzet('EKG', '8-10', 'zauzet'). % koji resursi su u kojim prostorima prostor_resurs('soba1', ['EKG','stol','ploča']). prostor_resurs('soba2', ['stol','ploča']). prostor_resurs('soba3', ['stol','solarij']). prostor_resurs('soba4', ['ploča']). % aktivnosti trebaju aktivnost_resurs('pregled', ['stol','EKG']). aktivnost_resurs('masaža', ['stol', 'solarij']). aktivnost_resurs('uvod',['ploča']). % preferencije pacjenta preferira_vrijeme('Ivan', '8-10'). preferira_vrijeme('Ivan', '10-12'). preferira_vrijeme('Ivan', '12-14'). %preferira_vrijeme('Ivan', '14-16'). preferira_vrijeme('Pero', '12-14'). preferira_vrijeme('Spavalo', '14-16'). element(X,[G|_]) :- X == G. element(X,[_|R]) :- element(X,R). subset([],_). subset([G|R],X) :- element(G,X),subset(R,X). % koju aktivnost možemo dobiti kod koga i kada? aktivnost_kod_kada(AKTIVNOST, DOKTOR, KADA) :- doktor_obavlja(DOKTOR, AKTIVNOST), doktor_raspoloziv(DOKTOR, KADA), not( doktor_zauzet(DOKTOR, KADA) ). % koje aktivnost se mogu održati u kojem prostoru? aktivnost_prostor_oprema(AKTIVNOST, PROSTOR, OPREMA) :- aktivnost_resurs(AKTIVNOST, OPREMA), prostor_resurs(PROSTOR, SVAOPREMA), subset(OPREMA,SVAOPREMA). schedule(PACIJENT, DOKTOR, PROSTOR, AKTIVNOST, KADA, OPREMA) :- doktor_obavlja(DOKTOR, AKTIVNOST), doktor_raspoloziv(DOKTOR, KADA), not( doktor_zauzet(DOKTOR, KADA) ), aktivnost_resurs(AKTIVNOST, OPREMA), prostor_resurs(PROSTOR, SVAOPREMA), not( prostor_zauzet(PROSTOR, KADA) ), subset(OPREMA,SVAOPREMA), preferira_vrijeme(PACIJENT, KADA).