Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: None  |  size: 0.75 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Dynamic Programming Scheduler in Prolog
  2. course('CS 4812','Quantum Information Processing',1.0882353,s2012).
  3. course('Math 6110','Real Analysis I',0.5441176,f2011).
  4.        
  5. :- dynamic(stored/6).
  6. memo(Result,Schedule,F11,S12,F12,S13) :-
  7.   stored(Result,Schedule,F11,S12,F12,S13) -> true;
  8.   dpScheduler(Result,Schedule,F11,S12,F12,S13),
  9.   assertz(stored(Result,Scheduler,F11,S12,F12,S13)).
  10.        
  11. dpScheduler((Acc,X),Acc,0,0,0,0) :-
  12.   !, evalSchedule(X,Acc).
  13.        
  14. dpScheduler(Answer,Acc,N,B,C,D) :-
  15.   !, M is N - 1,
  16.   getCourses(Courses,f2011,Acc),
  17.   lemma([Head|Tail],Courses,Acc,M,B,C,D),
  18.   findBest(Answer,Tail,Head).
  19.        
  20. lemma(Results,Courses,Acc,F11,S12,F12,S13) :-
  21.   findall(Result,
  22.     (member(Course,Courses), memo(Result,[Course|Acc],F11,S12,F12,S13)),
  23.     Results).