浏览代码

working PS->DEVS transformation

Simon Van Mierlo 8 年之前
父节点
当前提交
6dd88e53dd

+ 6 - 6
interface/PDEVS/console.py

@@ -2,6 +2,7 @@ import sys
 from modelverse import *
 import random, re, json, subprocess
 from interface import Controller
+from pprint import pprint
 
 print("Init")
 init("msdl.uantwerpen.be:8001")
@@ -106,7 +107,6 @@ except ModelExists:
 print("Execute DEVS->String transformation")
 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")
@@ -247,7 +247,6 @@ def raw_inputter():
             print("Command not understood: " + str(inp))
             continue
         params.insert(0, action)
-        print "Console sending input to the Modelverse! %s" % params
         controller.addInput(Event("mv_input", "input", [json.dumps(params)]))
         
 input_thread = threading.Thread(target=raw_inputter)
@@ -257,14 +256,15 @@ input_thread.start()
 output_listener = controller.addOutputListener(["output"])
 def outputter():
     while 1:
-        print "Console got output from the Modelverse! %s" % output_listener.fetch(-1)
+        msg = json.loads(output_listener.fetch(-1).getParameters()[0])
+        print("%s" % msg["name"])
+        pprint(msg["params"])
 output_thread = threading.Thread(target=outputter)
 output_thread.daemon = True
 output_thread.start()
 
 print("Starting PyPDEVS service...")
-transformation_execute_AL("models/paralleldevs_simulator", {"MyString": "models/produce_consume_string"}, {}, statechart=(controller, "mv_input", "mv_output"))
+transformation_execute_AL("models/paralleldevs_simulator", {"MyString": "models/example_PS_DEVS_String"}, {}, statechart=(controller, "mv_input", "mv_output"))
 
 print("Starting controller")
-controller.start()
-'''
+controller.start()

+ 4 - 4
interface/PDEVS/helpers.py

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

+ 4 - 1
interface/PDEVS/pypdevs/examples/client.py

@@ -1,6 +1,7 @@
 print("SCCD PythonPDEVS CLI interface")
 import sys
 import time
+from pprint import pprint
 sys.path.append("../src/")
 from sccd.runtime.statecharts_core import Event
 
@@ -23,7 +24,9 @@ def get_bool(val):
 def poll_port(port):
     while 1:
         try:
-            print(port.fetch(-1))
+            event = port.fetch(-1)
+            print("%s" % event.getName())
+            pprint(event.getParameters())
         except:
             pass
 

+ 19 - 0
interface/PDEVS/pypdevs/examples/helpers.py

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

文件差异内容过多而无法显示
+ 183 - 72
interface/PDEVS/pypdevs/examples/ps_model.py


+ 1 - 1
interface/PDEVS/register_service.py

@@ -7,7 +7,7 @@ from modelverse import *
 
 print 'Registering service...'
 
-init()
+init('msdl.uantwerpen.be:8001')
 login("pypdevs_service", "my_password")
 
 def pypdevs_service(port):

+ 9 - 9
models/example_PS.mvc

@@ -15,19 +15,19 @@ Generator WaterCannonGenerator {
 }
 
 ConveyorBelt w_g_to_assembler {
-    capacity = 5
+    capacity = 2
 }
 ConveyorBelt t_g_to_assembler {
-    capacity = 5
+    capacity = 2
 }
 ConveyorBelt b_g_to_assembler {
-    capacity = 5
+    capacity = 2
 }
 ConveyorBelt mg_g_to_assembler {
-    capacity = 5
+    capacity = 2
 }
 ConveyorBelt wc_g_to_assembler {
-    capacity = 5
+    capacity = 2
 }
 
 M_To_Conv(WheelsGenerator, w_g_to_assembler) {}
@@ -46,27 +46,27 @@ Conv_To_M(wc_g_to_assembler, assembler) {}
 
 QualityControl qualitycontrol {}
 ConveyorBelt assembler_to_qualitycontrol {
-    capacity = 3
+    capacity = 2
 }
 M_To_Conv(assembler, assembler_to_qualitycontrol) {}
 Conv_To_M(assembler_to_qualitycontrol, qualitycontrol) {}
 
 Repair repair {}
 ConveyorBelt qualitycontrol_broken_to_repair {
-    capacity = 3
+    capacity = 2
 }
 QC_To_Conv(qualitycontrol, qualitycontrol_broken_to_repair) {}
 Conv_To_M(qualitycontrol_broken_to_repair, repair) {}
 
 Collector collector {}
 ConveyorBelt qualitycontrol_to_collector {
-    capacity = 3
+    capacity = 2
 }
 M_To_Conv(qualitycontrol, qualitycontrol_to_collector) {}
 Conv_To_M(qualitycontrol_to_collector, collector) {}
 
 ConveyorBelt repair_to_collector {
-    capacity = 3
+    capacity = 2
 }
 M_To_Conv(repair, repair_to_collector) {}
 Conv_To_M(repair_to_collector, collector) {}

+ 37 - 4
models/example_PS_minimal.mvc

@@ -1,23 +1,56 @@
 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
+    capacity = 2
+}
+ConveyorBelt t_g_to_assembler {
+    capacity = 2
+}
+ConveyorBelt b_g_to_assembler {
+    capacity = 2
+}
+ConveyorBelt mg_g_to_assembler {
+    capacity = 2
+}
+ConveyorBelt wc_g_to_assembler {
+    capacity = 2
 }
 
 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) {}
+
 Conv_To_M(w_g_to_assembler, assembler) {}
 
 Collector collector {}
 ConveyorBelt assembler_to_collector {
-    capacity = 3
+    capacity = 2
 }
 M_To_Conv(assembler, assembler_to_collector) {}
 Conv_To_M(assembler_to_collector, collector) {}
 
-Operator op1 {}
-Operator op2 {}
+Operator op1 {}

+ 1 - 1
models/paralleldevs_design.mvc

@@ -2,7 +2,7 @@ ComplexAttribute ActionCode {}
 SimpleAttribute String {}
 
 Class BaseDEVSBlock {
-    name: String    
+    name: String
 }
 
 Class AtomicDEVSBlock: BaseDEVSBlock {

文件差异内容过多而无法显示
+ 62 - 24
models/ps_to_devs.mvc