Browse Source

partly working transformation... weird exception

Simon Van Mierlo 8 years ago
parent
commit
03c94d5402

+ 53 - 8
interface/PDEVS/console.py

@@ -8,6 +8,31 @@ init()
 print("Login")
 login("admin", "admin")
 
+print("Remove ProductionSystem metamodel")
+try:
+    model_delete("formalisms/ProductionSystem")
+except ModelverseException:
+    pass
+    
+# Add the metamodel for ProductionSystem
+print("Add ProductionSystem metamodel")
+try:
+    model_add("formalisms/ProductionSystem", "formalisms/SimpleClassDiagrams", open("../../models/production_system_design.mvc").read())
+except ModelExists:
+    pass
+    
+print("Remove model")
+try:
+    model_delete("models/example_PS")
+except ModelverseException:
+    pass
+
+print("Add model")
+try:
+    model_add("models/example_PS", "formalisms/ProductionSystem", open("../../models/example_PS.mvc").read())
+except ModelExists:
+    pass
+    
 print("Remove ParallelDEVS metamodel")
 try:
     model_delete("formalisms/ParallelDEVS")
@@ -21,6 +46,22 @@ try:
 except ModelExists:
     pass
 
+def traceability_PS2DEVS():
+    instantiate(None, "Association", ("ProductionSystem/Machine", "ParallelDEVS/BaseDEVSBlock"), ID="PS2DEVS_typelink")
+    instantiate(None, "Association", ("ProductionSystem/Machine", "ParallelDEVS/DEVSInstance"), ID="PS2DEVS_instancelink")
+    
+print("Remove PS->DEVS transformation model")
+try:
+    model_delete("models/ps_to_devs")
+except ModelverseException:
+    pass
+
+print("Add PS->DEVS transformation model")
+transformation_add_MT({"ProductionSystem": "formalisms/ProductionSystem"}, {"ParallelDEVS": "formalisms/ParallelDEVS"}, "models/ps_to_devs", open("../../models/ps_to_devs.mvc", 'r').read(), traceability_PS2DEVS)
+    
+print("Execute PS->DEVS transformation")
+transformation_execute_MT("models/ps_to_devs", {"ProductionSystem": "models/example_PS"}, {"ParallelDEVS": "models/example_PS_DEVS"})
+
 print("Remove MyString metamodel")
 try:
     model_delete("formalisms/MyString")
@@ -33,28 +74,29 @@ try:
     model_add("formalisms/MyString", "formalisms/SimpleClassDiagrams", open("../../models/string.mvc").read())
 except ModelExists:
     pass
-    
-print("Remove model")
+
+"""
+print("Remove PDEVS model")
 try:
     model_delete("models/produce_consume_pdevs")
 except ModelverseException:
     pass
 
-print("Add model")
+print("Add PDEVS model")
 try:
     model_add("models/produce_consume_pdevs", "formalisms/ParallelDEVS", open("../../models/produce_consume_PDEVS.mvc").read())
 except ModelExists:
     pass
+"""
 
-# Remove the action language code to transform between them
+# Remove the action language code to transform between DEVS->String
 print("Remove DEVS->String transformation model")
 try:
     model_delete("models/paralleldevs_to_string")
 except ModelverseException:
     pass
 
-# Add the action language code to transform between them
-# TODO: Make this a transformation to a trace metamodel
+# Add the action language code to transform between DEVS->String
 print("Add DEVS->String transformation model")
 try:
     transformation_add_AL({"ParallelDEVS": "formalisms/ParallelDEVS"}, {"MyString": "formalisms/MyString"}, "models/paralleldevs_to_string", open("../../models/devs_to_string.alc", "r").read())
@@ -62,14 +104,16 @@ except ModelExists:
     pass
     
 print("Execute DEVS->String transformation")
-transformation_execute_AL("models/paralleldevs_to_string", {"ParallelDEVS": "models/produce_consume_pdevs"}, {"MyString": "models/produce_consume_string"})
+transformation_execute_AL("models/paralleldevs_to_string", {"ParallelDEVS": "models/example_PS_DEVS"}, {"MyString": "models/example_PS_DEVS_String"})
 
+'''
 print("Remove ParallelDEVS simulator service")
 try:
     model_delete("models/paralleldevs_simulator")
 except ModelverseException:
     pass
 
+# TODO: Make this a transformation to a trace metamodel
 print("Add ParallelDEVS simulator service")
 try:
     transformation_add_AL({"MyString": "formalisms/MyString"}, {}, "models/paralleldevs_simulator", open("../../integration/code/pdevs_client.alc", "r").read())
@@ -222,4 +266,5 @@ print("Starting PyPDEVS service...")
 transformation_execute_AL("models/paralleldevs_simulator", {"MyString": "models/produce_consume_string"}, {}, statechart=(controller, "mv_input", "mv_output"))
 
 print("Starting controller")
-controller.start()
+controller.start()
+'''

+ 13 - 0
interface/PDEVS/helpers.py

@@ -0,0 +1,13 @@
+def isRiotAPC(self, queue):
+    if queue.count('Wheel') >= 4 and queue.count('Body') >= 1 and queue.count('WaterCannon') >= 1:
+        toremove = ['Wheel','Wheel','Wheel','Wheel','Body','WaterCannon']
+        while toremove:
+            queue.remove(toremove.pop())            
+        return True
+        
+def isWarAPC(self, queue):
+    if queue.count('Tracks') >= 2 and queue.count('Body') >= 1 and queue.count('MachineGun') >= 1:
+        toremove = ['Tracks','Tracks','Body','MachineGun']
+        while toremove:
+            queue.remove(toremove.pop())
+        return True

+ 1 - 1
interface/PDEVS/interface.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed Oct 04 10:31:51 2017
+Date:   Mon Oct 09 17:16:49 2017
 
 Model author: Simon Van Mierlo
 Model name:   Translational Semantics Debugging Interface

+ 55 - 0
models/example_PS.mvc

@@ -0,0 +1,55 @@
+Generator WheelsGenerator {
+    Wheels w_for_g {}
+}
+Generator TracksGenerator {
+    Tracks t_for_g {}
+}
+Generator BodyGenerator {
+    Body b_for_g {}
+}
+Generator MachineGunGenerator {
+    MachineGun mg_for_g {}
+}
+Generator WaterCannonGenerator {
+    WaterCannon wc_for_g {}
+}
+
+ConveyorBelt w_g_to_assembler {
+    capacity = 5
+}
+ConveyorBelt t_g_to_assembler {
+    capacity = 5
+}
+ConveyorBelt b_g_to_assembler {
+    capacity = 5
+}
+ConveyorBelt mg_g_to_assembler {
+    capacity = 5
+}
+ConveyorBelt wc_g_to_assembler {
+    capacity = 5
+}
+
+M_To_Conv(WheelsGenerator, w_g_to_assembler) {}
+M_To_Conv(TracksGenerator, t_g_to_assembler) {}
+M_To_Conv(BodyGenerator, b_g_to_assembler) {}
+M_To_Conv(MachineGunGenerator, mg_g_to_assembler) {}
+M_To_Conv(WaterCannonGenerator, wc_g_to_assembler) {}
+
+Assembler assembler {}
+
+Conv_To_M(w_g_to_assembler, assembler) {}
+Conv_To_M(t_g_to_assembler, assembler) {}
+Conv_To_M(b_g_to_assembler, assembler) {}
+Conv_To_M(mg_g_to_assembler, assembler) {}
+Conv_To_M(wc_g_to_assembler, assembler) {}
+
+Collector collector {}
+ConveyorBelt assembler_to_collector {
+    capacity = 3
+}
+Conv_To_M(assembler, assembler_to_collector) {}
+M_To_Conv(assembler_to_collector, collector) {}
+
+Operator op1 {}
+Operator op2 {}

+ 1 - 1
models/produce_consume_PDEVS.mvc

@@ -88,7 +88,7 @@ AtomicDEVSBlock Collector {
     """
     
     intTransition = """
-        return AtomicDEVS.intTransition(self, my_inputs)
+        return AtomicDEVS.intTransition(self)
     """
     
     timeAdvance = """

+ 32 - 0
models/production_system_design.mvc

@@ -0,0 +1,32 @@
+SimpleAttribute String {}
+SimpleAttribute Integer {}
+
+Class Machine {}
+Class Processor: Machine {}
+Class Assembler: Processor {}
+Class QualityControl: Processor {}
+Class Repair: Processor {}
+Class Generator: Machine {}
+Class Collector: Machine {}
+Class ConveyorBelt {
+    capacity: Integer
+}
+Class Operator {}
+Class Item {}
+Class Part: Item {}
+Class Wheels: Part {}
+Class Tracks: Part {}
+Class Body: Part {}
+Class MachineGun: Part {}
+Class WaterCannon: Part {}
+Class FinishedProduct: Item {}
+Class WarAPC: FinishedProduct {}
+Class RiotAPC: FinishedProduct {}
+
+Association M_To_Conv(Machine, ConveyorBelt) {}
+Association QC_To_Conv(QualityControl, ConveyorBelt) {}
+Association Conv_To_Conv(ConveyorBelt, ConveyorBelt) {}
+Association Conv_To_M(ConveyorBelt, Machine) {}
+Association Op_To_M(Operator, Machine) {}
+Association P_On_Conv(Part, ConveyorBelt) {}
+Association Gen_To_Part(Generator, Part) {}

File diff suppressed because it is too large
+ 586 - 0
models/ps_to_devs.mvc