我已经开始高尚的努力,让我工作的公司(有些)更高层,至少考虑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%左右,初始MSE悬挂在800左右,算法似乎正处于收敛的最后阶段,从〜800缓慢变化(每代减少1-3 MSE)大约725-750并在那里融合 .
我没有对算法进行任何优化,因为我认为在完成概念验证后我会这样做 .
我目前的实施细节是:
正如我所说的
-
4维度,每个维度都有自己的下限和上限 .
-
Mutation正在随机选择4个维度中的一个并随机化其值 .
-
突变概率为0.3 .
-
Crossover是模拟二进制有界 .
-
交叉概率为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
我有点难以理解我应该如何进行算法......从多次运行开始就陷入特定的局部最佳状态是我甚至认为不会发生的事情,并且不知道如何修复 . 任何建议将不胜感激 . 提前致谢!