current_week = math.ceil(current_time / (7*24*60)) #Calculating the current week for key, value in sim.due_wafers.items(): rolling_window.append(value[current_week:current_week+max_length_of_window]) #Adding only the values from current week up till the window length buffer_list = [] # This list stores value of previous unfinished wafers count buffer_list.append(sum(value[:current_week])) rolling_window.extend([buffer_list]) c = sum(rolling_window, []) state_rep.extend(c) # Appending the rolling window to state space return state_rep # Create the factory simulation object my_sim = fact_sim.FactorySim(sim_time, machine_dict, recipes, lead_dict, wafers_per_box, part_mix, n_part_mix) # start the simulation my_sim.start() # Retrieve machine object for first action choice mach = my_sim.next_machine # Save the state and allowed actions at the start for later use in training examples state = get_state(my_sim) allowed_actions = my_sim.allowed_actions # The action space is a list of tuples of the form [('ht1',0), ('ht1',1), ..., ('ht2', 0), ...] indicating the head # types and sequence steps for all allowed actions. action_space = list(chain.from_iterable(my_sim.station_HT_seq.values())) action_size = len(action_space) state_size = len(state) # Creating the DQN agent dqn_agent = DeepQNet.DQN(state_space_dim= state_size, action_space= action_space)
] # This list stores value of previous unfinished wafers count buffer_list.append(sum(value[:current_week])) rolling_window.extend([buffer_list]) c = sum(rolling_window, []) state_rep.extend(c) # Appending the rolling window to state space # print(len(state_rep)) return state_rep # Create the factory simulation object my_sim = fact_sim.FactorySim(sim_time, machine_dict, recipes, lead_dict, wafers_per_box, part_mix, n_part_mix, break_mean=break_mean, repair_mean=repair_mean) # start the simulation my_sim.start() # Retrieve machine object for first action choice mach = my_sim.next_machine # Save the state and allowed actions at the start for later use in training examples state = get_state(my_sim) allowed_actions = my_sim.allowed_actions # The action space is a list of tuples of the form [('ht1',0), ('ht1',1), ..., ('ht2', 0), ...] indicating the head # types and sequence steps for all allowed actions. action_space = list(chain.from_iterable(my_sim.station_HT_seq.values())) action_size = len(action_space)
for key, value in sim.due_wafers.items(): rolling_window.append( value[current_week:current_week + max_length_of_window] ) #Adding only the values from current week up till the window length buffer_list = [ ] # This list stores value of previous unfinished wafers count buffer_list.append(sum(value[:current_week])) rolling_window.extend([buffer_list]) c = sum(rolling_window, []) state_rep.extend(c) # Appending the rolling window to state space return state_rep # Create the factory simulation object my_sim = fact_sim.FactorySim(sim_time, machine_dict, recipes, lead_dict, wafers_per_box, wip_levels) # start the simulation my_sim.start() # Retrieve machine object for first action choice mach = my_sim.next_machine # Save the state and allowed actions at the start for later use in training examples state = get_state(my_sim) allowed_actions = my_sim.allowed_actions # The action space is a list of tuples of the form [('ht1',0), ('ht1',1), ..., ('ht2', 0), ...] indicating the head # types and sequence steps for all allowed actions. action_space = list(chain.from_iterable(my_sim.station_HT_seq.values())) action_size = len(action_space) state_size = len(state) # Creating the A2C agent a2c_agent = ActorCritic.A2CAgent(state_size=state_size,