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.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							44 lines
						
					
					
						
							1.5 KiB
						
					
					
				|  | |
| // Stochastic Job Scheduling, based on [] | |
| // Encoding by Junges & Quatmann | |
| // RWTH Aachen University | |
| // Please cite Quatmann et al: Multi-objective Model Checking of Markov Automata | |
| ma | |
|  | |
| const double x_j1 = 1.0; | |
| const double x_j2 = 2.0; | |
| const double x_j3 = 3.0; | |
| formula is_running = r_j1 + r_j2 + r_j3 > 0; | |
| formula num_finished = f_j1 + f_j2 + f_j3; | |
| module main | |
| 	r_j1 : [0..1]; | |
| 	r_j2 : [0..1]; | |
| 	r_j3 : [0..1]; | |
| 	f_j1 : [0..1]; | |
| 	f_j2 : [0..1]; | |
| 	f_j3 : [0..1]; | |
| 	<> (r_j1 = 1)  -> x_j1 : (r_j1' = 0) & (r_j2' = 0) & (r_j3' = 0) & (f_j1' = 1); | |
| 	<> (r_j2 = 1)  -> x_j2 : (r_j1' = 0) & (r_j2' = 0) & (r_j3' = 0) & (f_j2' = 1); | |
| 	<> (r_j3 = 1)  -> x_j3 : (r_j1' = 0) & (r_j2' = 0) & (r_j3' = 0) & (f_j3' = 1); | |
| 	[] (!is_running) & (num_finished = 2) & (f_j1 = 0) -> 1: (r_j1' = 1); | |
| 	[] (!is_running) & (num_finished = 2) & (f_j2 = 0) -> 1: (r_j2' = 1); | |
| 	[] (!is_running) & (num_finished = 2) & (f_j3 = 0) -> 1: (r_j3' = 1); | |
| 	[] (!is_running) & (num_finished <= 1) & (f_j1 = 0) & (f_j2 = 0) -> 1: (r_j1' = 1) & (r_j2' = 1); | |
| 	[] (!is_running) & (num_finished <= 1) & (f_j1 = 0) & (f_j3 = 0) -> 1: (r_j1' = 1) & (r_j3' = 1); | |
| 	[] (!is_running) & (num_finished <= 1) & (f_j2 = 0) & (f_j3 = 0) -> 1: (r_j2' = 1) & (r_j3' = 1); | |
| endmodule | |
| init | |
| 	r_j1 = 0 & | |
| 	r_j2 = 0 & | |
| 	r_j3 = 0 & | |
| 	f_j1 = 0 & | |
| 	f_j2 = 0 & | |
| 	f_j3 = 0 | |
| endinit | |
| label "all_jobs_finished" = num_finished=3; | |
| label "half_of_jobs_finished" = num_finished=2; | |
| label "one_job_finished" = num_finished=1; | |
| label "slowest_before_fastest" = f_j1=1 & f_j3=0; | |
| rewards "avg_waiting_time" | |
|  true : (3-num_finished)/3; | |
| endrewards
 |