#include "user.h" #include void parameters() { iopt(IOP_METHOD,VAL_GASEI); iopt(IOP_PR_FULL_MARK,VAL_YES); iopt(IOP_PR_RSET,VAL_NO); iopt(IOP_ITERATIONS,20000); fopt(FOP_PRECISION,0.00000001); iopt(IOP_PR_RGRAPH,VAL_NO); iopt(IOP_PR_MC,VAL_NO); iopt(IOP_PR_PROB,VAL_NO); iopt(IOP_MC,VAL_CTMC); iopt(IOP_DEBUG,VAL_NO); } void net() { /** PLACES **/ place("p1"); place("p2"); place("p3"); place("p4"); place("p5"); place("p6"); place("p7"); /** TRANSITIONS **/ trans("t1"); trans("t2"); trans("t3"); trans("t4"); trans("t5"); trans("t6"); rateval("t1", 0.05); rateval("t3", 0.02); rateval("t4", 0.1); rateval("t6", 0.05); probval("t2", 1.0); priority("t2", 1); probval("t5", 1.0); priority("t5", 1); /** INITIAL MARKING **/ init("p1",1); init("p4",1); init("p5",1); /** INPUT ARCS **/ iarc("t1","p1"); iarc("t2","p2"); iarc("t2","p4"); iarc("t3","p3"); iarc("t4","p5"); iarc("t5","p6"); iarc("t5","p4"); iarc("t6","p7"); /** OUTPUT ARCS **/ oarc("t1","p2"); oarc("t2","p3"); oarc("t3","p1"); oarc("t3","p4"); oarc("t4","p6"); oarc("t5","p7"); oarc("t6","p4"); oarc("t6","p5"); } int assert(){ return(RES_NOERR); } void ac_init() { pr_net_info(); } void ac_reach() { printf("The reachability graph has been generated\n"); } double util() { if (enabled("t3") || enabled("t6")) return(1.0); else return(0.0); } double jobs() { return(mark("p2") + mark("p3") + mark("p6") + mark("p7")); } double tput() { return(0.02*enabled("t3") + 0.05*enabled("t6")); } void ac_final() { pr_mc_info(); pr_std_average(); pr_expected("utilisation",util); pr_expected("number of jobs",jobs); pr_expected("throughput",tput); }