diff --git a/Simpy_Tutorial/processmodel.py b/Simpy_Tutorial/processmodel.py
index 1f158e087ba8c572f4b48a5f84c5634609e0a24a..c699e4b5f8286b0eeac8deeadc8c875f5f049d84 100644
--- a/Simpy_Tutorial/processmodel.py
+++ b/Simpy_Tutorial/processmodel.py
@@ -251,15 +251,6 @@ def main():
     print(state['event'])
     print(business_env.flatten_observation(state))
     rl.q_learning(space, activities)
-<<<<<<<< HEAD:Simpy_Tutorial/processmodel.py
-    path = r"C:\Users\nourm\OneDrive\Desktop\Nour\optis_app\out.csv"
-    eventlog.export_to_csv(business_env.process, path)
-========
-
-    el = business_env.bigeventlog
-
-    # eventlog.export_to_csv(business_env, r'D:\test\optis.csv')
->>>>>>>> origin/aleks2:simpy_tutorial/processmodel.py
     
 
 
diff --git a/backend.zip b/backend.zip
new file mode 100644
index 0000000000000000000000000000000000000000..275a482f8c66347a1eba24d7abe4e130be358761
Binary files /dev/null and b/backend.zip differ
diff --git a/backend/__pycache__/dqn.cpython-311.pyc b/backend/__pycache__/dqn.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..eafee2c957d0af923609a593f99aca97d07d9555
Binary files /dev/null and b/backend/__pycache__/dqn.cpython-311.pyc differ
diff --git a/backend/__pycache__/test.cpython-311.pyc b/backend/__pycache__/test.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b87cc3aa7eafe75dfcea27722b44c08c929aaa67
Binary files /dev/null and b/backend/__pycache__/test.cpython-311.pyc differ
diff --git a/backend/agent.py b/backend/agent.py
index e75453c055229586c9597b39b5e9cc52d4327e28..67a86db71f1791c90593fcfa2218376ca415c405 100644
--- a/backend/agent.py
+++ b/backend/agent.py
@@ -15,15 +15,14 @@ def q_learning(space, activities):
     num_states = 1
 
     process_space = env.observation_space['process'].nvec 
-    case_space = env.observation_space['case'].nvec 
+    # case_space = env.observation_space['case'].nvec 
     event_space = env.observation_space['event'].n
     
-    """
-    for i in process_space: num_states *= (i+1)
-    for i in case_space: num_states *= (i+1)
-    num_states *= event_space + 1
-    """
-    num_states = pow(2,14)
+    for i in process_space: num_states *= i
+    # for i in case_space: num_states *= (i+1)
+    num_states *= event_space 
+    
+    # num_states = pow(2,14)
 
     """
     process_space = env.observation_space['process'] 
@@ -41,7 +40,7 @@ def q_learning(space, activities):
 
 
     # Q = np.zeros(state_shape + (num_actions,), dtype=np.int8)
-    Q = np.zeros((num_states, num_actions), dtype = int)
+    Q = np.zeros((num_states, num_actions), dtype = np.int64)
 
     # Set the hyperparameters
     alpha = 0.1   # learning rate
@@ -77,12 +76,7 @@ def q_learning(space, activities):
             old_state = state
             state = next_state
             
-            """
-            if old_state != state: 
-                print(state)
-                print(action)
-                print(Q[state][action])
-            """
+            # comment
             
 
         time = env.process.env.now - start 
diff --git a/backend/checkenv.py b/backend/checkenv.py
new file mode 100644
index 0000000000000000000000000000000000000000..3360e0874486855c8edfdf3a04040ac09409108c
--- /dev/null
+++ b/backend/checkenv.py
@@ -0,0 +1,42 @@
+from stable_baselines3.common.env_checker import check_env
+import environment
+
+process = [] 
+num_s = 1
+process.append(num_s+1)
+num_ot = 5
+process.append(num_ot+1)
+num_sh_a = 3
+process.append(num_sh_a+1)
+num_sh_b = 3
+process.append(num_sh_b+1)
+num_sh_c = 3
+process.append(num_sh_c+1)
+num_m_a = 3
+process.append(num_m_a+1)
+num_m_b = 2
+process.append(num_m_b+1)
+num_p_a = 4
+process.append(num_p_a+1)
+num_p_b = 5
+process.append(num_p_b+1)
+num_p_c = 4
+process.append(num_p_c+1)
+num_ds_a = 7
+process.append(num_ds_a+1)
+num_ds_b = 7
+process.append(num_ds_b+1)
+num_ds_c = 7
+process.append(num_ds_c+1)
+
+case = []
+for i in range(15):
+    case.append(2)
+    
+space = [process, case]
+activities = 16
+
+env = environment.BusinessProcessEnv(space, activities)
+
+check_env(env)
+
diff --git a/backend/dqn.py b/backend/dqn.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb13989bfdbc66173feb597143b23de24fd3ff81
--- /dev/null
+++ b/backend/dqn.py
@@ -0,0 +1,40 @@
+import numpy as np
+import gymnasium as gym
+
+import environment 
+
+from stable_baselines3 import PPO, DQN
+import os
+import time
+
+def train(space, activities):
+    env = environment.BusinessProcessEnv(space, activities)
+    env.reset()
+
+    models_dir = f"models/{int(time.time())}/"
+    logdir = f"logs/{int(time.time())}/"
+
+    if not os.path.exists(models_dir):
+        os.makedirs(models_dir)
+
+    if not os.path.exists(logdir):
+        os.makedirs(logdir)
+
+    # model = PPO('MultiInputPolicy', env, verbose=1, tensorboard_log=logdir)
+    model = DQN('MultiInputPolicy', env, buffer_size = 50000000 ,verbose=1, exploration_fraction = 0.8, gamma=0.1, learning_starts = 10000, tensorboard_log=logdir)
+
+    TIMESTEPS = 1250000
+    iters = 0
+    while True:
+        iters += 1
+        model.learn(total_timesteps=TIMESTEPS, reset_num_timesteps=False, tb_log_name=f"DQN")
+        model.save(f"{models_dir}/{TIMESTEPS*iters}")
+
+
+def deploy(state):
+    model = DQN.load(r"models\other\1000000.zip")
+    action, _ = model.predict(state, deterministic=True)
+
+    return action
+
+
diff --git a/backend/environment.py b/backend/environment.py
index 1ee254b01386f500a7728900d07f3ff8855ee4af..376647d29198ebbe608a7f8f8fd6f209b2a9860a 100644
--- a/backend/environment.py
+++ b/backend/environment.py
@@ -1,7 +1,9 @@
 import gymnasium as gym
 import numpy as np
 import simpy
-import simplesimmodel as model
+import simplesimmodel as simmodel
+from collections import OrderedDict
+import math
 
 """
 Environment for the RL agent
@@ -24,93 +26,133 @@ class BusinessProcessEnv(gym.Env):
 
         self.action_space = gym.spaces.Discrete(self.activities)
 
-        self.current_state = {
-            'process': np.array(self.ressources),
-            'case': np.zeros(len(self.case), dtype=int),
-            'event': 0
-        }
+        self.current_state = OrderedDict()
+        self.current_state['case'] = np.zeros(len(self.case), dtype=int)
+        self.current_state['event'] = 0
+        self.current_state['process'] = np.zeros(len(self.ressources), dtype=int)
+        for i in range(len(self.current_state['process'])):
+            self.current_state['process'][i] += (self.ressources[i]-1)
 
         self.model_env = simpy.Environment()
-        self.process = model.BusinessProcess(self.model_env, self.ressources)
-        self.model_env.process(model.run_process(self.model_env, self.process))
-        # self.done_cases = set([])
+        self.process = simmodel.BusinessProcess(self.model_env, self.ressources)
+        self.model_env.process(simmodel.run_process(self.model_env, self.process))
 
         self.reward = 0
 
 
     def get_current_state(self, caseid):
-        process, case, event = model.get_current_state(self.process, caseid)
-        state = {
-            'process': process,
-            'case': case,
-            'event': event
-        }
+        process, case, event = simmodel.get_current_state(self.process, caseid)
+        state = OrderedDict()
+        state['case'] = np.asarray(case) 
+        state['event'] = event
+        state['process'] = np.asarray(process)
         return state
 
     def step(self, action):
         
         self.process.next = action
-
+        
+        '''
         if self.process.case_id in self.process.done_cases:
-            self.process.case_id = np.random.choice(self.process.active_cases)
+            # self.process.case_id = np.random.choice(self.process.active_cases)
+            self.process.case_id = self.process.case_counter
+
+            self.process.case_counter += 1
+            if self.process.case_id >= len(self.process.case_objects):
+                case_obj = simmodel.Case(self.process.case_id)
+
+                # add the case to the process's active cases list
+                self.process.case_objects.append(case_obj)
+                self.process.active_cases.append(self.process.case_id) 
+
+            self.model_env.process(simmodel.execute_case(self.model_env, self.process.case_id, self.process))
+        '''
+
+        if self.process.case_id == None or self.process.case_id in self.process.done_cases:
+            early_case = self.process.active_cases[0]
+            early = 15
+            for next_case in self.process.active_cases:
+                next_obj = self.process.case_objects[next_case]
+                if next_obj.current < early and next_obj.current > 1:
+                    early_case = next_obj
+                    early = next_obj.current
+
+            self.process.case_id = early_case.case_id
+           
         
         case_obj = self.process.case_objects[self.process.case_id]
         self.current_state = self.get_current_state(case_obj)
 
-        # print(f"{self.current_state['event']}")
-
         start = self.process.env.now
 
         self.process.flag = True
 
         if self.process.is_valid(self.current_state['event'], action, case_obj):
+
+            print(f"{self.current_state}")
             
             while(self.process.flag):
                 self.model_env.step()
 
             stop = self.process.env.now
 
-            case_obj = self.process.case_objects[self.process.case_id]
+            #case_obj = self.process.case_objects[self.process.case_id]
 
             # print(f"Agent did case {self.process.case_id} activity {action}.")
 
             next_state = self.get_current_state(case_obj)
             self.current_state = next_state
-            next_state = self.flatten_observation_to_int(next_state)
-
+            # next_state = self.flatten_observation_to_int(next_state)
             time = stop - start
-            reward = 10000 - time
+            if time == 0:
+                reward = 4
+            else:
+                reward = 4.5 - math.log(time, 10)
             self.reward += reward
-            done = True if (len(self.process.done_cases) == 5 or len(self.process.active_cases) == 0) else False
-            return next_state, self.reward, done, None
+            done = True if (len(self.process.done_cases) == 10 or len(self.process.active_cases) == 0) else False
+            truncated = False
+            info = {}
+            return next_state, reward, done, truncated, info # either self.reward or just reward ???
         
         else: 
-            self.reward += 0
-            next_state = self.flatten_observation_to_int(self.current_state)
+            reward = -0.1
+            self.reward += reward
+            # next_state = self.flatten_observation_to_int(self.current_state)
+            next_state = self.current_state
             done = False
-            return next_state, self.reward, done, None
+            truncated = False
+            info = {}
+            return next_state, reward, done, truncated, info
     
          
     def reset(self, seed=None, options=None):
         # Reset the environment to the initial state
-        # Implement a function which extracts the current state from an event log / simulation model
+        # Implement a function which extracts the current state from an event log / simulation simmodel
         super().reset(seed=seed)
 
-        self.current_state = {
-            'process': np.array(self.ressources),
-            'case': np.zeros(len(self.case), dtype=int),
-            'event': 0
-        }
+        self.current_state = OrderedDict()
+        self.current_state['case'] = np.zeros(len(self.case), dtype=int)
+        self.current_state['event'] = 0
+        self.current_state['process'] = np.zeros(len(self.ressources), dtype=int)
+        for i in range(len(self.current_state['process'])):
+            self.current_state['process'][i] += (self.ressources[i]-1)
+
+        observation = self.current_state
+
         self.current_step = 0
 
         self.model_env = simpy.Environment()
-        self.process = model.BusinessProcess(self.model_env, self.ressources)
-        self.model_env.process(model.run_process(self.model_env, self.process))
+        self.process = simmodel.BusinessProcess(self.model_env, self.ressources)
+        self.model_env.process(simmodel.run_process(self.model_env, self.process))
+        rand_time = np.random.randint(10,2000)
+        self.model_env.run(until = rand_time)
         self.process.done_cases = set([])
 
         self.reward = 0
 
-        return self.current_state, None
+        info = {}
+
+        return observation, info
         
 
     def render(self, mode='human'):
@@ -154,45 +196,40 @@ class BusinessProcessEnv(gym.Env):
 def main():
     process = [] 
     num_s = 1
-    process.append(num_s)
+    process.append(num_s+1)
     num_ot = 5
-    process.append(num_ot)
+    process.append(num_ot+1)
     num_sh_a = 3
-    process.append(num_sh_a)
+    process.append(num_sh_a+1)
     num_sh_b = 3
-    process.append(num_sh_b)
+    process.append(num_sh_b+1)
     num_sh_c = 3
-    process.append(num_sh_c)
+    process.append(num_sh_c+1)
     num_m_a = 3
-    process.append(num_m_a)
+    process.append(num_m_a+1)
     num_m_b = 2
-    process.append(num_m_b)
+    process.append(num_m_b+1)
     num_p_a = 4
-    process.append(num_p_a)
+    process.append(num_p_a+1)
     num_p_b = 5
-    process.append(num_p_b)
+    process.append(num_p_b+1)
     num_p_c = 4
-    process.append(num_p_c)
+    process.append(num_p_c+1)
     num_ds_a = 8
-    process.append(num_ds_a)
+    process.append(num_ds_a+1)
     num_ds_b = 8
-    process.append(num_ds_b)
+    process.append(num_ds_b+1)
     num_ds_c = 8
-    process.append(num_ds_c)
+    process.append(num_ds_c+1)
 
     case = []
     for i in range(15):
-        case.append(1)
+        case.append(2)
         
     space = [process, case]
     activities = 16
 
     env = BusinessProcessEnv(space, activities)
-    state = env.current_state
-    flattened = env.flatten_observation_to_int(state)
-    print(flattened)
-    for value in range(env.action_space.n):
-        print(value)
 
 
 if __name__ == "__main__":
diff --git a/backend/eventlog.py b/backend/eventlog.py
index 28977c8fa5c9b8ee4c0adf819c45986205dc0ebd..5988416f8ff4212513e175bb9b50f4a4b3ad040f 100644
--- a/backend/eventlog.py
+++ b/backend/eventlog.py
@@ -1,6 +1,8 @@
 import pandas as pd
 import simplesimmodel as model
 import numpy as np
+from collections import OrderedDict
+import simpy
 
 """
 Event log generator for our simulation model:
@@ -29,7 +31,6 @@ def export_to_csv(process, file_path):
     event_log_df = pd.DataFrame.from_dict(process.event_log)
     event_log_df.to_csv(file_path, index=False)
 
-
 def export_to_xes(process, file_path):
     # Use appropriate code to export to XES format
     pass
@@ -40,39 +41,37 @@ def get_active_cases():
     return active_cases
 
 
-def get_state(case_id):
+def get_state(case_id,):
 
-    process = [] 
+    process = np.zeros(13, dtype=int)
     num_s = 1
-    process.append(num_s)
-    num_ot = 5
-    process.append(num_ot)
-    num_sh_a = 3
-    process.append(num_sh_a)
-    num_sh_b = 3
-    process.append(num_sh_b)
-    num_sh_c = 3
-    process.append(num_sh_c)
-    num_m_a = 3
-    process.append(num_m_a)
-    num_m_b = 2
-    process.append(num_m_b)
-    num_p_a = 4
-    process.append(num_p_a)
-    num_p_b = 5
-    process.append(num_p_b)
-    num_p_c = 4
-    process.append(num_p_c)
-    num_ds_a = 8
-    process.append(num_ds_a)
-    num_ds_b = 8
-    process.append(num_ds_b)
-    num_ds_c = 8
-    process.append(num_ds_c)
-
-    case = []
-    for i in range(15):
-        case.append(0)
+    process[0] = num_s
+    num_ot = 4
+    process[1] = num_ot
+    num_sh_a = 2
+    process[2] = num_sh_a
+    num_sh_b = 2
+    process[3] = num_sh_b
+    num_sh_c = 2
+    process[4] = num_sh_c
+    num_m_a = 4
+    process[5] = num_m_a
+    num_m_b = 10
+    process[6] = num_m_b
+    num_p_a = 2
+    process[7] = num_p_a
+    num_p_b = 3
+    process[8] = num_p_b
+    num_p_c = 3
+    process[9] = num_p_c
+    num_ds_a = 25
+    process[10] = num_ds_a
+    num_ds_b = 40
+    process[11] = num_ds_b
+    num_ds_c = 45
+    process[12] = num_ds_c
+
+    case = np.zeros(15, dtype=int)
 
     activity_mapping = {
         'place order': 1,
@@ -124,50 +123,56 @@ def get_state(case_id):
     # Get the last event for the given Case ID
     event = last_activities[last_activities['CaseID'] == case_id]['Activity'].values[0]
 
+    """
     state = {
         'process': process,
         'case': case,
         'event': event
     }
+    """
 
-    print(state)
+    state = OrderedDict()
+    state['case'] = case
+    state['event'] = event
+    state['process'] = process
 
-    """
-    flattened = []
-    for i in state['process']: flattened.append(i)
-    for j in state['case']: flattened.append(j)
-    flattened.append(state['event'])
-    
+    print(state)
 
-    flattened = 0
-    flattened += state['event']
-    for i in state['case']: flattened += i
-    for j in state['process']: flattened += j*process[j]
+    return state
 
-    print(flattened)
-    """
-    flat_state = 0
-    flat_state += state['event']*pow(2,10)
-    print(flat_state)
-    flat_state += state['case'][1]*pow(2,1)
-    flat_state += state['case'][2]*pow(2,2)
-    event = state['event']
-    if event == 0:
-        flat_state += state['process'][0]*pow(2,6)
-    elif event == 1:
-        flat_state += state['process'][1]*pow(2,6)
-    elif 1 < event <=3:
-        flat_state += state['process'][2]*pow(2,6)+state['process'][3]*pow(2,7)+state['process'][4]*pow(2,8)
-    elif 3 < event <=6:
-        flat_state += state['process'][5]*pow(2,6)+state['process'][6]*pow(2,7)
-    elif 6 < event <= 8:
-        flat_state += state['process'][7]*pow(2,6)+state['process'][8]*pow(2,7)+state['process'][9]*pow(2,8)
-    elif 8 < event <= 11:
-        flat_state += state['process'][10]*pow(2,6)+state['process'][11]*pow(2,7)+state['process'][12]*pow(2,8)
-    elif 11 < event <= 14:
-        flat_state += state['process'][0]*pow(2,6)
-    else:
-        pass
+def generate_event_log(time):
+    ressources = [] 
+    num_s = 1
+    ressources.append(num_s+1)
+    num_ot = 4
+    ressources.append(num_ot+1)
+    num_sh_a = 2
+    ressources.append(num_sh_a+1)
+    num_sh_b = 2
+    ressources.append(num_sh_b+1)
+    num_sh_c = 2
+    ressources.append(num_sh_c+1)
+    num_m_a = 4
+    ressources.append(num_m_a+1)
+    num_m_b = 10
+    ressources.append(num_m_b+1)
+    num_p_a = 2
+    ressources.append(num_p_a+1)
+    num_p_b = 3
+    ressources.append(num_p_b+1)
+    num_p_c = 3
+    ressources.append(num_p_c+1)
+    num_ds_a = 25
+    ressources.append(num_ds_a+1)
+    num_ds_b = 40
+    ressources.append(num_ds_b+1)
+    num_ds_c = 45
+    ressources.append(num_ds_c+1)      
     
-    print(flat_state)
-    return flat_state
+    # generate event log
+    env = simpy.Environment()
+    business_process = model.BusinessProcess(env, ressources)
+    business_process.event_log_flag = True
+    env.process(model.run_process(env, business_process))
+    env.run(until = time)
+    export_to_csv(business_process, r'D:\test\optis.csv')
diff --git a/backend/main.py b/backend/main.py
index fdee31d6eb3e8d2bf65037450ec61528c9b21529..d089f6dd2975379339f7fef4f6b167809e05c703 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -6,6 +6,10 @@ import environment
 import agent
 import eventlog as log
 import pandas as pd
+import dqn
+import test
+
+
 
 def main():
     # Setup
@@ -13,78 +17,70 @@ def main():
     # random.seed(42)
     # initialize the number of resources
 
-    process = [] 
+    ressources = [] 
     num_s = 1
-    process.append(num_s)
-    num_ot = 5
-    process.append(num_ot)
-    num_sh_a = 3
-    process.append(num_sh_a)
-    num_sh_b = 3
-    process.append(num_sh_b)
-    num_sh_c = 3
-    process.append(num_sh_c)
-    num_m_a = 3
-    process.append(num_m_a)
-    num_m_b = 2
-    process.append(num_m_b)
-    num_p_a = 4
-    process.append(num_p_a)
-    num_p_b = 5
-    process.append(num_p_b)
-    num_p_c = 4
-    process.append(num_p_c)
-    num_ds_a = 7
-    process.append(num_ds_a)
-    num_ds_b = 7
-    process.append(num_ds_b)
-    num_ds_c = 7
-    process.append(num_ds_c)
+    ressources.append(num_s+1)
+    num_ot = 4
+    ressources.append(num_ot+1)
+    num_sh_a = 2
+    ressources.append(num_sh_a+1)
+    num_sh_b = 2
+    ressources.append(num_sh_b+1)
+    num_sh_c = 2
+    ressources.append(num_sh_c+1)
+    num_m_a = 4
+    ressources.append(num_m_a+1)
+    num_m_b = 10
+    ressources.append(num_m_b+1)
+    num_p_a = 2
+    ressources.append(num_p_a+1)
+    num_p_b = 3
+    ressources.append(num_p_b+1)
+    num_p_c = 3
+    ressources.append(num_p_c+1)
+    num_ds_a = 25
+    ressources.append(num_ds_a+1)
+    num_ds_b = 40
+    ressources.append(num_ds_b+1)
+    num_ds_c = 45
+    ressources.append(num_ds_c+1)
 
     case = []
     for i in range(15):
-        case.append(1)
+        case.append(2)
         
-    space = [process, case]
+    space = [ressources, case]
     activities = 16
 
-    # q learning
-    Q = agent.q_learning(space, activities)
-    # print(Q)
-
+    # dqn.train(space, activities)
+    
+    
     # generate event log
     env = simpy.Environment()
-    business_process = model.BusinessProcess(env, process)
+    business_process = model.BusinessProcess(env, ressources)
     business_process.event_log_flag = True
     env.process(model.run_process(env, business_process))
-    env.run(until = 10000)
+    env.run(until = 100)
     log.export_to_csv(business_process, r'D:\test\optis.csv')
-
+    
     # extract active cases from event log
     active_cases = log.get_active_cases()
     print(active_cases)
 
-    # test agent 
+    
     for i in range(20):
-        caseid = random.choice(active_cases)
+        caseid = np.random.choice(active_cases)
+        # print(caseid)
+
         state = log.get_state(caseid)
 
-        action = np.argmax(Q[state])
-        print(action)
-        #print(Q)
-        print(Q[state])
+        print(dqn.deploy(state))
+    
 
-    state = Q[0]
-    action = np.argmax(state)
-    print(action)
-    print(state)
 
-    state = Q[64]
-    action = np.argmax(state)
-    print(action)
-    print(state)
+    test.test_agent()
+    
     
-
 
 
 if __name__ == "__main__":
diff --git a/backend/simplesimmodel.py b/backend/simplesimmodel.py
index 18cb95273cd687ac419a8d7c8cf3fce44011e738..3d2dc776d334d1682dd24758f8ab21a24689962e 100644
--- a/backend/simplesimmodel.py
+++ b/backend/simplesimmodel.py
@@ -26,20 +26,20 @@ class BusinessProcess(object):
         self.env = env
 
         # initialize ressources
-        self.system = simpy.Resource(env, ressources[0])
-        self.order_taker = simpy.Resource(env, ressources[1])
-        self.stock_handler_a = simpy.Resource(env, ressources[2])
-        self.stock_handler_b = simpy.Resource(env, ressources[3])
-        self.stock_handler_c = simpy.Resource(env, ressources[4])
-        self.manufacturer_a = simpy.Resource(env, ressources[5])
-        self.manufacturer_b = simpy.Resource(env, ressources[6])
-        self.packer_a = simpy.Resource(env, ressources[7])
-        self.packer_b = simpy.Resource(env, ressources[8])
-        self.packer_c = simpy.Resource(env, ressources[9])
+        self.system = simpy.Resource(env, ressources[0] - 1)
+        self.order_taker = simpy.Resource(env, ressources[1] - 1)
+        self.stock_handler_a = simpy.Resource(env, ressources[2] - 1)
+        self.stock_handler_b = simpy.Resource(env, ressources[3] - 1)
+        self.stock_handler_c = simpy.Resource(env, ressources[4] - 1)
+        self.manufacturer_a = simpy.Resource(env, ressources[5] - 1)
+        self.manufacturer_b = simpy.Resource(env, ressources[6] - 1)
+        self.packer_a = simpy.Resource(env, ressources[7] - 1)
+        self.packer_b = simpy.Resource(env, ressources[8] - 1)
+        self.packer_c = simpy.Resource(env, ressources[9] - 1)
         # capacity of each delivery service instead of numbers of workers
-        self.delivery_service_a = simpy.Resource(env, ressources[10])
-        self.delivery_service_b = simpy.Resource(env, ressources[11])
-        self.delivery_service_c = simpy.Resource(env, ressources[12])
+        self.delivery_service_a = simpy.Resource(env, ressources[10] - 1)
+        self.delivery_service_b = simpy.Resource(env, ressources[11] - 1)
+        self.delivery_service_c = simpy.Resource(env, ressources[12] - 1)
     
         # initialize lists with active cases and all case objects
         self.active_cases = [0, 1, 2]
@@ -53,7 +53,7 @@ class BusinessProcess(object):
 
         self.next = 0
         
-        self.case_id = 0
+        self.case_id = None
 
         self.done_cases = set([])
 
@@ -61,10 +61,12 @@ class BusinessProcess(object):
         self.event_log = []
         self.event_counter = 0
 
+        self.case_counter = 3 # implementation where agent creates cases
+
         # random.seed(1)
 
     def place_order(self, case):
-        yield self.env.timeout(0)
+        yield self.env.timeout(2)
 
     def arrange_standard_order(self, case):
         yield self.env.timeout(random.randint(10, 15))
@@ -151,13 +153,16 @@ With that the order is completed.
 """
 def execute_case(env, case, process):
     # create a case object to keep track of case attributes if not already existing
-    if len(process.case_objects) <= case:
+    if case >= len(process.case_objects):
         case_obj = Case(case)
 
         # add the case to the process's active cases list
-        process.case_objects.append(case_obj) 
+        process.case_objects.append(case_obj)
         process.active_cases.append(case) 
+    
 
+    # case_obj = process.case_objects[case] - implementation with creation of cases by agent
+    
     # if the case is one of the first three choose it from the list
     if len(process.case_objects) <= 3:
         case_obj = process.case_objects[case]
@@ -530,6 +535,50 @@ def get_current_state(process, case):
 
     return process_state, cur_case, event
 
+def get_ressources(process):
+    process_state = []
+
+    num_system = process.system.capacity - process.system.count
+    process_state.append(num_system)
+
+    num_order_taker = process.order_taker.capacity - process.order_taker.count 
+    process_state.append(num_order_taker)
+
+    num_stock_handler_a = process.stock_handler_a.capacity - process.stock_handler_a.count 
+    process_state.append(num_stock_handler_a)
+
+    num_stock_handler_b = process.stock_handler_b.capacity - process.stock_handler_b.count 
+    process_state.append(num_stock_handler_b)
+
+    num_stock_handler_c = process.stock_handler_c.capacity - process.stock_handler_c.count 
+    process_state.append(num_stock_handler_c)
+
+    num_manufacturer_a = process.manufacturer_a.capacity - process.manufacturer_a.count 
+    process_state.append(num_manufacturer_a)
+
+    num_manufacturer_b = process.manufacturer_b.capacity - process.manufacturer_b.count 
+    process_state.append(num_manufacturer_b)
+
+    num_packer_a = process.packer_a.capacity - process.packer_a.count 
+    process_state.append(num_packer_a)
+
+    num_packer_b = process.packer_b.capacity - process.packer_b.count 
+    process_state.append(num_packer_b)
+
+    num_packer_c = process.packer_c.capacity - process.packer_c.count 
+    process_state.append(num_packer_c)
+
+    num_delivery_service_a = process.delivery_service_a.capacity - process.delivery_service_a.count 
+    process_state.append(num_delivery_service_a)
+
+    num_delivery_service_b = process.delivery_service_b.capacity - process.delivery_service_b.count
+    process_state.append(num_delivery_service_b) 
+
+    num_delivery_service_c = process.delivery_service_c.capacity - process.delivery_service_c.count 
+    process_state.append(num_delivery_service_c)
+
+    return process_state
+
 """
 Defines how often new orders (cases) come in and starts executing them
 """
@@ -540,14 +589,32 @@ def run_process(env, process):
     for case in range(3):
         env.process(execute_case(env, case, process))
 
+
     # the new incoming orders
-    while case < 1000:
-        waittime = random.randint(10,15)
+    while True:
+        while(len(process.active_cases) > 300):
+            yield env.timeout(1)
+
+        # waittime = random.randint(10,15)
+        waittime = 10
         if case % 20 == 0:
             waittime = 100
         yield env.timeout(waittime)  # Wait a bit before generating a new case
 
         case += 1
-        # process.active_cases.append(case)
         env.process(execute_case(env, case, process))
+        
+        '''
+        # process.active_cases.append(case)
+        if process.case_counter >= len(process.case_objects):
+            case_obj = Case(process.case_counter)
+
+            # add the case to the process's active cases list
+            process.case_objects.append(case_obj)
+            process.active_cases.append(process.case_counter) 
+
+        env.process(execute_case(env, process.case_counter, process))
+        process.case_counter += 1
+        '''
+
 
diff --git a/backend/simtest.py b/backend/simtest.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4937432f42e98dd28da8a3ed34730c6bb14aae1
--- /dev/null
+++ b/backend/simtest.py
@@ -0,0 +1,56 @@
+import simpy
+import random
+import numpy as np
+import simplesimmodel as simmodel
+import environment 
+import agent
+import eventlog as log
+import pandas as pd
+import dqn
+
+
+
+def main():
+    # initialize the number of resources
+
+    ressources = [] 
+    num_s = 1
+    ressources.append(num_s+1)
+    num_ot = 4
+    ressources.append(num_ot+1)
+    num_sh_a = 2
+    ressources.append(num_sh_a+1)
+    num_sh_b = 2
+    ressources.append(num_sh_b+1)
+    num_sh_c = 2
+    ressources.append(num_sh_c+1)
+    num_m_a = 4
+    ressources.append(num_m_a+1)
+    num_m_b = 10
+    ressources.append(num_m_b+1)
+    num_p_a = 2
+    ressources.append(num_p_a+1)
+    num_p_b = 3
+    ressources.append(num_p_b+1)
+    num_p_c = 3
+    ressources.append(num_p_c+1)
+    num_ds_a = 25
+    ressources.append(num_ds_a+1)
+    num_ds_b = 40
+    ressources.append(num_ds_b+1)
+    num_ds_c = 40
+    ressources.append(num_ds_c+1)
+
+    model_env = simpy.Environment()
+    process = simmodel.BusinessProcess(model_env, ressources)
+    model_env.process(simmodel.run_process(model_env, process))
+
+    for i in range(2000):
+        model_env.step()
+        print(simmodel.get_ressources(process))
+
+
+
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/backend/test.py b/backend/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..21cabf33865708d6be20a2690b2fd492733f1f62
--- /dev/null
+++ b/backend/test.py
@@ -0,0 +1,16 @@
+from collections import OrderedDict
+import numpy as np
+import dqn
+
+def test_agent():
+    case = [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
+    event = 3
+    process = [1,4,2,2,2,4,0,2,3,3,20,20,20]
+
+    state = OrderedDict()
+    state['case'] = np.asarray(case) 
+    state['event'] = event
+    state['process'] = np.asarray(process)
+    print(state)
+
+    print(dqn.deploy(state))
\ No newline at end of file
diff --git a/keras-rl b/keras-rl
new file mode 160000
index 0000000000000000000000000000000000000000..216c3145f3dc4d17877be26ca2185ce7db462bad
--- /dev/null
+++ b/keras-rl
@@ -0,0 +1 @@
+Subproject commit 216c3145f3dc4d17877be26ca2185ce7db462bad
diff --git a/logs/1686571942/PPO_0/events.out.tfevents.1686571942.LAPTOP-LNRI6P3Q.21880.0 b/logs/1686571942/PPO_0/events.out.tfevents.1686571942.LAPTOP-LNRI6P3Q.21880.0
new file mode 100644
index 0000000000000000000000000000000000000000..d243451407cdcc11ce580a039e9c892ac579858f
Binary files /dev/null and b/logs/1686571942/PPO_0/events.out.tfevents.1686571942.LAPTOP-LNRI6P3Q.21880.0 differ
diff --git a/logs/1686752876/PPO_0/events.out.tfevents.1686752876.LAPTOP-LNRI6P3Q.8128.0 b/logs/1686752876/PPO_0/events.out.tfevents.1686752876.LAPTOP-LNRI6P3Q.8128.0
new file mode 100644
index 0000000000000000000000000000000000000000..9eef52216c04998e9743458a7f50f7ffaba58178
Binary files /dev/null and b/logs/1686752876/PPO_0/events.out.tfevents.1686752876.LAPTOP-LNRI6P3Q.8128.0 differ
diff --git a/logs/1686755705/PPO_0/events.out.tfevents.1686755705.LAPTOP-LNRI6P3Q.20940.0 b/logs/1686755705/PPO_0/events.out.tfevents.1686755705.LAPTOP-LNRI6P3Q.20940.0
new file mode 100644
index 0000000000000000000000000000000000000000..c5aa88ac454df4952deaa1f70a6e1b6e2cb8655e
Binary files /dev/null and b/logs/1686755705/PPO_0/events.out.tfevents.1686755705.LAPTOP-LNRI6P3Q.20940.0 differ
diff --git a/logs/1686755755/PPO_0/events.out.tfevents.1686755755.LAPTOP-LNRI6P3Q.23492.0 b/logs/1686755755/PPO_0/events.out.tfevents.1686755755.LAPTOP-LNRI6P3Q.23492.0
new file mode 100644
index 0000000000000000000000000000000000000000..92b1ad38b9dbf309404e209474a7d718cce0815c
Binary files /dev/null and b/logs/1686755755/PPO_0/events.out.tfevents.1686755755.LAPTOP-LNRI6P3Q.23492.0 differ
diff --git a/logs/1686755800/PPO_0/events.out.tfevents.1686755800.LAPTOP-LNRI6P3Q.19984.0 b/logs/1686755800/PPO_0/events.out.tfevents.1686755800.LAPTOP-LNRI6P3Q.19984.0
new file mode 100644
index 0000000000000000000000000000000000000000..bbefe870fe700a1d3ea35ecb97dadd6efefea58e
Binary files /dev/null and b/logs/1686755800/PPO_0/events.out.tfevents.1686755800.LAPTOP-LNRI6P3Q.19984.0 differ
diff --git a/logs/1686755843/PPO_0/events.out.tfevents.1686755843.LAPTOP-LNRI6P3Q.8164.0 b/logs/1686755843/PPO_0/events.out.tfevents.1686755843.LAPTOP-LNRI6P3Q.8164.0
new file mode 100644
index 0000000000000000000000000000000000000000..4dd41fce06325e26e771dfc78451cee7f76da02d
Binary files /dev/null and b/logs/1686755843/PPO_0/events.out.tfevents.1686755843.LAPTOP-LNRI6P3Q.8164.0 differ
diff --git a/logs/1686755982/DQN_0/events.out.tfevents.1686755982.LAPTOP-LNRI6P3Q.10248.0 b/logs/1686755982/DQN_0/events.out.tfevents.1686755982.LAPTOP-LNRI6P3Q.10248.0
new file mode 100644
index 0000000000000000000000000000000000000000..744c9852390131c86c8c38c0836724065175f41c
Binary files /dev/null and b/logs/1686755982/DQN_0/events.out.tfevents.1686755982.LAPTOP-LNRI6P3Q.10248.0 differ
diff --git a/logs/1686756216/DQN_0/events.out.tfevents.1686756216.LAPTOP-LNRI6P3Q.22168.0 b/logs/1686756216/DQN_0/events.out.tfevents.1686756216.LAPTOP-LNRI6P3Q.22168.0
new file mode 100644
index 0000000000000000000000000000000000000000..46c75ff7736b88b8cea838ea3a085d47bdc03b1f
Binary files /dev/null and b/logs/1686756216/DQN_0/events.out.tfevents.1686756216.LAPTOP-LNRI6P3Q.22168.0 differ
diff --git a/logs/1686756290/DQN_0/events.out.tfevents.1686756290.LAPTOP-LNRI6P3Q.21760.0 b/logs/1686756290/DQN_0/events.out.tfevents.1686756290.LAPTOP-LNRI6P3Q.21760.0
new file mode 100644
index 0000000000000000000000000000000000000000..86b1287a70d59bf02d13a2a66ba6b8f85fb07170
Binary files /dev/null and b/logs/1686756290/DQN_0/events.out.tfevents.1686756290.LAPTOP-LNRI6P3Q.21760.0 differ
diff --git a/logs/1686756568/DQN_0/events.out.tfevents.1686756568.LAPTOP-LNRI6P3Q.19608.0 b/logs/1686756568/DQN_0/events.out.tfevents.1686756568.LAPTOP-LNRI6P3Q.19608.0
new file mode 100644
index 0000000000000000000000000000000000000000..e76fa270175809b9e922a61fd2146be6c71c27cf
Binary files /dev/null and b/logs/1686756568/DQN_0/events.out.tfevents.1686756568.LAPTOP-LNRI6P3Q.19608.0 differ
diff --git a/logs/1686824032/DQN_0/events.out.tfevents.1686824032.LAPTOP-LNRI6P3Q.15984.0 b/logs/1686824032/DQN_0/events.out.tfevents.1686824032.LAPTOP-LNRI6P3Q.15984.0
new file mode 100644
index 0000000000000000000000000000000000000000..02387f3820f73dbb7ff85fe803d3ec30806fc1e7
Binary files /dev/null and b/logs/1686824032/DQN_0/events.out.tfevents.1686824032.LAPTOP-LNRI6P3Q.15984.0 differ
diff --git a/logs/1686840124/DQN_0/events.out.tfevents.1686840124.LAPTOP-LNRI6P3Q.2772.0 b/logs/1686840124/DQN_0/events.out.tfevents.1686840124.LAPTOP-LNRI6P3Q.2772.0
new file mode 100644
index 0000000000000000000000000000000000000000..e2999d488a9e94c0680eaa3b8ed516c2565eb8fa
Binary files /dev/null and b/logs/1686840124/DQN_0/events.out.tfevents.1686840124.LAPTOP-LNRI6P3Q.2772.0 differ
diff --git a/logs/1686840124/DQN_0/events.out.tfevents.1686842417.LAPTOP-LNRI6P3Q.2772.1 b/logs/1686840124/DQN_0/events.out.tfevents.1686842417.LAPTOP-LNRI6P3Q.2772.1
new file mode 100644
index 0000000000000000000000000000000000000000..3d378351809316d2a4ebe4047ee06f4a87a807fa
Binary files /dev/null and b/logs/1686840124/DQN_0/events.out.tfevents.1686842417.LAPTOP-LNRI6P3Q.2772.1 differ
diff --git a/logs/1686843173/DQN_0/events.out.tfevents.1686843173.LAPTOP-LNRI6P3Q.10132.0 b/logs/1686843173/DQN_0/events.out.tfevents.1686843173.LAPTOP-LNRI6P3Q.10132.0
new file mode 100644
index 0000000000000000000000000000000000000000..ab889938008ad24efb49d21d827e6062c8b6adca
Binary files /dev/null and b/logs/1686843173/DQN_0/events.out.tfevents.1686843173.LAPTOP-LNRI6P3Q.10132.0 differ
diff --git a/logs/1686843330/DQN_0/events.out.tfevents.1686843330.LAPTOP-LNRI6P3Q.22992.0 b/logs/1686843330/DQN_0/events.out.tfevents.1686843330.LAPTOP-LNRI6P3Q.22992.0
new file mode 100644
index 0000000000000000000000000000000000000000..1121f6244beda3e4f64e1517c45dd0aee54cb635
Binary files /dev/null and b/logs/1686843330/DQN_0/events.out.tfevents.1686843330.LAPTOP-LNRI6P3Q.22992.0 differ
diff --git a/logs/1686843427/DQN_0/events.out.tfevents.1686843427.LAPTOP-LNRI6P3Q.1560.0 b/logs/1686843427/DQN_0/events.out.tfevents.1686843427.LAPTOP-LNRI6P3Q.1560.0
new file mode 100644
index 0000000000000000000000000000000000000000..a80a2ec8987709df5589334b53d4b1112c05db65
Binary files /dev/null and b/logs/1686843427/DQN_0/events.out.tfevents.1686843427.LAPTOP-LNRI6P3Q.1560.0 differ
diff --git a/logs/1686843661/DQN_0/events.out.tfevents.1686843661.LAPTOP-LNRI6P3Q.2648.0 b/logs/1686843661/DQN_0/events.out.tfevents.1686843661.LAPTOP-LNRI6P3Q.2648.0
new file mode 100644
index 0000000000000000000000000000000000000000..16e4e28edc80cf9d13d2d2d7acbcdfb3a24d854a
Binary files /dev/null and b/logs/1686843661/DQN_0/events.out.tfevents.1686843661.LAPTOP-LNRI6P3Q.2648.0 differ
diff --git a/logs/1686843661/DQN_0/events.out.tfevents.1686850497.LAPTOP-LNRI6P3Q.2648.1 b/logs/1686843661/DQN_0/events.out.tfevents.1686850497.LAPTOP-LNRI6P3Q.2648.1
new file mode 100644
index 0000000000000000000000000000000000000000..912c86a53203573fa9318325d90b142f07388e27
Binary files /dev/null and b/logs/1686843661/DQN_0/events.out.tfevents.1686850497.LAPTOP-LNRI6P3Q.2648.1 differ
diff --git a/logs/1686865976/DQN_0/events.out.tfevents.1686865976.LAPTOP-LNRI6P3Q.26592.0 b/logs/1686865976/DQN_0/events.out.tfevents.1686865976.LAPTOP-LNRI6P3Q.26592.0
new file mode 100644
index 0000000000000000000000000000000000000000..90004f05d66d506c95601230dd2fd5a7a0789517
Binary files /dev/null and b/logs/1686865976/DQN_0/events.out.tfevents.1686865976.LAPTOP-LNRI6P3Q.26592.0 differ
diff --git a/logs/1686893455/DQN_0/events.out.tfevents.1686893455.LAPTOP-LNRI6P3Q.10416.0 b/logs/1686893455/DQN_0/events.out.tfevents.1686893455.LAPTOP-LNRI6P3Q.10416.0
new file mode 100644
index 0000000000000000000000000000000000000000..e61e78ff8972981a81ae64836ac5e67f07a62709
Binary files /dev/null and b/logs/1686893455/DQN_0/events.out.tfevents.1686893455.LAPTOP-LNRI6P3Q.10416.0 differ
diff --git a/logs/1686893544/DQN_0/events.out.tfevents.1686893544.LAPTOP-LNRI6P3Q.18928.0 b/logs/1686893544/DQN_0/events.out.tfevents.1686893544.LAPTOP-LNRI6P3Q.18928.0
new file mode 100644
index 0000000000000000000000000000000000000000..7635779f37296ea1481f5869b230b07bc5db7b73
Binary files /dev/null and b/logs/1686893544/DQN_0/events.out.tfevents.1686893544.LAPTOP-LNRI6P3Q.18928.0 differ
diff --git a/logs/1686893852/DQN_0/events.out.tfevents.1686893852.LAPTOP-LNRI6P3Q.20732.0 b/logs/1686893852/DQN_0/events.out.tfevents.1686893852.LAPTOP-LNRI6P3Q.20732.0
new file mode 100644
index 0000000000000000000000000000000000000000..5cdebaf5224a1f32a1f70229c4cf830d767c91bb
Binary files /dev/null and b/logs/1686893852/DQN_0/events.out.tfevents.1686893852.LAPTOP-LNRI6P3Q.20732.0 differ
diff --git a/logs/1686893852/DQN_0/events.out.tfevents.1686914707.LAPTOP-LNRI6P3Q.20732.1 b/logs/1686893852/DQN_0/events.out.tfevents.1686914707.LAPTOP-LNRI6P3Q.20732.1
new file mode 100644
index 0000000000000000000000000000000000000000..725cd32fccf92a70b7970831553041d108c84cdd
Binary files /dev/null and b/logs/1686893852/DQN_0/events.out.tfevents.1686914707.LAPTOP-LNRI6P3Q.20732.1 differ
diff --git a/logs/1686914765/DQN_0/events.out.tfevents.1686914765.LAPTOP-LNRI6P3Q.20448.0 b/logs/1686914765/DQN_0/events.out.tfevents.1686914765.LAPTOP-LNRI6P3Q.20448.0
new file mode 100644
index 0000000000000000000000000000000000000000..b338f9d2a949e56cb13b78af5b673092329972d4
Binary files /dev/null and b/logs/1686914765/DQN_0/events.out.tfevents.1686914765.LAPTOP-LNRI6P3Q.20448.0 differ
diff --git a/logs/1686918647/DQN_0/events.out.tfevents.1686918647.LAPTOP-LNRI6P3Q.728.0 b/logs/1686918647/DQN_0/events.out.tfevents.1686918647.LAPTOP-LNRI6P3Q.728.0
new file mode 100644
index 0000000000000000000000000000000000000000..3fe5115861c83615e753e895978cad29b27489b7
Binary files /dev/null and b/logs/1686918647/DQN_0/events.out.tfevents.1686918647.LAPTOP-LNRI6P3Q.728.0 differ
diff --git a/logs/1686919319/DQN_0/events.out.tfevents.1686919319.LAPTOP-LNRI6P3Q.16840.0 b/logs/1686919319/DQN_0/events.out.tfevents.1686919319.LAPTOP-LNRI6P3Q.16840.0
new file mode 100644
index 0000000000000000000000000000000000000000..142825a51e74db121e98b0e2b4a541586734f5e6
Binary files /dev/null and b/logs/1686919319/DQN_0/events.out.tfevents.1686919319.LAPTOP-LNRI6P3Q.16840.0 differ
diff --git a/logs/1686920368/DQN_0/events.out.tfevents.1686920368.LAPTOP-LNRI6P3Q.6592.0 b/logs/1686920368/DQN_0/events.out.tfevents.1686920368.LAPTOP-LNRI6P3Q.6592.0
new file mode 100644
index 0000000000000000000000000000000000000000..709a09f4f9022c4fb5c87b43be41988634a565fb
Binary files /dev/null and b/logs/1686920368/DQN_0/events.out.tfevents.1686920368.LAPTOP-LNRI6P3Q.6592.0 differ
diff --git a/logs/1686920850/DQN_0/events.out.tfevents.1686920850.LAPTOP-LNRI6P3Q.17548.0 b/logs/1686920850/DQN_0/events.out.tfevents.1686920850.LAPTOP-LNRI6P3Q.17548.0
new file mode 100644
index 0000000000000000000000000000000000000000..39d8405df75990faa32f71920c78d49f0d2c9e34
Binary files /dev/null and b/logs/1686920850/DQN_0/events.out.tfevents.1686920850.LAPTOP-LNRI6P3Q.17548.0 differ
diff --git a/logs/1686920850/DQN_0/events.out.tfevents.1686927276.LAPTOP-LNRI6P3Q.17548.1 b/logs/1686920850/DQN_0/events.out.tfevents.1686927276.LAPTOP-LNRI6P3Q.17548.1
new file mode 100644
index 0000000000000000000000000000000000000000..fc77dd582fa0431829490e076ca33447b13ebb74
Binary files /dev/null and b/logs/1686920850/DQN_0/events.out.tfevents.1686927276.LAPTOP-LNRI6P3Q.17548.1 differ
diff --git a/logs/1687170793/DQN_0/events.out.tfevents.1687170793.LAPTOP-LNRI6P3Q.5376.0 b/logs/1687170793/DQN_0/events.out.tfevents.1687170793.LAPTOP-LNRI6P3Q.5376.0
new file mode 100644
index 0000000000000000000000000000000000000000..8c0daf0087d1891eaee6276ae879d523869ef082
Binary files /dev/null and b/logs/1687170793/DQN_0/events.out.tfevents.1687170793.LAPTOP-LNRI6P3Q.5376.0 differ
diff --git a/logs/1687170793/DQN_0/events.out.tfevents.1687175059.LAPTOP-LNRI6P3Q.5376.1 b/logs/1687170793/DQN_0/events.out.tfevents.1687175059.LAPTOP-LNRI6P3Q.5376.1
new file mode 100644
index 0000000000000000000000000000000000000000..7a046edc97336d7fd62f63ffae8058f4f654a40c
Binary files /dev/null and b/logs/1687170793/DQN_0/events.out.tfevents.1687175059.LAPTOP-LNRI6P3Q.5376.1 differ
diff --git a/logs/1687176631/DQN_0/events.out.tfevents.1687176631.LAPTOP-LNRI6P3Q.3472.0 b/logs/1687176631/DQN_0/events.out.tfevents.1687176631.LAPTOP-LNRI6P3Q.3472.0
new file mode 100644
index 0000000000000000000000000000000000000000..b9703ff8e1955cc4373af50ae012ff46e5d0c002
Binary files /dev/null and b/logs/1687176631/DQN_0/events.out.tfevents.1687176631.LAPTOP-LNRI6P3Q.3472.0 differ
diff --git a/logs/1687176631/DQN_0/events.out.tfevents.1687202792.LAPTOP-LNRI6P3Q.3472.1 b/logs/1687176631/DQN_0/events.out.tfevents.1687202792.LAPTOP-LNRI6P3Q.3472.1
new file mode 100644
index 0000000000000000000000000000000000000000..9500cd1e918e929ff2efaeb3c155dbed7d1f0204
Binary files /dev/null and b/logs/1687176631/DQN_0/events.out.tfevents.1687202792.LAPTOP-LNRI6P3Q.3472.1 differ
diff --git a/logs/1687248590/DQN_0/events.out.tfevents.1687248590.LAPTOP-LNRI6P3Q.22804.0 b/logs/1687248590/DQN_0/events.out.tfevents.1687248590.LAPTOP-LNRI6P3Q.22804.0
new file mode 100644
index 0000000000000000000000000000000000000000..aed28dc65a27f3484702a2abf6d81d36cc62801f
Binary files /dev/null and b/logs/1687248590/DQN_0/events.out.tfevents.1687248590.LAPTOP-LNRI6P3Q.22804.0 differ
diff --git a/logs/1687248641/DQN_0/events.out.tfevents.1687248641.LAPTOP-LNRI6P3Q.3348.0 b/logs/1687248641/DQN_0/events.out.tfevents.1687248641.LAPTOP-LNRI6P3Q.3348.0
new file mode 100644
index 0000000000000000000000000000000000000000..73769ff9095554bff7f3266893748cdd532eb262
Binary files /dev/null and b/logs/1687248641/DQN_0/events.out.tfevents.1687248641.LAPTOP-LNRI6P3Q.3348.0 differ
diff --git a/logs/1687257274/DQN_0/events.out.tfevents.1687257274.LAPTOP-LNRI6P3Q.24528.0 b/logs/1687257274/DQN_0/events.out.tfevents.1687257274.LAPTOP-LNRI6P3Q.24528.0
new file mode 100644
index 0000000000000000000000000000000000000000..d520b2b8eb6250abd93315d55312c23063bc7e79
Binary files /dev/null and b/logs/1687257274/DQN_0/events.out.tfevents.1687257274.LAPTOP-LNRI6P3Q.24528.0 differ
diff --git a/logs/1687257274/DQN_0/events.out.tfevents.1687265987.LAPTOP-LNRI6P3Q.24528.1 b/logs/1687257274/DQN_0/events.out.tfevents.1687265987.LAPTOP-LNRI6P3Q.24528.1
new file mode 100644
index 0000000000000000000000000000000000000000..662ffddf190cfc3173c4754c511edd164db2392b
Binary files /dev/null and b/logs/1687257274/DQN_0/events.out.tfevents.1687265987.LAPTOP-LNRI6P3Q.24528.1 differ
diff --git a/logs/1687266574/DQN_0/events.out.tfevents.1687266574.LAPTOP-LNRI6P3Q.1068.0 b/logs/1687266574/DQN_0/events.out.tfevents.1687266574.LAPTOP-LNRI6P3Q.1068.0
new file mode 100644
index 0000000000000000000000000000000000000000..0aa37529e571dd2ff1b29ad25bc265ab9a366222
Binary files /dev/null and b/logs/1687266574/DQN_0/events.out.tfevents.1687266574.LAPTOP-LNRI6P3Q.1068.0 differ
diff --git a/logs/1687267242/DQN_0/events.out.tfevents.1687267242.LAPTOP-LNRI6P3Q.24972.0 b/logs/1687267242/DQN_0/events.out.tfevents.1687267242.LAPTOP-LNRI6P3Q.24972.0
new file mode 100644
index 0000000000000000000000000000000000000000..0cd662d67d6c6dc34966a2751601ad56a1d1484b
Binary files /dev/null and b/logs/1687267242/DQN_0/events.out.tfevents.1687267242.LAPTOP-LNRI6P3Q.24972.0 differ
diff --git a/logs/1687270100/DQN_0/events.out.tfevents.1687270100.LAPTOP-LNRI6P3Q.24672.0 b/logs/1687270100/DQN_0/events.out.tfevents.1687270100.LAPTOP-LNRI6P3Q.24672.0
new file mode 100644
index 0000000000000000000000000000000000000000..7f57287b73530be802b86f96efaee4f7edece50d
Binary files /dev/null and b/logs/1687270100/DQN_0/events.out.tfevents.1687270100.LAPTOP-LNRI6P3Q.24672.0 differ
diff --git a/logs/1687270100/DQN_0/events.out.tfevents.1687281643.LAPTOP-LNRI6P3Q.24672.1 b/logs/1687270100/DQN_0/events.out.tfevents.1687281643.LAPTOP-LNRI6P3Q.24672.1
new file mode 100644
index 0000000000000000000000000000000000000000..0070de5751197b7ad57ffff92d437e8e2ecb1dde
Binary files /dev/null and b/logs/1687270100/DQN_0/events.out.tfevents.1687281643.LAPTOP-LNRI6P3Q.24672.1 differ
diff --git a/logs/1687531146/DQN_0/events.out.tfevents.1687531146.LAPTOP-LNRI6P3Q.26316.0 b/logs/1687531146/DQN_0/events.out.tfevents.1687531146.LAPTOP-LNRI6P3Q.26316.0
new file mode 100644
index 0000000000000000000000000000000000000000..1aae81bc410f01dbfa549a3db138166c34e67d3b
Binary files /dev/null and b/logs/1687531146/DQN_0/events.out.tfevents.1687531146.LAPTOP-LNRI6P3Q.26316.0 differ
diff --git a/logs/1687531146/DQN_0/events.out.tfevents.1687541390.LAPTOP-LNRI6P3Q.26316.1 b/logs/1687531146/DQN_0/events.out.tfevents.1687541390.LAPTOP-LNRI6P3Q.26316.1
new file mode 100644
index 0000000000000000000000000000000000000000..55bd81b8ee92ad265485f11f019f688f4b5f46f8
Binary files /dev/null and b/logs/1687531146/DQN_0/events.out.tfevents.1687541390.LAPTOP-LNRI6P3Q.26316.1 differ
diff --git a/models/1686824032/DQN.zip b/models/1686824032/DQN.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9fff1f1f7a66bd2c040eae9773afbd85e644c046
Binary files /dev/null and b/models/1686824032/DQN.zip differ
diff --git a/models/1686840124/500000.zip b/models/1686840124/500000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..eddc2bf7336afa3c19429bd4175fda871d51c313
Binary files /dev/null and b/models/1686840124/500000.zip differ
diff --git a/models/1686843661/500000.zip b/models/1686843661/500000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..3df1ca3dc0f4a05466c694af5e1547f98485f833
Binary files /dev/null and b/models/1686843661/500000.zip differ
diff --git a/models/1686893852/2000000.zip b/models/1686893852/2000000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9a975d01ac2b38b732a0102d1143c734bdc16fab
Binary files /dev/null and b/models/1686893852/2000000.zip differ
diff --git a/models/1686920850/500000.zip b/models/1686920850/500000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..ef66305c35026cf70b44602570ec64373e4b68ea
Binary files /dev/null and b/models/1686920850/500000.zip differ
diff --git a/models/1687170793/500000.zip b/models/1687170793/500000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..41bb7768914ee7b8b09c864d52afb28eb37d6e22
Binary files /dev/null and b/models/1687170793/500000.zip differ
diff --git a/models/1687176631/2000000.zip b/models/1687176631/2000000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..07fbff69685560d89fd1ca3e1c846d81c3785073
Binary files /dev/null and b/models/1687176631/2000000.zip differ
diff --git a/models/1687257274/1000000.zip b/models/1687257274/1000000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..90925ec8138f2ba6a9d68a5bfb37eeb375998423
Binary files /dev/null and b/models/1687257274/1000000.zip differ
diff --git a/models/1687270100/1250000.zip b/models/1687270100/1250000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..edf4993be17eb50e78057e6835a21ea42e94b971
Binary files /dev/null and b/models/1687270100/1250000.zip differ
diff --git a/models/1687531146/1250000.zip b/models/1687531146/1250000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..4f2551d43d99595096b2a624769242e32ebcec3b
Binary files /dev/null and b/models/1687531146/1250000.zip differ
diff --git a/models/other/1000000.zip b/models/other/1000000.zip
new file mode 100644
index 0000000000000000000000000000000000000000..95d2104550893e9d10ff3a9f070e282b247959eb
Binary files /dev/null and b/models/other/1000000.zip differ