Browse Source

Fixes to the combine_EPN

Yentl Van Tendeloo 8 years ago
parent
commit
e49072b57b
3 changed files with 25 additions and 26 deletions
  1. 2 1
      bootstrap/transform.alc
  2. 23 18
      models/combine_EPN.mvc
  3. 0 7
      models/plant_to_EPN.mvc

+ 2 - 1
bootstrap/transform.alc

@@ -77,7 +77,6 @@ Element function get_possible_bindings(host_model : Element, schedule_model : El
 	String typename
 	String original_typename
 
-
 	options = create_node()
 
 	typename = read_type(schedule_model, current_element)
@@ -110,6 +109,8 @@ Element function get_possible_bindings(host_model : Element, schedule_model : El
 		Element oc
 		String poll
 
+		// TODO optimize: do outgoing first, and only get incoming when not yet failed for incoming (incoming much slower!)
+
 		ic = allIncomingAssociationInstances(schedule_model, current_element, "PreElement")
 		oc = allOutgoingAssociationInstances(schedule_model, current_element, "PreElement")
 

+ 23 - 18
models/combine_EPN.mvc

@@ -6,7 +6,7 @@ A B {
     Composite schedule {
         {Contains} Success success {}
         {Contains} Failure failure {}
-        {Contains} Atomic unselect_all {
+        {Contains} ForAll unselect_all {
             LHS {
                 Pre_Encapsulated_PetriNet/Port pre_ua_1 {
                     label = "1"
@@ -121,32 +121,32 @@ A B {
 
         {Contains} ForAll merge_T2P {
             LHS {
-                Pre_Encapsulated_PetriNet/Place pre_p2t_1 {
+                Pre_Encapsulated_PetriNet/Place pre_t2p_1 {
                     label = "1"
                 }
-                Pre_Encapsulated_PetriNet/Port pre_p2t_2 {
+                Pre_Encapsulated_PetriNet/Port pre_t2p_2 {
                     label = "2"
                     constraint_selected = $
                         Boolean function constraint(value : Boolean):
                             return value!
                         $
                 }
-                Pre_Encapsulated_PetriNet/PortPlace (pre_p2t_2, pre_p2t_1){
+                Pre_Encapsulated_PetriNet/PortPlace (pre_t2p_2, pre_t2p_1){
                     label = "3"
                 }
-                Pre_Encapsulated_PetriNet/Place pre_p2t_4 {
+                Pre_Encapsulated_PetriNet/Place pre_t2p_4 {
                     label = "4"
                 }
-                Pre_Encapsulated_PetriNet/Port pre_p2t_5 {
+                Pre_Encapsulated_PetriNet/Port pre_t2p_5 {
                     label = "5"
                 }
-                Pre_Encapsulated_PetriNet/PortPlace (pre_p2t_5, pre_p2t_4){
+                Pre_Encapsulated_PetriNet/PortPlace (pre_t2p_5, pre_t2p_4){
                     label = "6"
                 }
-                Pre_Encapsulated_PetriNet/Transition pre_p2t_7 {
+                Pre_Encapsulated_PetriNet/Transition pre_t2p_7 {
                     label = "7"
                 }
-                Pre_Encapsulated_PetriNet/T2P (pre_p2t_7, pre_p2t_4) {
+                Pre_Encapsulated_PetriNet/T2P (pre_t2p_7, pre_t2p_4) {
                     label = "8"
                 }
 
@@ -156,31 +156,31 @@ A B {
                     $
             }
             RHS {
-                Post_Encapsulated_PetriNet/Place post_p2t_1 {
+                Post_Encapsulated_PetriNet/Place post_t2p_1 {
                     label = "1"
                 }
-                Post_Encapsulated_PetriNet/Port post_p2t_2 {
+                Post_Encapsulated_PetriNet/Port post_t2p_2 {
                     label = "2"
                 }
-                Post_Encapsulated_PetriNet/PortPlace (post_p2t_2, post_p2t_1){
+                Post_Encapsulated_PetriNet/PortPlace (post_t2p_2, post_t2p_1){
                     label = "3"
                 }
-                Post_Encapsulated_PetriNet/Place post_p2t_4 {
+                Post_Encapsulated_PetriNet/Place post_t2p_4 {
                     label = "4"
                 }
-                Post_Encapsulated_PetriNet/Port post_p2t_5 {
+                Post_Encapsulated_PetriNet/Port post_t2p_5 {
                     label = "5"
                 }
-                Post_Encapsulated_PetriNet/PortPlace (post_p2t_5, post_p2t_4){
+                Post_Encapsulated_PetriNet/PortPlace (post_t2p_5, post_t2p_4){
                     label = "6"
                 }
-                Post_Encapsulated_PetriNet/Transition post_p2t_7 {
+                Post_Encapsulated_PetriNet/Transition post_t2p_7 {
                     label = "7"
                 }
-                Post_Encapsulated_PetriNet/T2P (post_p2t_7, post_p2t_4) {
+                Post_Encapsulated_PetriNet/T2P (post_t2p_7, post_t2p_4) {
                     label = "8"
                 }
-                Post_Encapsulated_PetriNet/T2P (post_p2t_7, post_p2t_1) {
+                Post_Encapsulated_PetriNet/T2P (post_t2p_7, post_t2p_1) {
                     label = "9"
                 }
             }
@@ -210,6 +210,11 @@ A B {
                 Pre_Encapsulated_PetriNet/PortPlace (pre_rem_5, pre_rem_4){
                     label = "6"
                 }
+
+                constraint = $
+                    Boolean function constraint(model : Element, mapping : Element):
+                        return value_eq(read_attribute(model, mapping["2"], "name"), read_attribute(model, mapping["5"], "name"))!
+                    $
             }
             RHS {
                 Post_Encapsulated_PetriNet/Place post_rem_1 {

+ 0 - 7
models/plant_to_EPN.mvc

@@ -285,20 +285,13 @@ A B {
                         transition_type = read_type(model, mapping["2"])
                         port_name = read_attribute(model, mapping["8"], "name")
 
-                        log("TT     " + transition_type)
-                        log("PN     " + port_name)
-                        
                         if (transition_type == "PW_Plant/OnUp"):
-                            log(cast_v2s(port_name == "up"))
                             return (port_name == "up")!
                         elif (transition_type == "PW_Plant/OnNeutral"):
-                            log(cast_v2s(port_name == "neutral"))
                             return (port_name == "neutral")!
                         elif (transition_type == "PW_Plant/OnDown"):
-                            log(cast_v2s(port_name == "down"))
                             return (port_name == "down")!
                         else:
-                            log("FALSE")
                             return False!
                         $
             }