黄金分割法的优选方法
葛维亚
黄金分割法的优选方法也称为0.618法,是一种用于求解最优化问题的迭代算法。其基本思想是通过不断缩小区间来逐步逼近函数的极值(即最优值)。
黄金分割法是用于一元函数f(x)在给定初始区间[a,b]内搜索最佳点α*的一种方法,它是优化计算中的经典算法,算法简单、收敛速度均匀、效果较好而著称,是许多优化算法的基础,但它只适用于一维区间。
从相应数学可知,变量一阶导数为零时的数值就是最优值,但是在实际应用中,不知道变量的函数关系,无法采用数学方法获取最优值,此时可以采用黄金分割法或其他一些方法就可以推球最优值的近似值。
黄金分割法求解最优化问题的步骤如下:
1, 确定变量。
2, 确定优选区间。
3, 确定目标函数。目标函数就是你希望得到的优化结果,比如函数最大值或者最小值。而适应度函数是为了计算个体的适配值。
如果适配值是非负的,而且要求适配值越大则该个体越优越。目标函数则有正有负,它们之间关系多种多样,比如求最小值时,目标函数最小,则适配值越大,求最大值时目标值越大,适配值越大。
4, 确定约束条件。
5, 确定精度要求。
例如确定在铸铁中加入多少碳可以成为最好的钢,首先根据经验确定一个优选区间,其中最小值为a,最大值为b, c点为左起0.618点,如下图:
a——.c—b c为左起0.618点。
· 例如设定初始区间 $[a, b]$ (见上面acb 一条直线)和精度要求 $L > 0$。
· 计算两个试探点 $r_1 = a + 0.382 \times (b - a)$ 和 $u_1 = a + 0.618 \times (b - a)$,并计算它们对应的函数值 $f(r_1)$ 和 $f(u_1)$2。
2. 迭代过程 5:
· 令 $k = 1$6。
· 如果区间长度 $b - a < L$,则停止计算,当前区间的中点 $x = \frac{a + b}{2}$ 即为近似极小点。
· 如果 $f(r_1) < f(u_1)$,则更新区间为 $[a, u_1]$,并计算新的试探点 $r_2 = a + 0.382 \times (u_1 - a)$ 和 $u_2 = u_1 - 0.382 \times (u_1 - a)$。
· 如果 $f(r_1) > f(u_1)$,则更新区间为 $[r_1, b]$,并计算新的试探点 $r_2 = a + 0.618 \times (b - a)$ 和 $u_2 = u_1 - 0.618 \times (u_1 - a)$4。
· 重复上述过程,直到满足精度要求 $b - a < L$2。
· 当区间长度小于给定的精度要求 $L$ 时,算法终止,当前区间的中点即为所求的近似极值的一点。
从上述可知,黄金分割法(也称为0.618法)是一种用于求解最优化问题的迭代算法。其基本思想是通过不断缩小区间来逐步逼近函数的极值点据,也就是最佳近似值。
· 例如,设定初始区间 $[a, b]$ 和精度要求 $L > 0$。
· 计算两个试探点 $r_1 = a + 0.382 \times (b - a)$ 和 $u_1 = a + 0.618 \times (b - a)$,并计算它们对应的函数值 $f(r_1)$ 和 $f(u_1)$2。
· 令 $k = 1$6。如果区间长度 $b - a < L$,则停止计算,当前区间的中点 $x = \frac{a + b}{2}$ 即为近似最佳值点。
· 如果 $f(r_1) < f(u_1)$,则更新区间为 $[a, u_1]$,并计算新的试探点 $r_2 = a + 0.382 \times (u_1 - a)$ 和 $u_2 = u_1 - 0.382 \times (u_1 - a)$。
· 如果 $f(r_1) > f(u_1)$,则更新区间为 $[r_1, b]$,并计算新的试探点 $r_2 = a + 0.618 \times (b - a)$ 和 $u_2 = u_1 - 0.618 \times (u_1 - a)$4。
· 重复上述过程,直到满足精度要求 $b - a < L$2。当区间长度小于给定的精度要求 $L$ 时,算法终止,当前区间的中点即为所求的近似极值点。
· 上述计算方法用更简单的语言表达,就是经过计算对比ac与cb两个线段的精度,假如ac线段精度高cd线段,则删除cd线段,保留ac线段。再在ac线段0.618点分出的两个线段比较其精度,删除精度低的线段,以此反复计算下去,直到相邻两个线段精度满足精度要求,此时获得的线段精度即为所求。