% % Reward Function 1 % % Only take the traveling distance into account. % :- dynamic(reward/2). reward(0, s0). reward(0, do(A, S)):- not A = mobilizeS(_, _, _). reward(R, do(A, S)):- A = mobilizeS(Car, loc(X, Y), T), carLocation(Car, loc(X1,Y1), T, S), distance(loc(X1, Y1), loc(X, Y), D1), D is D1 + 1, avgTimePerBlockEmergHome(V), rOntime(Ro), Z1 is (0 - D * V) / D, gsl_std_normal_cdf(Z1, Prob1), Z2 is (660 - D * V) / D, gsl_std_normal_cdf(Z2, Prob2), ProbOntime is Prob2 - Prob1, R is ProbOntime * Ro.