我已经在python中创建了一个XGBoost模型,该模型可以预测给定过程基础密钥驱动程序所花费的时间。现在的目的是找到合适的驱动程序组合,以最大程度地减少处理时间。当前有30个驱动程序可帮助预测处理时间。但是,在这30个驱动程序中,我只想优化3个。
这个问题听起来像是一个受约束的非线性优化问题(如果我错了,请纠正我),因为3个驱动程序只能取一堆值。
当前,我创建了一个简单的for循环(基于约束),以创建3个驱动程序的组合。
for x in range(70,130):
for i in range(0, 15):
for j in range(34, 80):
for k in range(25,40):
if i+j+k==x:
val_rng_w_scrap.append({'PROCESS_TYPE':'Process1', 'Driver1': i, 'Driver2': j, 'Driver3':k})
sim_at_pred = model_at.predict(master_sim_14_all_iter_at)
其中master_sim_14_all_iter_at
包含Driver1,Driver2和Driver3的不同组合,以及固定的静态27个其他驱动程序集,这对于过程时间预测很重要。在通过XGBoost模型评分之后,我选择了Driver1,Driver2和Driver3的组合,这是处理时间最少的最佳解决方案。
是否有一种使用遗传算法或scipy的方法。优化以获得Driver1,Driver2和Driver3的优化组合(而不是使用上述蛮力技术)?还是有另一种可能的方式来获得最佳解决方案?