我已经开始了崇高的努力,让我工作的公司(有点)的高层至少考虑一下ML。我在汽车行业工作,所以我们的大部分“问题”都与寻找汽车重心和前后轮之间的完美距离、理想重量等有关
因此,整个交易可以表述为一个成熟的优化适应度函数。在
实际的功能是这样的:我们有很多测试用例,比如10-15个,测试用例代表100公里/小时的转弯,150公里/小时的车道切换等等。我们有一个通用的测试函数,给定一组或多个参数(如上所述)返回错误百分比。例如:
get_error(test_case = lane_switch_100kph,
weight = 2000, // kg
front_axle_dist = 1.3, // meters
back_axle_dist = 1.4 // meters
)
这个函数返回一个间隔为[0,100]的浮点值,指定“误差”,当使用这些特定参数时,汽车偏离理想路径的程度。这个误差必须控制在10%以下。在
我构建了一个遗传算法(如果重要的话,我用python语言,使用DEAP库)并用Rastrigin函数进行了测试,一切都很好。对于实际模拟的适应度函数,我使用了所有测试用例的均方误差。在
从理论上讲,这看起来很简单。首先,我需要优化一个只有4个参数的更通用的模拟,所以一个4变量的函数,应该足够简单,遗传算法可以解决,它在100维的Rastrigin表现得很好,所以一个4维函数应该是小菜一碟。在
在这之前的10%的测试是可能的。在
问题在于算法,虽然它确实改善了均方误差,但速度非常慢。对于11个测试用例,初始误差约为10-30%,初始均方误差约为800,算法似乎正处于收敛的最后阶段,从~800缓慢(每代减少1-3毫秒)到大约725-750并在那里收敛。在
我没有对算法做任何优化,因为我认为我会在完成概念证明之后再做。在
我目前的实施细节是:
正如我所说的4个维度,每个维度都有自己的上限和下限。
变异是随机选择4个维度中的一个并将其值随机化。
突变概率为0.3。
交叉是模拟二进制有界的。
交叉概率为0.6。
我做了交叉,然后对人群的随机样本进行突变。
人口规模约为50人。
我使用的是锦标赛选择,比赛规模是人口的1/4。
每3/4代人被选中,1/4代人被新的个体取代。
我计划使用但尚未实现的优化。在
精英主义。
使用基于聚类的方法自适应变异参数如下所述:https://matlab1.com/wp-content/uploads/2015/09/Clustering-Based-Adaptive-Crossover-and-Mutation-Probabilities-for-Genetic-Algorithms-matlab1.com_.pdf
我有点困惑,我到底该怎么做,因为算法有点。。。在多次运行中从一开始就陷入一个特定的局部最优,这是我甚至认为不可能发生的事情,也不知道如何修复。任何建议都将不胜感激。提前谢谢!在
目前没有回答
相关问题 更多 >
编程相关推荐