You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.3 KiB
99 lines
3.3 KiB
// Bug fixed in svn rev 11059
|
|
// Value iteration multi-objective Pareto generation was using wrong direction vector in some cases
|
|
|
|
|
|
mdp
|
|
|
|
const double pse = 0.2;
|
|
const double pusb = 0.6;
|
|
const double prav = 0.7;
|
|
const double pef = 0.75;
|
|
const double prc = 0.85;
|
|
|
|
//player a
|
|
//attacker, [doAttackSE], [dontDoAttackSE], [doAttackUSB], [dontDoAttackUSB],
|
|
//[doAttackEF], [dontDoAttackEF],
|
|
//[prob_SE_OR_USB], [prob_NRAV], [prob_NRC_AND_EF],
|
|
//[succeed] , [fail]
|
|
//endplayer
|
|
|
|
//player d
|
|
//[doDefenceRAV], [dontDoDefenceRAV], [doDefenceRC], [dontDoDefenceRC]
|
|
//endplayer
|
|
|
|
module attacker
|
|
|
|
s:[0..8];
|
|
|
|
doSE : bool init false;
|
|
doUSB : bool init false;
|
|
doRAV : bool init false;
|
|
doRC : bool init false;
|
|
doEF : bool init false;
|
|
|
|
//subtree t_SU = SE_OR_USB
|
|
success_t_SU : bool init false;
|
|
//subtree t_VF = SE_OR_USB_AND_NRAV
|
|
success_t_VF : bool init false;
|
|
//whole tree
|
|
success_Root : bool init false;
|
|
|
|
//nondeterministic transactions of sub-tree SE_OR_USB
|
|
[doAttackSE_USB] s=0 -> (s'=1)&(doSE'=true)&(doUSB'=true);
|
|
[doAttackSE] s=0 -> (s'=1)&(doSE'=true);
|
|
[doAttackUSB] s=0 -> (s'=1)&(doUSB'=true);
|
|
[dontDoAttackSE_USB] s=0 -> (s'=1);
|
|
|
|
|
|
//probabilistic transactions of sub-tree SE_OR_USB (t_SU)
|
|
[prob_SE_OR_USB] s=1 & doSE=true & doUSB=true -> 1-(1-pse)*(1-pusb):(s'=2)&(success_t_SU'=true) + (1-pse)*(1-pusb):(s'=2)&(success_t_SU'=false);
|
|
[prob_SE_OR_USB] s=1 & doSE=true & doUSB=false -> pse:(s'=2)&(success_t_SU'=true) + (1-pse):(s'=2)&(success_t_SU'=false);
|
|
[prob_SE_OR_USB] s=1 & doSE=false & doUSB=true -> pusb:(s'=2)&(success_t_SU'=true) + (1-pusb):(s'=2)&(success_t_SU'=false);
|
|
[prob_SE_OR_USB] s=1 & doSE=false & doUSB=false -> (s'=2)&(success_t_SU'=false);
|
|
|
|
//nondeterministic transactions of sub-tree NEG_RAV
|
|
[doDefenceRAV] s=2 ->(s'=3)&(doRAV'=true);
|
|
//[dontDoDefenceRAV] s=2 -> (s'=3);
|
|
|
|
//probabilistic transactions of sub-tree NEG_RAV (t_VF)
|
|
[prob_NRAV] s=3 & success_t_SU=true & doRAV=true -> (1-prav):(s'=4)&(success_t_VF'=true) + prav:(s'=4)&(success_t_VF'=false);
|
|
[prob_NRAV] s=3 & success_t_SU=true & doRAV=false -> (s'=4)&(success_t_VF'=true);
|
|
[prob_NRAV] s=3 & success_t_SU=false -> (s'=4)&(success_t_VF'=false);
|
|
|
|
//nondeterministic transactions of sub-tree EF_AND_NEG_RC
|
|
[doDefenceRC] s=4 -> (s'=5)&(doRC'=true);
|
|
//[dontDoDefenceRC] s=4 -> (s'=5)&(doRC'=false);
|
|
|
|
[doAttackEF] s=5 -> (s'=6)&(doEF'=true);
|
|
[dontDoAttackEF] s=5 -> (s'=6)&(doEF'=false);
|
|
|
|
//probabilistic transactions of sub-tree EF_AND_NEG_RC
|
|
[prob_NRC_AND_EF] s=6 & success_t_VF=true & doRC=true & doEF=true -> pef*(1-prc):(s'=7)&(success_Root'=true) + 1-pef*(1-prc):(s'=7)&(success_Root'=false);
|
|
//[prob_NRC_AND_EF] s=6 & success_t_VF=true & doRC=true & doEF=false ->(s'=7)&(success_Root'=false);
|
|
[prob_NRC_AND_EF] s=6 & success_t_VF=true & doRC=false & doEF=true -> pef:(s'=7)&(success_Root'=true) + (1-pef):(s'=7)&(success_Root'=false);
|
|
[prob_NRC_AND_EF] s=6 & success_t_VF=true & doEF=false -> (s'=7)&(success_Root'=false);
|
|
[prob_NRC_AND_EF] s=6 & success_t_VF=false -> (s'=7)&(success_Root'=false);
|
|
|
|
|
|
[succeed] s=7&success_Root=true -> (s'=8);
|
|
[fail] s=7&success_Root=false -> (s'=8);
|
|
|
|
endmodule
|
|
|
|
|
|
//success state for an attacker
|
|
label "success" = s=8&success_Root=true;
|
|
label "end" = s=8;
|
|
|
|
rewards "cost"
|
|
[doAttackSE_USB] true:10;
|
|
[doAttackSE] true:2;
|
|
[doAttackUSB] true:8;
|
|
[doAttackEF] true:5;
|
|
endrewards
|
|
|
|
rewards "success"
|
|
[succeed] true:1;
|
|
endrewards
|
|
|
|
|