整线批量测试模式添加
This commit is contained in:
22
optimizer.py
22
optimizer.py
@@ -1,3 +1,6 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
from dataloader import *
|
||||
from lineopt_genetic import line_optimizer_genetic
|
||||
from lineopt_heuristic import line_optimizer_heuristic
|
||||
@@ -47,12 +50,12 @@ def main():
|
||||
parser.add_argument('--filename', default='data-1.txt', type=str, help='load pcb data')
|
||||
|
||||
parser.add_argument('--comp_register', default=1, type=int, help='register the component according the pcb data')
|
||||
parser.add_argument('--machine_number', default=3, type=int, help='the number of machine in the assembly line')
|
||||
parser.add_argument('--machine_number', default=2, type=int, help='the number of machine in the assembly line')
|
||||
parser.add_argument('--machine_optimizer', default='feeder-priority', type=str, help='optimizer for single machine')
|
||||
parser.add_argument('--line_optimizer', default='hyper-heuristic', type=str, help='optimizer for PCB assembly line')
|
||||
parser.add_argument('--feeder_limit', default=1, type=int, help='the upper feeder limit for each type of component')
|
||||
parser.add_argument('--save', default=0, type=int, help='save the optimization result')
|
||||
parser.add_argument('--save_suffix', default='(1)', type=str, help='load pcb data')
|
||||
parser.add_argument('--save', default=1, type=int, help='save the optimization result')
|
||||
params = parser.parse_args()
|
||||
|
||||
# 结果输出显示所有行和列
|
||||
@@ -141,9 +144,9 @@ def main():
|
||||
result.to_excel(writer, sheet_name=opt, float_format='%.3f', na_rep='')
|
||||
else:
|
||||
line_optimizer = ['T-Solution', 'hyper-heuristic', 'genetic', 'reconfiguration']
|
||||
file_dirs = ['L01', 'L02', 'L03']
|
||||
file_dirs = ['LINE#1', 'LINE#2', 'LINE#3']
|
||||
|
||||
running_round = 10
|
||||
running_round = 1
|
||||
line_opt_result, line_opt_runtime = defaultdict(pd.DataFrame), defaultdict(pd.DataFrame)
|
||||
|
||||
opt_columns = []
|
||||
@@ -169,7 +172,7 @@ def main():
|
||||
warnings.warn(warning_info, SyntaxWarning)
|
||||
continue
|
||||
|
||||
machine_number = len(partial_pcb_data)
|
||||
machine_number = int(file_dir.split('#')[1]) + 1
|
||||
if not os.path.exists(f'record/{file_dir}'):
|
||||
os.makedirs(f'record/{file_dir}')
|
||||
merge_pcb_data, merge_component_data = merge_data(partial_pcb_data, partial_component_data)
|
||||
@@ -187,6 +190,9 @@ def main():
|
||||
print('------------------------------ ')
|
||||
assembly_info.append(info)
|
||||
if params.save:
|
||||
directory = f'result/{file_dir}'
|
||||
if not os.path.exists(directory):
|
||||
os.makedirs(directory)
|
||||
output_optimize_result(f'result/{file_dir}/{file[:-4]}-T-Solution-M0{machine_index + 1}',
|
||||
partial_component_data[machine_index],
|
||||
partial_pcb_data[machine_index], opt_res)
|
||||
@@ -201,11 +207,11 @@ def main():
|
||||
f'standard deviation: {np.std([info.total_time for info in assembly_info]): .3f}')
|
||||
else:
|
||||
for round_idx in range(running_round):
|
||||
sys.stdout = open(f'record/{file_dir}/{file[:-4]}-{line_opt} ({round_idx + 1}).txt', 'w')
|
||||
sys.stdout = open(f'record/{file_dir}/{file[:-4]}-{line_opt}-round-{round_idx + 1}.txt', 'w')
|
||||
|
||||
params = parser.parse_args(
|
||||
['--filename', file_dir + '/' + file, '--machine_number', str(machine_number),
|
||||
'--line_optimizer', line_opt, '--save_suffix', f'({round_idx + 1})'])
|
||||
['--filename', f'{file_dir}/{file[:-4]}-{line_opt}-round-{round_idx + 1}.txt',
|
||||
'--machine_number', str(machine_number), '--line_optimizer', line_opt])
|
||||
start_time = time.time()
|
||||
assembly_info = optimizer(merge_pcb_data, merge_component_data, None, params)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user