整线优化第一版论文定稿工程
增加了整线批量测试 修改了现有min-max模型路径 修改了遗传算法整体框架 估计器增加异常数据剔除 封装优化结果类 修改供料器扫描算法中重复吸嘴组的判定
This commit is contained in:
@ -3,7 +3,7 @@ import copy
|
||||
from base_optimizer.optimizer_common import *
|
||||
|
||||
|
||||
def load_data(filename: str, load_feeder=False, auto_register=True):
|
||||
def load_data(filename: str, load_feeder=True, auto_register=True):
|
||||
filename = 'data/' + filename
|
||||
part_content, step_content = False, False
|
||||
part_start_line, step_start_line, part_end_line, step_end_line = -1, -1, -1, -1
|
||||
@ -142,19 +142,20 @@ def load_data(filename: str, load_feeder=False, auto_register=True):
|
||||
# 读取供料器基座数据
|
||||
feeder_data = defaultdict(pd.DataFrame)
|
||||
if load_feeder:
|
||||
feeder_columns = ['slot', 'part', 'arg']
|
||||
for machine_index in range(machine_num):
|
||||
feeder_data[machine_index] = pd.DataFrame(columns=['slot', 'part', 'arg']) # arg表示是否为预分配,不表示分配数目
|
||||
feeder_data[machine_index] = pd.DataFrame(columns=feeder_columns) # arg表示是否为预分配,不表示分配数目
|
||||
for _, data in pcb_data[machine_index].iterrows():
|
||||
slot, part = data['fdr'].split(' ')
|
||||
if slot[0] != 'F' and slot[0] != 'R':
|
||||
continue
|
||||
slot = int(slot[1:]) if slot[0] == 'F' else int(slot[1:]) + max_slot_index // 2
|
||||
feeder_data[machine_index] = pd.concat([feeder_data[machine_index], pd.DataFrame([slot, part, 1]).T])
|
||||
feeder_data[machine_index] = pd.concat([feeder_data[machine_index], pd.DataFrame([slot, part, 1], index=feeder_columns).T], ignore_index=True)
|
||||
|
||||
feeder_data[machine_index].drop_duplicates(subset='slot', inplace=True, ignore_index=True)
|
||||
# 随机移除部分已安装的供料器
|
||||
drop_index = random.sample(list(range(len(feeder_data))), len(feeder_data) // 2)
|
||||
feeder_data[machine_index].drop(index=drop_index, inplace=True)
|
||||
# drop_index = random.sample(list(range(len(feeder_data))), len(feeder_data) // 2)
|
||||
# feeder_data[machine_index].drop(index=drop_index, inplace=True)
|
||||
|
||||
feeder_data[machine_index].sort_values(by='slot', ascending=True, inplace=True, ignore_index=True)
|
||||
|
||||
@ -178,3 +179,4 @@ def merge_data(partial_pcb_data, partial_component_data):
|
||||
component_data = component_data[component_data['points'] != 0].reset_index(drop=True)
|
||||
return pcb_data, component_data
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user