mdp
const int K;
const double accu_load1 = 0.9;
const double accu_load2 = 0.8;
const double fd = 0.7;
module operator
k:[0..K*100] init 0;
t:[0..2] init 0;
s:[0..2] init 0;
[image] t=0 & s=0 -> 0.5:(t'=1) & (s'=0) + 0.5:(t'=2) & (s'=0);
[] t=1 & s=0 & k<K*100 -> accu_load1:(s'=1)&(k'=k+1) + (1-accu_load1):(s'=2)&(k'=k+1);
[] t=1 & s=0 & k=K*100 -> accu_load1*fd:(s'=1) + (1-accu_load1*fd):(s'=2);
[] t=2 & s=0 & k<K*100 -> accu_load2:(s'=1)&(k'=k+1) + (1-accu_load2):(s'=2)&(k'=k+1);
[] t=2 & s=0 & k=K*100 -> accu_load2*fd:(s'=1) + (1-accu_load2*fd):(s'=2);
[wait] s=2 -> (t'=0) & (s'=0);
[leave] s=1 -> (t'=0) & (s'=0);
endmodule
module UAV
w:[0..7] init 0;
send: bool init true;
in: bool init true;
[image] w!=7 & send -> (send'=false);
[wait] w!=7 & !send -> (send'=true);
[leave] w!=7 -> (in'=false);
[a] w=0 & !in -> (w'=7);
[b] w=0 & !in -> (w'=1) & (in'=true) & (send'=true);
[c] w=1 & !in -> (w'=2) & (in'=true) & (send'=true);
[d] w=1 & !in -> (w'=3) & (in'=true) & (send'=true);
[e] w=2 & !in -> (w'=4) & (in'=true) & (send'=true);
[f] w=3 & !in -> (w'=6) & (in'=true) & (send'=true);
[g] w=4 & !in -> (w'=5) & (in'=true) & (send'=true);
[h] w=4 & !in -> (w'=6) & (in'=true) & (send'=true);
[i] w=5 & !in -> (w'=7);
[j] w=6 & !in -> (w'=7);
[] w=7 -> true;
endmodule
label "end" = (w=7);
rewards "time"
[wait] true: 1;
[a] true: 6;
[b] true: 2;
[c] true: 1;
[d] true: 2;
[e] true: 2;
[f] true: 5;
[g] true: 1;
[h] true: 2;
[i] true: 2;
[j] true: 3;
endrewards
rewards "risk"
[a] true: 5;
[e] true: 1;
[h] true: 1;
[i] true: 1;
endrewards