增加了HSMO整线优化方法,读取数据增加了供料器部分
This commit is contained in:
28
generator.py
28
generator.py
@@ -73,9 +73,9 @@ class DataMgr:
|
||||
lineinfo += '\t' + '{:.3f}'.format(pcb_data['x'].max() - pcb_data['x'].min()) + '\t' + '{:.3f}'.format(
|
||||
pcb_data['y'].max() - pcb_data['y'].min())
|
||||
|
||||
# part_position = defaultdict(list)
|
||||
# for _, data in pcb_data.iterrows():
|
||||
# part_position[data['part']].append([data['x'], data['y']])
|
||||
part_position = defaultdict(list)
|
||||
for _, data in pcb_data.iterrows():
|
||||
part_position[data['part']].append([data['x'], data['y']])
|
||||
|
||||
point_counter, component_counter = 0, 0
|
||||
nozzle_type = set()
|
||||
@@ -94,8 +94,8 @@ class DataMgr:
|
||||
if data.points == 0:
|
||||
continue
|
||||
lineinfo += '\t' + data.part + '\t' + data.nz + '\t' + str(data.points)
|
||||
# lineinfo += '\t' + '{:.3f}'.format(np.ptp([pos[0] for pos in part_position[data.part]]))
|
||||
# lineinfo += '\t' + '{:.3f}'.format(np.ptp([pos[1] for pos in part_position[data.part]]))
|
||||
lineinfo += '\t' + '{:.3f}'.format(np.ptp([pos[0] for pos in part_position[data.part]]))
|
||||
lineinfo += '\t' + '{:.3f}'.format(np.ptp([pos[1] for pos in part_position[data.part]]))
|
||||
|
||||
lineinfo += '\n'
|
||||
file_handle.write(lineinfo)
|
||||
@@ -173,7 +173,7 @@ class DataMgr:
|
||||
return data
|
||||
|
||||
def heuristic_objective(self, cp_points, cp_nozzle):
|
||||
if len(cp_points.keys()) == 0:
|
||||
if len(cp_points.keys()) or sum(cp_points.values()) == 0:
|
||||
return 0, 0, 0, 0
|
||||
nozzle_heads, nozzle_points = defaultdict(int), defaultdict(int)
|
||||
for idx, points in cp_points.items():
|
||||
@@ -417,18 +417,18 @@ class DataMgr:
|
||||
# assembly time data
|
||||
time_data.append(float(items[0]))
|
||||
|
||||
cp_data.append([cp_points, cp_nozzle, board_width, board_height])
|
||||
cp_data.append([cp_points, cp_nozzle, board_width, board_height, cycle, nozzle_change_data, pickup_data])
|
||||
|
||||
line = file.readline()
|
||||
|
||||
if data_filter:
|
||||
cph_data = [point_data[idx] / time_data[idx] * 3600 for idx in range(len(time_data))]
|
||||
# cph_data = [point_data[idx] / time_data[idx] * 3600 for idx in range(len(time_data))]
|
||||
|
||||
w_quart = 0.6
|
||||
Q1, Q3 = np.percentile(np.array(cph_data), 25), np.percentile(np.array(cph_data), 75)
|
||||
w_quart = 0.3
|
||||
Q1, Q3 = np.percentile(np.array(time_data), 25), np.percentile(np.array(time_data), 75)
|
||||
|
||||
indices = [i for i in range(len(cph_data)) if
|
||||
Q1 - w_quart * (Q3 - Q1) <= cph_data[i] <= Q3 + w_quart * (Q3 - Q1)]
|
||||
indices = [i for i in range(len(time_data)) if
|
||||
Q1 - w_quart * (Q3 - Q1) <= time_data[i] <= Q3 + w_quart * (Q3 - Q1)]
|
||||
|
||||
filter_cp_data, filter_time_data = [], []
|
||||
for idx in indices:
|
||||
@@ -465,8 +465,8 @@ class DataMgr:
|
||||
|
||||
def neural_encode(self, input_data):
|
||||
train_data = []
|
||||
for cp_points, cp_nozzle, board_width, board_height in input_data:
|
||||
train_data.append(self.encode(cp_points, cp_nozzle, board_width, board_height))
|
||||
for cp_points, cp_nozzle, board_width, board_height, cy, nz, pu in input_data:
|
||||
train_data.append(self.encode(cp_points, cp_nozzle, board_width, board_height, cy, nz, pu))
|
||||
return train_data
|
||||
|
||||
def get_feature(self):
|
||||
|
Reference in New Issue
Block a user