增加了HSMO整线优化方法,读取数据增加了供料器部分

This commit is contained in:
2025-08-10 16:58:42 +08:00
parent 045f2f394d
commit 4fd5560650
17 changed files with 1765 additions and 352 deletions

View File

@@ -33,7 +33,7 @@ def convert_cell_2_result(pcb_data, component_data, component_cell, population):
wl = [0 for _ in range(max_head_index)] # workload
e1, e2, e3 = 1, 0.5, 1. / 6
e1, e2, e3 = 1, 2, 1. / 6
component_result, cycle_result, feeder_slot_result = [], [], []
for index in population:
@@ -101,12 +101,16 @@ def optimizer_celldivision(pcb_data, component_data, hinter=True):
golden_section = 0.618
# 获取元件元胞
point_num = len(pcb_data)
component_cell = pd.DataFrame({'index': np.arange(len(component_data)), 'points': np.zeros(len(component_data), dtype=int)})
for point_cnt in range(point_num):
part = pcb_data.loc[point_cnt, 'part']
index = np.where(component_data['part'].values == part)
component_cell.loc[index[0], 'points'] += 1
feeder_num = sum(component_data['fdn'])
component_cell = pd.DataFrame({'index': np.arange(feeder_num), 'points': np.zeros(feeder_num, dtype=int)})
cell_index = 0
for part_index, data in component_data.iterrows():
total_points, division_points = data.points, math.ceil(data.points / data.fdn)
for _ in range(data.fdn):
component_cell.loc[cell_index, 'index'] = part_index
component_cell.loc[cell_index, 'points'] = min(division_points, total_points)
total_points -= division_points
cell_index += 1
component_cell = component_cell[~component_cell['points'].isin([0])]
# component_cell.sort_values(by = "points" , inplace = True, ascending = False)