NbVariables = 4;
NbLocations = 4;

const int x1 = 50;
const int x2 = 75;

const double t1 = 0.025;
const double t2 = 0.05;

VariablesList = {t,d,n,test_abs};

LocationsList = {l0, l1, l2, l3};

AVG(Last(d));

InitialLocations={l0};
FinalLocations={l2};

Locations={
(l0,   TRUE , (t:1));
(l1,   TRUE , (t:1));
(l2,   TRUE , (t:1));
(l3,   TRUE , (t:1));
};

Edges={
((l0,l1), #, t>=0, {n=P,test_abs=k_1*(E*S)+(k_2+k_3)*ES,d=9997999});

((l1,l2), #, t>=t2 & n<=x1-1, #);
((l1,l2), #, t>=t2 & n>=x2+1, #);
((l1,l2), #, t>=t1 & d=0, #);

((l1,l3), #, t<=t1 & n<=x1-1, {d=min(((t-t1)^2+(n-x2)^2)^0.5,((t-t1)^2+(n-x1)^2)^0.5)});
((l1,l3), #, t<=t1 & n>=x2+1, {d=min(((t-t1)^2+(n-x2)^2)^0.5,((t-t1)^2+(n-x1)^2)^0.5)});
((l1,l3), #, n>=x1 & n<=x2, {d=0});
((l1,l3), #, t>=t1 & n<=x1-1, {d=min(d,min(((n-x1)^2)^0.5,((n-x2)^2)^0.5))});
((l1,l3), #, t>=t1 & n>=x2+1, {d=min(d,min( ((n-x1)^2)^0.5, ((n-x2)^2)^0.5 ) ) });

((l3,l1), ALL, t>=0, {n=P,test_abs=k_1*(E*S)+(k_2+k_3)*ES});

((l3,l2), #, t>=t2 ,#);
((l3,l2), #, test_abs=0, #);


%((l1,l2), #, t>=t2 & n<=x1-1, {d=min(((n-x1)^2)^0.5,((n-x2)^2)^0.5)});
%((l1,l2), #, t>=t2 & n>=x2+1, {d=min(((n-x1)^2)^0.5,((n-x2)^2)^0.5)});
%((l1,l2), #, t>=t1 & n>=x1 & n<=x2, {d=0});
%((l1,l2), #, test_abs=0 & t<=t2, #);
%((l1,l2),#, n>=x1 & n<=x2 & t>=t1 & t<=t2 ,{d=0});
%((l1,l2),#, t>=t2 & d=9997999, {d=min(((n-x1)^2)^0.5,((n-x2)^2)^0.5)});
%((l1,l2),#, d=0 & t>=t1, #);
%((l1,l2),#, test_abs=0 , #);
};