约束问题的直接解法比较简单易行,对函数没有特殊的要求,主要用于求解仅含有不等式约束条件的最优化问题,但对于多维优化问题计算量比较大。
约束问题的直接解法所面临的数学模型如下:
求目标函数
的极小值点和极小值,
其中约束条件构成的可行域
随机方向法
随机方向法仍然是按照“给定方向后做一维搜索”的基本思路来进行的,也就是说,其迭代格式仍然可表示为:
Point 1 随机方向法的思路
随机方向法,首先在可行域内选取一个初始点
,即
。
随机生成
(n为维数) 个单位矢量方程组:
。
从
出发,沿给定的步长
产生
个探索点
找出探索点中在可行域内(满足约束条件),且函数值最小的点,令其为
以
为初始点,
为搜索方向,
为步长,求得
如果
既满足约束条件,且
,则令
继续沿之前的方向和步长迭代。
否则就再以
为起点,缩小步长为之前的一半,沿之前的方向迭代;如果步长缩小到比精度还小,就
为起点,再次生成随机生成
(n为维数) 个单位矢量方程组……
直到得到的
即符合约束条件、又满足
,且精度满足要求,为止。
“完全感觉自己的语言已经难以描述如此简单粗暴的随机方向法了”
“小伙伴们还是直接看流程图吧”
总得来说,随机方向法采用了“撞大运”的方式,先广泛撒网,然后从“网里”找到一个下降值最大的方向“重点培养”,在此方向上搜索到不能再搜索(步长小于精度便没有搜索意义)时,再从已经更新了的迭代点广泛撒更小的网……不断迭代,直到迭代点满足精度要求。
值得注意的是,步