示例#1
0
import tkinter
import tkinter.filedialog
from view import View
from controller import Controller
from model import Model
app = tkinter.Tk()

# アプリのウィンドウのサイズ設定
app.geometry("1000x430")
app.title("ocr_app[JunjiSakurai]")

model = Model()
view = View(app, model)
controller = Controller(app, model, view)

app.mainloop()
示例#2
0
def model_with_two_articles():
    return Controller(
        ModelInMemory([
            Article(title="title 1", text="text 1"),
            Article(title="title 2", text="text 2")
        ]))
示例#3
0
def main():
    import sys

    if path.exists('data/coordinates_1.yml'):
        os.remove('data/coordinates_1.yml')

    points = None
    carPark = None

    try:
        fn = sys.argv[1]
    except:
        fn = 1
    cap = video.create_capture(fn)

    def fetchShortIntervalVideos(ctrl, motion_detector, coordinates_data,
                                 times, statuses, lock):
        with lock:
            videoFilePath, hasIncomingVideoCaptureChanged = ctrl.getVideoFilePath(
            )
            return videoFilePath, hasIncomingVideoCaptureChanged, motion_detector, coordinates_data, times, statuses

    threadn = cv.getNumberOfCPUs()
    pending = deque()
    lock = Lock()
    pool = ThreadPool(processes=threadn,
                      initializer=init_child,
                      initargs=(lock, ))

    threaded_mode = True
    ctrl = None
    motionDetector = None

    lastsave = 0
    coordinates_data = None
    times = None
    statuses = None

    pointsCaptured = False
    while True:
        with lock:
            while len(pending) > 1 and pending[0].ready() and pending[1].ready(
            ):
                payload = pending.popleft().get()
                if len(payload) == 6:
                    videoFilePath, hasIncomingVideoCaptureChanged, motion_detector, coordinates_data, times, statuses = payload
                    if videoFilePath == None and hasIncomingVideoCaptureChanged == None:
                        break
                    else:

                        if hasIncomingVideoCaptureChanged == True:
                            capture = cv.VideoCapture(videoFilePath)
                            while capture.isOpened():
                                result, frame = capture.read()
                                if not result:
                                    capture.release()
                                    continue
                                else:
                                    res, evaluated_carPark = motion_detector.process_algo_per_frame(
                                        frame, capture, coordinates_data,
                                        times, statuses)
                                    draw_str(
                                        res, (5, 20),
                                        CarParkData.TOTAL_NUMBER_OF_SLOTS +
                                        str(evaluated_carPark.
                                            get_total_car_park_slots()))
                                    draw_str(
                                        res, (5, 40), CarParkData.
                                        NUMBER_OF_CARPARK_SLOTS_AVAILABLE +
                                        str(evaluated_carPark.
                                            get_available_carpark_slots()))

                                    if carPark.is_carpark_full():
                                        draw_str_red(
                                            res, (5, 60),
                                            CarParkData.CARPARK_FULL_MESSAGE)
                                    else:
                                        draw_str_green(
                                            res, (5, 60), CarParkData.
                                            CARPARK_AVAILABLE_MESSAGE)

                                    #latest_modified_date_time = datetime.now()
                                    #draw_str(res, (440,20), latest_modified_date_time.strftime('%d-%m-%Y %H:%M:%S '))

                                    json = '['
                                    for carpark_slot in evaluated_carPark.get_carpark_slots(
                                    ):
                                        json = json + carpark_slot.toJSON(
                                        ) + ','

                                    json = json[:-1]
                                    json = json + ']'
                                    json = json.replace('\n', '')
                                    json = json.replace('\t', '')
                                    json = json.replace('\r', '')
                                    json = json.replace("\'", '')
                                    json = json.replace('    ', '')
                                    #retval, buffer = cv.imencode('.jpg', res)
                                    #jpg_as_text = base64.b64encode(buffer)

                                    if time.time() - lastsave > 1:
                                        lastsave = time.time()
                                        persistSmartParkRealTime(
                                            None, None,
                                            evaluated_carPark.
                                            get_total_car_park_slots(),
                                            evaluated_carPark.
                                            get_available_carpark_slots(),
                                            json, None, None)

                                    cv.namedWindow('smart-parking',
                                                   cv.WINDOW_NORMAL)
                                    cv.setWindowProperty('smart-parking', 0, 1)
                                    cv.imshow('smart-parking', res)

        if len(pending) < threadn:

            if not pointsCaptured:
                _ret, frame = cap.read()
                points = getPoints(frame, points)
                carPark = CarParkData('SmartCarPark', len(points))
                ctrl = Controller(points, None, None)
                motionDetector = MotionDetector(points, 1, carPark)
                coordinates_data, times, statuses = motionDetector.detect_motion_activity(
                )
                pointsCaptured = True

            if threaded_mode:
                task_put_videos = pool.apply_async(captureShortIntervalVideos,
                                                   (cap, lock))
                task_get_videos = pool.apply_async(
                    fetchShortIntervalVideos,
                    (ctrl, motionDetector, coordinates_data, times, statuses,
                     lock))

            pending.append(task_put_videos)
            pending.append(task_get_videos)

        ch = cv.waitKey(1)
        if ch == ord(' '):
            threaded_mode = not threaded_mode
        if ch == 27:
            break

    print('Done')
    cap.release()
 def setUp(self):
     self.controller = Controller()
示例#5
0
def assert_create_controller_with_model(model, expected_str):
    controller = Controller(model)
    assert str(controller) == expected_str
示例#6
0
import numpy as np
import cv2

from drawer import draw_table, draw_ball, draw_feeder
from tracker import Tracker
from controller import Controller

#FRAME_SIZE = (1080, 1920)

cam = cv2.VideoCapture(1)  #cv2.VideoCapture('feed_vid.mp4')

table = cv2.imread("table.png")

c = Controller()
t = Tracker()

img_array = []

tr = 0

size = None

while (True):
    tr += 1
    if (tr % 10 == 0): print(tr)
    """
    frame = np.zeros(FRAME_SIZE).astype(np.int)

    frame = draw_table(frame)
    """
    frame = np.copy(table)
示例#7
0
def main():
    root = tk.Tk()
    app = Controller(root)
    app.render_app()
示例#8
0
 def __init__(self):
     self.control = Controller()
示例#9
0
def loop():
    """this is where the game is set up and run"""
    pygame.init()
    controller = Controller()
    """screen size"""
    size = width, height = TOTAL_SIZE
    black = 0, 0, 0
    background = 30, 30, 30
    screen = pygame.display.set_mode(size)
    # ball = pygame.draw.circle(screen, (255, 0, 0), (10, 10), 10, 0)
    center = [width / 2, height / 2]
    render_speed = 33
    animation_speed = 250
    animation_mult = animation_speed // render_speed
    animation_cnt = 0
    step_speed = 600
    step_mult = step_speed // render_speed
    step_cnt = 0
    top_shake = (20, 5)
    num_shake_frames = 35
    shake_list = [((i % 2) - random.random() * top_shake[0],
                   (i % 2) - random.random() * top_shake[1])
                  for i in range(num_shake_frames)]
    shake_list += [(0, 0)]
    shake = 0
    controller.audio_controller.start_music()
    start_screen(screen, controller)
    """this is the main loop for the game"""

    while 1:
        """detection of escape key to close program"""
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.display.quit()
                    pygame.quit()
                    sys.exit()
                elif event.key == pygame.K_RETURN or event.key == pygame.K_SPACE:
                    controller.enter()
                elif event.key == pygame.K_r:
                    controller = Controller()
                elif event.key == pygame.K_s:
                    shake += controller.start_round()
                elif event.key == pygame.K_i:
                    controller.toggle_inv()
            elif event.type == pygame.MOUSEBUTTONUP:  # handle MOUSEBUTTONUP
                pos = pygame.mouse.get_pos()
                controller.click(pos)
            elif event.type == pygame.MOUSEMOTION:
                controller.handle_mouse(pygame.mouse.get_pos())

        keys = pygame.key.get_pressed()  # checking pressed keys
        step_cnt = input_to_board(controller, keys, step_cnt)
        screen.fill(background)
        if not animation_cnt:
            controller.step_animate()
        if not step_cnt:
            shake += controller.step()
        if shake:
            controller.pygame_handler.shakex = shake_list[shake][0]
            controller.pygame_handler.shakey = shake_list[shake][1]
            shake += 1
            if shake == len(shake_list):
                shake = 0
        animation_cnt = (animation_cnt + 1) % animation_mult
        step_cnt = (step_cnt + 1) % step_mult
        controller.render(screen)
        pygame.display.flip()
        pygame.time.wait(render_speed)
    pygame.display.quit()
    pygame.quit()
    sys.exit()
def controller(mock_repository):
    return Controller(mock_repository)
示例#11
0
def main():
    initialize_logger(SERVICE_NAME)
    logging.getLogger(KUBERNETES_PKG).setLevel(logging.ERROR)

    controller = Controller()
    controller.start()
示例#12
0
文件: hallo.py 项目: sangyy/HalloPy
def main():
    drone = init_drone()
    controller = Controller(drone)
    controller.start()
示例#13
0
import time
from controller import Controller

control = Controller('configs/config5.json')
control.startReplicas()
control.startClients()
time.sleep(15)
control.terminateAll()
示例#14
0
 def run(self):
     # print(self.flags.getPredictFlag())
     print('controller running')
     controller = Controller(self.flags)
     controller.run()
示例#15
0
    config_file_name = 'config.json'
    try:
        if os.path.isfile(config_file_name):
            with open(config_file_name) as config_file:
                config = json.load(config_file)
            if config.__contains__(name):
                return config[name]
            else:
                print('CRITICAL: cannot get token in config file ' + name)
                logging.critical('Cannot get token in config file ' + name)
        else:
            if os.environ.__contains__(name):
                return os.environ[name]
            else:
                print('CRITICAL: cannot get token in OS environment ' + name)
                logging.critical('Cannot get token in OS environment ' + name)
    except Exception as error:
        print('CRITICAL: cannot get token, reason: ' + error.__str__())
        logging.critical('Cannot get token, reason: ' + error.__str__())


logging.basicConfig(
    filename='logs.log',
    level=logging.INFO,
    format='%(asctime)s %(name)-30s %(levelname)-8s %(message)s')

if __name__ == '__main__':
    controller = Controller(get_token('CLARIFAI_TOKEN'),
                            get_token('TELEGRAM_BOT_TOKEN'))
    controller.start()
示例#16
0
def main():
    c = Controller()
    c.run_dl_agent_graphics()
示例#17
0
import logging
import sys

from controller import Controller

if __name__ == '__main__':
    # Configure the logger
    logging.basicConfig(
        stream=sys.stdout,
        level=logging.DEBUG,
        format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
    controller = Controller()
    controller.train_controller()
示例#18
0
    def __init__(self, master):
        self.master = master
        self.model = Model()
        self.controller = Controller(self.model)
        master.title("Calculator")
        self.master.rowconfigure((0, 1, 2, 3, 4, 5), weight=1)
        self.master.columnconfigure((0, 1, 2, 3), weight=1)

        self.display = StringVar()
        self.display_label = Label(master,
                                   anchor=E,
                                   textvariable=self.display,
                                   font=(None, 48))
        self.display_label.grid(columnspan=4, sticky=E + W)

        # Row 1

        self.clear_entry_button = Button(
            master, text="CE", command=lambda: self.click_handler("CE"))
        self.clear_entry_button.grid(row=1, sticky=N + S + E + W)

        self.clear_button = Button(master,
                                   text="C",
                                   command=lambda: self.click_handler("C"))
        self.clear_button.grid(row=1, column=1, sticky=N + S + E + W)

        self.delete_button = Button(master,
                                    text="⌫",
                                    command=lambda: self.click_handler("Del"))
        self.delete_button.grid(row=1, column=2, sticky=N + S + E + W)

        self.division_button = Button(master,
                                      text="÷",
                                      command=lambda: self.click_handler("/"))
        self.division_button.grid(row=1, column=3, sticky=N + S + E + W)

        # Row 2

        self.digit7_button = Button(master,
                                    text="7",
                                    command=lambda: self.click_handler("7"))
        self.digit7_button.grid(row=2, sticky=N + S + E + W)

        self.digit8_button = Button(master,
                                    text="8",
                                    command=lambda: self.click_handler("8"))
        self.digit8_button.grid(row=2, column=1, sticky=N + S + E + W)

        self.digit9_button = Button(master,
                                    text="9",
                                    command=lambda: self.click_handler("9"))
        self.digit9_button.grid(row=2, column=2, sticky=N + S + E + W)

        self.multiplication_button = Button(
            master, text="×", command=lambda: self.click_handler("*"))
        self.multiplication_button.grid(row=2, column=3, sticky=N + S + E + W)

        # Row 3

        self.digit4_button = Button(master,
                                    text="4",
                                    command=lambda: self.click_handler("4"))
        self.digit4_button.grid(row=3, sticky=N + S + E + W)

        self.digit5_button = Button(master,
                                    text="5",
                                    command=lambda: self.click_handler("5"))
        self.digit5_button.grid(row=3, column=1, sticky=N + S + E + W)

        self.digit6_button = Button(master,
                                    text="6",
                                    command=lambda: self.click_handler("6"))
        self.digit6_button.grid(row=3, column=2, sticky=N + S + E + W)

        self.subtraction_button = Button(
            master, text="−", command=lambda: self.click_handler("-"))
        self.subtraction_button.grid(row=3, column=3, sticky=N + S + E + W)

        # Row 4

        self.digit1_button = Button(master,
                                    text="1",
                                    command=lambda: self.click_handler("1"))
        self.digit1_button.grid(row=4, sticky=N + S + E + W)

        self.digit2_button = Button(master,
                                    text="2",
                                    command=lambda: self.click_handler("2"))
        self.digit2_button.grid(row=4, column=1, sticky=N + S + E + W)

        self.digit3_button = Button(master,
                                    text="3",
                                    command=lambda: self.click_handler("3"))
        self.digit3_button.grid(row=4, column=2, sticky=N + S + E + W)

        self.addition_button = Button(master,
                                      text="+",
                                      command=lambda: self.click_handler("+"))
        self.addition_button.grid(row=4, column=3, sticky=N + S + E + W)

        # Row 5

        self.plus_minus_button = Button(
            master, text="±", command=lambda: self.click_handler("+/-"))
        self.plus_minus_button.grid(row=5, sticky=N + S + E + W)

        self.digit0_button = Button(master,
                                    text="0",
                                    command=lambda: self.click_handler("0"))
        self.digit0_button.grid(row=5, column=1, sticky=N + S + E + W)

        self.decimal_point_button = Button(
            master, text=".", command=lambda: self.click_handler("."))
        self.decimal_point_button.grid(row=5, column=2, sticky=N + S + E + W)

        self.equals_button = Button(master,
                                    text="=",
                                    command=lambda: self.click_handler("="))
        self.equals_button.grid(row=5, column=3, sticky=N + S + E + W)

        self.display.set(self.model.display)
示例#19
0
def main():

    parser = ArgumentParser()
    parser.add_argument("-mo",
                        "--mode",
                        dest="mode",
                        help="Select machine,database or application",
                        metavar="mode")

    #application
    parser.add_argument("-san",
                        "--SourceAppName",
                        dest="source_appname",
                        help="Select AppDynamics app name",
                        metavar="source_appname")
    parser.add_argument("-sai",
                        "--SourceAppId",
                        dest="source_appid",
                        help="Select AppDynamics app id",
                        metavar="source_appid")
    parser.add_argument("-tan",
                        "--TargetAppName",
                        dest="target_appname",
                        help="Select AppDynamics app name",
                        metavar="target_appname")
    parser.add_argument("-tai",
                        "--TargetAppId",
                        dest="target_appid",
                        help="Select AppDynamics app id",
                        metavar="target_appid")

    #server
    parser.add_argument("-ssg",
                        "--SourceSubGroup",
                        dest="source_subgroup",
                        help="Select Source Subggroup",
                        metavar="source_subgroup")
    parser.add_argument("-dsg",
                        "--DestSubGroup",
                        dest="dest_subgroup",
                        help="Select Dest Subggroup",
                        metavar="dest_subgroup")

    #database
    parser.add_argument("-l",
                        "--Line",
                        dest="line",
                        help="Select a line like PS|BAP|HDEV6-SL0",
                        metavar="line")

    args = parser.parse_args()

    Config = configparser.ConfigParser()
    Config.read("config.txt")

    controllerURL = Config.get("CONTROLLER", "controllerURL")
    account = Config.get("CONTROLLER", "account")
    client_name = Config.get("CONTROLLER", "api_client_name")
    client_secret = Config.get("CONTROLLER", "api_client_secret")

    log_file_name = Config.get("LOGGING", "file_name")
    log_level = Config.get("LOGGING", "log_level")

    user = Config.get("CONTROLLER", "user")
    password = Config.get("CONTROLLER", "password")
    ceritficateFilePath = Config.get("CONTROLLER", "ceritficateFilePath")

    server_application_id = Config.get("CONTROLLER", "server_application_id")
    database_application_id = Config.get("CONTROLLER",
                                         "database_application_id")

    logger = logging.getLogger("SYNCHER")
    if log_level == "DEBUG": logger.setLevel(logging.DEBUG)
    elif log_level == "INFO": logger.setLevel(logging.INFO)
    else:
        print("Logging level not defined - will log to INFO")
        logger.setLevel(logging.INFO)

    fh = logging.FileHandler(log_file_name)
    formatter = logging.Formatter(
        'HR_MIGRATION - %(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)

    ctrl = Controller(account,
                      client_name,
                      client_secret,
                      logger,
                      user=user,
                      password=password,
                      controllerURL=controllerURL,
                      ceritficateFilePath=ceritficateFilePath,
                      server_application_id=server_application_id,
                      database_application_id=database_application_id)
    account, client_name, client_secret = "", "", ""

    app_name = ""
    app_id = -1
    source_appname, source_appid, target_appname, target_appid, source_subgroup, dest_subgroup = "", "", "", "", "", ""
    for arg in vars(args):
        value = getattr(args, arg)
        print("'" + str(arg) + "' = '" + str(value) + "'")
        if arg == "mode": mode = value

        #if arg == "source_subgroup": source_subgroup = value
        if arg == "dest_subgroup": dest_subgroup = value

        if arg == "source_appname": source_appname = value
        if arg == "source_appid": source_appid = value
        if arg == "target_appname": target_appname = value
        if arg == "target_appid": target_appid = value

        if arg == "line": line = value

    if mode == "database":
        line = line.split("|")
        opstool = ITMOpsTool("user", "pwd")

        db = opstool.getDatabaseByLine(line)
        print("db = " + str(db))

        oltp_db = db["oltp_db"]
        olap_db = db["olap_db"]
        print("oltp_db = " + str(oltp_db))
        print("olap_db = " + str(olap_db))

        hrs = ctrl.get_health_rules_by_reference_database(
            database_application_id)

    if mode == "machine":
        ctrl.ui_login()

        #if not ctrl.doesSubGroupExist(source_subgroup):
        #    print("source_subgroup '" + str(source_subgroup) + "' does not exist! Exit")
        #    sys.exit(-1)

        if not ctrl.doesSubGroupExist(dest_subgroup):
            print("dest_subgroup '" + str(dest_subgroup) +
                  "' does not exist! Exit")
            sys.exit(-1)

        #hrs = ctrl.get_health_rules_by_server_subgroup(source_subgroup)
        #SubGroup = "Root|Machine|Path|Here"

        hrs = ctrl.get_health_rules_with_details(server_application_id)

        for hr in hrs:
            hr_name = hr["name"]

            if hr_name.lower().endswith("template"):
                print("hr before change = " + str(hr))
                if "serverSelectionCriteria" in hr["affects"]:
                    hr["affects"]["serverSelectionCriteria"][
                        "affectedServers"]["subGroups"] = [
                            "Root|" + dest_subgroup
                        ]

                    dest_subgroups_segments = dest_subgroup.split("|")
                    suffix = dest_subgroups_segments[
                        -2] + "-" + dest_subgroups_segments[-1]
                    prefix = ""

                    for i in range(len(dest_subgroups_segments) - 2):
                        prefix = prefix + dest_subgroups_segments[i] + "-"
                    prefix = prefix[:-1]

                    hr["name"] = replace_ignorecase(hr["name"], "template",
                                                    suffix)
                    hr["name"] = prefix + hr["name"]

                print("hr after change = " + str(hr))

        ctrl.create_health_rules(server_application_id, hrs)

    if mode == "application":

        if not (source_appname == None) and not (source_appid == None):
            print("Do not provide source_appname and source_appid! Abort")
            sys.exit(-1)

        if not (target_appname == None) and not (target_appid == None):
            print("Do not provide target_appname and target_appid! Abort")
            sys.exit(-1)

        if not (source_appname == ""):
            source_app_id = ctrl.get_id_by_app_name(source_appname)
        if not (target_appname == ""):
            target_appid = ctrl.get_id_by_app_name(target_appname)

        health_rules = ctrl.get_health_rules(source_app_id)
        health_rules_details = []
        for hr in health_rules:
            hr_id = hr["id"]
            tmp = ctrl.get_health_rule_details(source_app_id, hr_id)
            health_rules_details.append(tmp)

        ctrl.create_health_rules(target_appid, health_rules_details)
示例#20
0
文件: bot.py 项目: olegskip/dinoBot
	def __init__(self):
		print("Starting...")
		self.controller = Controller()
		self.image = Image()
		self.stopwatch = Stopwatch()
示例#21
0
'''
InfraGOTApp is a prototype program in Python that supports IFC workflow for infrastructure projects
with the use of Object-Relational Mapper (Pony ORM), database (PostgreSQL) and IfcOpenShell
@author Sara Guerra de Oliveira, Andrej Tibaut
@modified 2019, 2020 
@version 1.0
'''

# ## LIBRARIES in use

from controller import Controller

# start of the main module
if __name__ == '__main__':
    c = Controller()  # initialize a controller
    c.run()  # run the controller
示例#22
0
def index():
    ctrl = Controller()
    user_id = ctrl.get_current_user_id()
    return render_template('index.html', value=user_id)
示例#23
0
   
    
if __name__ == "__main__":    
    # Create QT application
    app = QtWidgets.QApplication(sys.argv)
      
    # LIN Adapter
    linAdapter = LINAdapter()
    
    # Create Modell
    model = Model(linAdapter)
    
   
      
    # Create controller / main window
    controller = Controller(model)
          
    # Register Controller in model
    model.registerController(controller)
  
    # Set program version
    controller.setWindowTitle(WINDOW_TITLE)    
  
    # Disable window resizing
    #mainWindow.setFixedSize(mainWindow.size())
  
    # Show main window
    controller.show()
  
    # Start QT application
    sys.exit(app.exec_())
示例#24
0
def get_image_url():
    movie_id = request.args.get('movie_id', '')
    ctrl = Controller()
    return jsonify({"image_url": ctrl.get_image_url(movie_id)})
示例#25
0
def model_with_one_article():
    return Controller(ModelInMemory([Article(title="title 1", text="text 1")]))
示例#26
0
def setup_db():
    ctrl = Controller()
    ctrl.setup_db()
示例#27
0
def test_should_list_one_article(model_with_one_article):
    controller = Controller(model_with_one_article)
    articles = controller.get_all_articles()
    assert len(articles) == 1
    assert articles[0].get_title() == "title 1"
    assert articles[0].get_text() == "text 1"
示例#28
0
    def train(self,
              plot_every=10,
              save_every=100,
              resample=False,
              true_controller=False,
              steps_to_solve=10):

        tru = Controller(vj=0.75, dt=0.05, u_max=2., radius=1.,
                         A=0.1)  # DEBUG only

        reached = 0
        solved = 0
        solved_max = 0

        if not self.built:
            self.build()
        self.sess.run(self.sync)
        min_buf_fill = False

        for i in range(self.epoch):
            dP = np.array([0.001, 0.001])

            s = self.env.reset()
            total_reward = 0
            terminal = False

            step_gamma = 1
            a_p = 0
            resample_counter = 0

            if solved > steps_to_solve:
                print('SOLVED')
                break

            for step in range(self.max_path_length):
                do_resample = 0

                if terminal:
                    break
                a, var_a = self.get_action(s)

                # normalization variance to probability
                clipped_var = np.clip(var_a, -1, 0)
                prob_action = (np.exp(clipped_var) - 0.367) / 0.633

                var_p = np.zeros(
                    (self.predictor.obs_length + self.predictor.pred_length,
                     2))

                for index, var in enumerate(prob_action):
                    if (np.random.random() < var) and (
                            step > self.predictor.obs_length) and resample:
                        do_resample = 1
                self.env.reset_magic()

                if do_resample:
                    resample_counter += 1
                    step_gamma = 0  # mixing iterative learning reset condition
                    if true_controller:  # DEBUG only
                        err, a_p, dP = tru.point(np.asarray(s[0:2]),
                                                 dP,
                                                 self.env.target,
                                                 magic=75.)
                    else:  # NORMAL operation
                        self.env.magic = 4.
                        path = self.env.get_path(self.predictor.obs_length)
                        self.path_predicted, mu_p, var_p = self.predictor.predict(
                            path, full=True)
                        a_p = self.path_predicted[self.predictor.obs_length +
                                                  self.predictor.pred_length -
                                                  1]

                # mixing iterative learning
                gamma_decayed = self.gamma**step_gamma
                a = a * (1. - gamma_decayed) + a_p * gamma_decayed
                step_gamma += 1

                next_s, r, terminal, env_info = self.env.step(a)
                total_reward += r

                self.replay_buffer.add_sample(s, a, r * self.scale_reward,
                                              terminal)

                if self.replay_buffer.size >= self.min_buffer_size:
                    if not min_buf_fill:
                        print('minimum buffer filled')
                        min_buf_fill = True
                    batch = self.replay_buffer.random_batch(self.batch_size)
                    self.optimize_q(batch)
                    self.optimize_pi(batch)
                self.sess.run(self.soft_updater)

                # plotting
                if (not i % plot_every):
                    self.env.render()
                    if step > self.predictor.obs_length:
                        self.env.render_predicted(self.path_predicted)

            # whether the run is solved (conditions)
            if total_reward and not resample_counter:
                solved += 1
            else:
                solved = 0
            if solved > solved_max:
                solved_max = solved
            if total_reward:
                reached += 1

            print('episode:',
                  i,
                  '  reward:',
                  total_reward,
                  '  resampled:',
                  resample_counter,
                  'of',
                  step,
                  '  solved: %.0f%%' % (100 * solved / steps_to_solve),
                  '(max: %.0f%%)' % (100 * solved_max / steps_to_solve),
                  flush=True)

            # save weights
            if (not i % save_every) and (i > 0):
                print('save_old weights at', i)
                self.net.model.save('save_svg/model_' + str(i) + '.h5')
                self.net.q_model.save('save_svg/q_model_' + str(i) + '.h5')
                self.net.pi_model.save('save_svg/pi_model_' + str(i) + '.h5')
                self.net.mu_model.save('save_svg/mu_model_' + str(i) + '.h5')
                self.net.var_a_model.save('save_svg/var_a_model_' + str(i) +
                                          '.h5')

                self.net.target_model.save('save_svg/target_model_' + str(i) +
                                           '.h5')
                self.net.q_model.save('save_svg/target_q_model_' + str(i) +
                                      '.h5')
                self.net.target_pi_model.save('save_svg/target_pi_model_' +
                                              str(i) + '.h5')
                self.net.target_mu_model.save('save_svg/target_mu_model_' +
                                              str(i) + '.h5')
                self.net.target_var_a_model.save(
                    'save_svg/target_var_a_model_' + str(i) + '.h5')
        print('Reached', reached, '/', self.epoch)
示例#29
0
def bets():
    """ bets route """
    if request.method == "POST":
        Controller().add_funds()

    return render_template("bets.html", controller=Controller())
示例#30
0
from values.mlp import MLPValue
from utils.check_env import environment_check

name = 'Pendulum-v0'
state_dim, action_dim, action_min, action_max = environment_check(name)

hidden_dim = 20
value_model = MLPValue([state_dim, 128, 64, 32, 1],
                       learning_rate=1e-4,
                       activation=F.tanh,
                       epsilon=0.1,
                       eta=10)
policy_model = MLPNormalPolicy([state_dim, 128, 64, 32, 2],
                               sigma=2,
                               learning_rate=1e-4,
                               act_bound=1,
                               activation=F.tanh)

prefix = "try"

policy_model = torch.load(
    '../results/results/Pendulum-v0_Final1_policy_best.pth')
model = Controller(name,
                   policy_model,
                   value_model,
                   reset_prob=0.002,
                   history_depth=1,
                   verbose=True,
                   cuda=True)
print(model.evaluate(20, True))