Pārlūkot izejas kodu

ignored generated files and parallel cbd simulator proposed (more symetric and without need for coordinator). Probably is stupid :p

Cláudio Gomes 9 gadi atpakaļ
vecāks
revīzija
ffecf68f10

+ 2 - 0
.gitignore

@@ -200,3 +200,5 @@ fsa_cbd_composition/cbdsimulator/plot.html
 fsa_cbd_composition/cbdsimulator/log.txt
 fsa_cbd_composition/fsasimulator/log.txt
 fsa_cbd_composition/fsa_cbd_simulator/log.txt
+debugging_fsa_cbd_composition/cbdsimulator/plot.html
+debugging_fsa_cbd_composition/cbdsimulator/cbdsim.py

+ 0 - 325
debugging_fsa_cbd_composition/cbdsimulator/cbdsim.py

@@ -1,325 +0,0 @@
-"""
-Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
-
-Date:   Tue Oct 11 11:56:10 2016
-
-Model author: Sadaf Mustafiz and Claudio Gomes and Simon Van Mierlo
-Model name:   CBDSimulator
-Model description:
-SCCD HUTN model of a CBD simulator
-"""
-
-from sccd.runtime.statecharts_core import *
-from sccd.runtime.libs.ui import *
-from sccd.runtime.libs.utils import *
-from CBD_Controller import CBDController
-import Options
-
-# package "CBDSimulator"
-
-class CBDSimulator(RuntimeClassBase):
-    def __init__(self, controller, options, model):
-        RuntimeClassBase.__init__(self, controller)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.iteration = None
-        self.cbdController = None
-        self.delta = None
-        self.clock = None
-        self.model = None
-        self.depGraph = None
-        self.strongComponentList = None
-        self.currentCompIdx = None
-        
-        # call user defined constructor
-        CBDSimulator.user_defined_constructor(self, options, model)
-    
-    def user_defined_constructor(self, options, model):
-        self.options = options
-        self.delta = self.options.getDeltaT()
-        self.model = model
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # user defined method
-    def endCondition(self):
-        return self.iteration >= self.options.getMaxIterations()
-    
-    
-    # user defined method
-    def advanceTime(self):
-        self.iteration = self.iteration + 1
-        self.clock = self.clock + self.delta
-        self.cbdController.advanceTimeStep()
-    
-    
-    # user defined method
-    def currentComponentIsCycle(self):
-        return self.cbdController.componentIsCycle(self.strongComponentList[self.currentCompIdx], self.depGraph)
-    
-    
-    # user defined method
-    def hasNextStrongComponent(self):
-        return (self.currentCompIdx + 1) < len(self.strongComponentList)
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, self)
-        
-        # state /Main
-        self.states["/Main"] = ParallelState(1, self)
-        self.states["/Main"].setEnter(self._Main_enter)
-        self.states["/Main"].setExit(self._Main_exit)
-        
-        # state /Main/SimulationState
-        self.states["/Main/SimulationState"] = State(2, self)
-        
-        # state /Main/SimulationState/Waiting
-        self.states["/Main/SimulationState/Waiting"] = State(3, self)
-        self.states["/Main/SimulationState/Waiting"].setEnter(self._Main_SimulationState_Waiting_enter)
-        self.states["/Main/SimulationState/Waiting"].setExit(self._Main_SimulationState_Waiting_exit)
-        
-        # state /Main/SimulationState/Running
-        self.states["/Main/SimulationState/Running"] = State(4, self)
-        self.states["/Main/SimulationState/Running"].setEnter(self._Main_SimulationState_Running_enter)
-        self.states["/Main/SimulationState/Running"].setExit(self._Main_SimulationState_Running_exit)
-        
-        # state /Main/SimulationState/Running/Continuous
-        self.states["/Main/SimulationState/Running/Continuous"] = State(5, self)
-        
-        # state /Main/SimulationState/Stopped
-        self.states["/Main/SimulationState/Stopped"] = State(6, self)
-        self.states["/Main/SimulationState/Stopped"].setEnter(self._Main_SimulationState_Stopped_enter)
-        self.states["/Main/SimulationState/Stopped"].setExit(self._Main_SimulationState_Stopped_exit)
-        
-        # state /Main/SimulationFlow
-        self.states["/Main/SimulationFlow"] = State(7, self)
-        
-        # state /Main/SimulationFlow/Initialize
-        self.states["/Main/SimulationFlow/Initialize"] = State(8, self)
-        self.states["/Main/SimulationFlow/Initialize"].setEnter(self._Main_SimulationFlow_Initialize_enter)
-        
-        # state /Main/SimulationFlow/CheckTerminationCondition
-        self.states["/Main/SimulationFlow/CheckTerminationCondition"] = State(9, self)
-        
-        # state /Main/SimulationFlow/CreateDependencyGraph
-        self.states["/Main/SimulationFlow/CreateDependencyGraph"] = State(10, self)
-        self.states["/Main/SimulationFlow/CreateDependencyGraph"].setEnter(self._Main_SimulationFlow_CreateDependencyGraph_enter)
-        
-        # state /Main/SimulationFlow/IsolateStrongComponents
-        self.states["/Main/SimulationFlow/IsolateStrongComponents"] = State(11, self)
-        self.states["/Main/SimulationFlow/IsolateStrongComponents"].setEnter(self._Main_SimulationFlow_IsolateStrongComponents_enter)
-        
-        # state /Main/SimulationFlow/ExecuteSimulationStep
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep"] = State(12, self)
-        
-        # state /Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"] = State(13, self)
-        
-        # state /Main/SimulationFlow/ExecuteSimulationStep/CheckCycle
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"] = State(14, self)
-        
-        # state /SimulationComplete
-        self.states["/SimulationComplete"] = State(15, self)
-        
-        # add children
-        self.states[""].addChild(self.states["/Main"])
-        self.states[""].addChild(self.states["/SimulationComplete"])
-        self.states["/Main"].addChild(self.states["/Main/SimulationState"])
-        self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
-        self.states["/Main/SimulationState"].addChild(self.states["/Main/SimulationState/Waiting"])
-        self.states["/Main/SimulationState"].addChild(self.states["/Main/SimulationState/Running"])
-        self.states["/Main/SimulationState"].addChild(self.states["/Main/SimulationState/Stopped"])
-        self.states["/Main/SimulationState/Running"].addChild(self.states["/Main/SimulationState/Running/Continuous"])
-        self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialize"])
-        self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTerminationCondition"])
-        self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CreateDependencyGraph"])
-        self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/IsolateStrongComponents"])
-        self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/ExecuteSimulationStep"])
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep"].addChild(self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"])
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep"].addChild(self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/Main"]
-        self.states["/Main/SimulationState"].default_state = self.states["/Main/SimulationState/Waiting"]
-        self.states["/Main/SimulationState/Running"].default_state = self.states["/Main/SimulationState/Running/Continuous"]
-        self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Initialize"]
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep"].default_state = self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"]
-        
-        # transition /Main/SimulationState/Waiting
-        _Main_SimulationState_Waiting_0 = Transition(self, self.states["/Main/SimulationState/Waiting"], [self.states["/Main/SimulationState/Running/Continuous"]])
-        _Main_SimulationState_Waiting_0.setTrigger(Event("continuous", "user_input"))
-        self.states["/Main/SimulationState/Waiting"].addTransition(_Main_SimulationState_Waiting_0)
-        
-        # transition /Main/SimulationFlow/Initialize
-        _Main_SimulationFlow_Initialize_0 = Transition(self, self.states["/Main/SimulationFlow/Initialize"], [self.states["/Main/SimulationFlow/CheckTerminationCondition"]])
-        _Main_SimulationFlow_Initialize_0.setTrigger(None)
-        self.states["/Main/SimulationFlow/Initialize"].addTransition(_Main_SimulationFlow_Initialize_0)
-        
-        # transition /Main/SimulationFlow/CheckTerminationCondition
-        _Main_SimulationFlow_CheckTerminationCondition_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTerminationCondition"], [self.states["/Main/SimulationFlow/CreateDependencyGraph"]])
-        _Main_SimulationFlow_CheckTerminationCondition_0.setTrigger(None)
-        _Main_SimulationFlow_CheckTerminationCondition_0.setGuard(self._Main_SimulationFlow_CheckTerminationCondition_0_guard)
-        self.states["/Main/SimulationFlow/CheckTerminationCondition"].addTransition(_Main_SimulationFlow_CheckTerminationCondition_0)
-        
-        # transition /Main/SimulationFlow/CreateDependencyGraph
-        _Main_SimulationFlow_CreateDependencyGraph_0 = Transition(self, self.states["/Main/SimulationFlow/CreateDependencyGraph"], [self.states["/Main/SimulationFlow/IsolateStrongComponents"]])
-        _Main_SimulationFlow_CreateDependencyGraph_0.setTrigger(None)
-        self.states["/Main/SimulationFlow/CreateDependencyGraph"].addTransition(_Main_SimulationFlow_CreateDependencyGraph_0)
-        
-        # transition /Main/SimulationFlow/IsolateStrongComponents
-        _Main_SimulationFlow_IsolateStrongComponents_0 = Transition(self, self.states["/Main/SimulationFlow/IsolateStrongComponents"], [self.states["/Main/SimulationFlow/ExecuteSimulationStep"]])
-        _Main_SimulationFlow_IsolateStrongComponents_0.setAction(self._Main_SimulationFlow_IsolateStrongComponents_0_exec)
-        _Main_SimulationFlow_IsolateStrongComponents_0.setTrigger(None)
-        self.states["/Main/SimulationFlow/IsolateStrongComponents"].addTransition(_Main_SimulationFlow_IsolateStrongComponents_0)
-        
-        # transition /Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0 = Transition(self, self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"], [self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"]])
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0.setAction(self._Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0_exec)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0.setTrigger(None)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0.setGuard(self._Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0_guard)
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"].addTransition(_Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1 = Transition(self, self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"], [self.states["/Main/SimulationFlow/CheckTerminationCondition"]])
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1.setAction(self._Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1_exec)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1.setTrigger(None)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1.setGuard(self._Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1_guard)
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"].addTransition(_Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1)
-        
-        # transition /Main/SimulationFlow/ExecuteSimulationStep/CheckCycle
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0 = Transition(self, self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"], [self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"]])
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0.setAction(self._Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0_exec)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0.setTrigger(None)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0.setGuard(self._Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0_guard)
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"].addTransition(_Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1 = Transition(self, self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"], [self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckNextComponent"]])
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1.setAction(self._Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1_exec)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1.setTrigger(None)
-        _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1.setGuard(self._Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1_guard)
-        self.states["/Main/SimulationFlow/ExecuteSimulationStep/CheckCycle"].addTransition(_Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1)
-        
-        # transition /Main
-        _Main_0 = Transition(self, self.states["/Main"], [self.states["/SimulationComplete"]])
-        _Main_0.setTrigger(Event("_0after"))
-        _Main_0.setGuard(self._Main_0_guard)
-        self.states["/Main"].addTransition(_Main_0)
-        
-        # transition /Main/SimulationState/Running
-        _Main_SimulationState_Running_0 = Transition(self, self.states["/Main/SimulationState/Running"], [self.states["/Main/SimulationState/Stopped"]])
-        _Main_SimulationState_Running_0.setAction(self._Main_SimulationState_Running_0_exec)
-        _Main_SimulationState_Running_0.setTrigger(None)
-        _Main_SimulationState_Running_0.setGuard(self._Main_SimulationState_Running_0_guard)
-        self.states["/Main/SimulationState/Running"].addTransition(_Main_SimulationState_Running_0)
-    
-    def _Main_enter(self):
-        self.addTimer(0, self.sccd_yield())
-    
-    def _Main_exit(self):
-        self.removeTimer(0)
-    
-    def _Main_SimulationState_Running_enter(self):
-        print 'entering SimulationState/Running'
-    
-    def _Main_SimulationState_Running_exit(self):
-        print 'exiting SimulationState/Running'
-    
-    def _Main_SimulationState_Waiting_enter(self):
-        print 'entering SimulationState/Waiting'
-    
-    def _Main_SimulationState_Waiting_exit(self):
-        print 'exiting SimulationState/Waiting'
-    
-    def _Main_SimulationState_Stopped_enter(self):
-        print 'entering SimulationState/Stopped'
-    
-    def _Main_SimulationState_Stopped_exit(self):
-        print 'exiting SimulationState/Stopped'
-    
-    def _Main_SimulationFlow_Initialize_enter(self):
-        self.iteration = 0
-        self.clock = 0
-        self.cbdController = CBDController(self.model, self.delta)
-        self.cbdController.initSimulation()
-    
-    def _Main_SimulationFlow_CreateDependencyGraph_enter(self):
-        self.depGraph = self.cbdController.createDepGraph(self.iteration)
-    
-    def _Main_SimulationFlow_IsolateStrongComponents_enter(self):
-        self.strongComponentList = self.cbdController.createStrongComponents(self.depGraph, self.iteration)
-    
-    def _Main_0_guard(self, parameters):
-        return self.inState(["/Main/SimulationState/Stopped"])
-    
-    def _Main_SimulationState_Running_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("termination_condition", None, []))
-    
-    def _Main_SimulationState_Running_0_guard(self, parameters):
-        return self.endCondition()
-    
-    def _Main_SimulationFlow_CheckTerminationCondition_0_guard(self, parameters):
-        return self.inState(["/Main/SimulationState/Running"])
-    
-    def _Main_SimulationFlow_IsolateStrongComponents_0_exec(self, parameters):
-        self.currentCompIdx = -1
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0_exec(self, parameters):
-        self.currentCompIdx = self.currentCompIdx + 1
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_0_guard(self, parameters):
-        return self.hasNextStrongComponent()
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1_exec(self, parameters):
-        self.advanceTime()
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckNextComponent_1_guard(self, parameters):
-        return not self.hasNextStrongComponent()
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0_exec(self, parameters):
-        self.cbdController.computeNextBlock(self.strongComponentList[self.currentCompIdx], self.iteration)
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_0_guard(self, parameters):
-        return not self.currentComponentIsCycle()
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1_exec(self, parameters):
-        self.cbdController.computeNextAlgebraicLoop(self.strongComponentList[self.currentCompIdx], self.iteration)
-    
-    def _Main_SimulationFlow_ExecuteSimulationStep_CheckCycle_1_guard(self, parameters):
-        return self.currentComponentIsCycle()
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/Main"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class ObjectManager(ObjectManagerBase):
-    def __init__(self, controller):
-        ObjectManagerBase.__init__(self, controller)
-    
-    def instantiate(self, class_name, construct_params):
-        if class_name == "CBDSimulator":
-            instance = CBDSimulator(self.controller, construct_params[0], construct_params[1])
-            instance.associations = {}
-        else:
-            raise Exception("Cannot instantiate class " + class_name)
-        return instance
-
-class Controller(ThreadsControllerBase):
-    def __init__(self, options, model, keep_running = None, behind_schedule_callback = None):
-        if keep_running == None: keep_running = True
-        if behind_schedule_callback == None: behind_schedule_callback = None
-        ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
-        self.addInputPort("user_input")
-        self.addInputPort("user_output")
-        self.object_manager.createInstance("CBDSimulator", [options, model])

+ 1 - 1
debugging_fsa_cbd_composition/cbdsimulator/generateSCCD.bat

@@ -1,6 +1,6 @@
 @ECHO OFF
 setlocal
 set PYTHONPATH=C:\Users\clagms\Source Control\Git_SCCD\src\build\lib;C:\Users\clagms\Source Control\SVN_MvK
-python "C:\Users\clagms\Source Control\Git_SCCD\textualnotations\sccdtnc.py" "C:\Users\clagms\Source Control\Git_MLE\fsa_cbd_composition\cbdsimulator\cbdsim.sccd" -o "C:\Users\clagms\Source Control\Git_MLE\fsa_cbd_composition\cbdsimulator\cbdsim.py"
+python "C:\Users\clagms\Source Control\Git_SCCD\src\build\lib\sccd\compiler\sccdc.py" "C:\Users\clagms\Source Control\Git_MLE\debugging_fsa_cbd_composition\cbdsimulator\cbdsim_parallel.xml" -o "C:\Users\clagms\Source Control\Git_MLE\debugging_fsa_cbd_composition\cbdsimulator\cbdsim.py" -p "threads"
 endlocal
 pause

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 43
debugging_fsa_cbd_composition/cbdsimulator/plot.html


+ 2 - 14
debugging_fsa_cbd_composition/cbdsimulator/run_sim.py

@@ -8,23 +8,11 @@ from Options import Options
 from CBDMultipleOutput.models.HarmonicOscilator import CircleCBDDerivative
 from CBDMultipleOutput.Source.CBD import CBD
 
-options = Options(delta = 0.01)
-options.setMaxIterations(1000);
+options = Options(delta = 0.1)
+options.setMaxIterations(100);
 #cbdModel = EvenNumberGen("EvenNumbersGenerator")
 cbdModel = CircleCBDDerivative("CircleCBDDerivative",options.getDeltaT())
 # Use keep_running false for as fast as possible simulation.
 cbdSimController = Controller(options, cbdModel, keep_running=False)
 cbdSimController.start()
 
-times = []
-values = []
-for timeValuePair in cbdModel.getSignal("neg"):
-    times.append(timeValuePair.time)
-    values.append(timeValuePair.value)
-
-output_file("./plot.html", title="Plot")
-p = figure(title="Something vs Otherthing", x_axis_label="Time", y_axis_label="Values")
-p.line(times, values, legend="Something", line_width=1, line_color="red")
-show(p)
-
-print "DONE"