Package simulation :: Module Main
[hide private]
[frames] | no frames]

Source Code for Module simulation.Main

 1  #!/usr/bin/env python 
 2  # -*- coding: utf-8 -*- 
 3  """Main entry point. Starts the application.""" 
 4   
 5  import sys 
 6   
7 -class Main(object):
8
9 - def usage(self):
10 """Print usage information.""" 11 print """ 12 usage: 13 %(name)s - start gui 14 %(name)s doc nr - generate docs for controller nr (variables/adjectives) 15 %(name)s dot nr - generate docs for controller nr (rules) 16 %(name)s run nr1 nr2 [seconds] - run system with controller nr1 and process nr2 17 for certain time or forever 18 """ % {"name":sys.argv[0]}
19
20 - def getControllers(self):
21 """Get list with available controllers.""" 22 return \ 23 [ # available controllers 24 ]
25
26 - def getProcesses(self):
27 """Get list with available processes.""" 28 return \ 29 [ # available processes 30 ]
31 32
33 - def make_doc(self,i):
34 self.controllers[i][1].createDoc("../doc/%s" % self.controllers[i][0].lower())
35
36 - def make_dot(self,i):
37 self.controllers[i][1].createDot("../doc/%s" % self.controllers[i][0].lower())
38
39 - def run_system(self,process,controller,t=None):
40 self.system.controller = controller 41 self.system.process = process 42 import time 43 self.system.start() 44 sys.stderr.write("Started (%s) ...\n" % time.asctime()) 45 try: 46 if t is not None: 47 time.sleep(t) 48 else: 49 while 1: 50 time.sleep(1) 51 except KeyboardInterrupt: 52 pass 53 self.system.stop() 54 sys.stderr.write("Stopped (%s).\n" % time.asctime()) 55 plotxxx(self.system.controller)
56
57 - def start_gui(self):
58 import MainWindow 59 MainWindow.MainWindow(self.system,self.controllers,self.processes)
60
61 - def __init__(self):
62 import System,Logger 63 self.system = System.System() 64 self.system.logger = Logger.Logger() 65 self.controllers = self.getControllers() 66 self.processes = self.getProcesses()
67
68 - def run(self):
69 if len(sys.argv) > 1: 70 # check if we want only generate docs 71 if "doc" == sys.argv[1] and len(sys.argv) > 2: 72 self.make_doc(int(sys.argv[2])) 73 elif "dot" == sys.argv[1] and len(sys.argv) > 2: 74 self.make_dot(int(sys.argv[2])) 75 elif "run" == sys.argv[1] and len(sys.argv) > 3: 76 t = None 77 if len(sys.argv) > 4: 78 t = float(sys.argv[4]) 79 self.run_system(self.processes[int(sys.argv[3])][1],self.controllers[int(sys.argv[2])][1],t) 80 else: 81 self.usage() 82 else: # no docs,... => start gui 83 self.start_gui()
84
85 -def plotxxx(controller):
86 from fuzzy.doc.plot.gnuplot import doc 87 directory = "../doc/fuzzy" 88 d = doc.Doc(directory) 89 d.createDocSets(controller.system.variables["power"].defuzzify.activated_sets,"activated_sets") 90 d.createDocSets({"accumulate":controller.system.variables["power"].defuzzify.accumulated_set},"accumulate")
91