Matlab中GlobalSearch算法基本思路

Matlab本身的GlobalSearch英文说明,看得让人有点晕,自己看了一些资料,结合了自己的理解,尽力翻译过来,方便有需要的朋友一起学习,翻译和数学水平都有限,请大家不吝赐教,但是别拍砖啊!谢谢!

正文开始

1.Run fmincon from x0
首先,利用fmincon以x0为初始点做局部优化,获得终止点,记为点A。
某一点的评分函数(score function),等于该点目标函数值+ 惩罚因子*限制条件越界程度,因此可行点的评分函数值等于其目标函数值。评分函数值越小表示该点越优。
2.Generate Trial Points
使用scatter search algorithm生成NumTrialPoints个测试点,组成测试点集合(已经得到了一定程度的全局优化搜索,该集合是较优秀的)。
3.Obtain Stage 1 Start Point, Run
从测试点集合选出部分测试点(抽取比例没有说明,估计30%这个样子吧),选择其中最优点,记为点B。以点B为初始点利用fmincon做局部优化,获得终止点,记为点C。将已经测试过点从测试点集合删除。
4.Initialize Basins, Counters, Threshold
比较点A与点C的评分函数值,取其中小的一个赋值给localSolverThreshold。
GlobalSearch的启发搜索是基于一定假设的,那就是“引力池”(basin of attraction,局部解周围的局部目标函数)是球面的(译注:应该是近似于半球面)。“引力池”是以局部解为中心的。“引力池”的半径设为初始点到局部解的距离。每个近似最优解都对应一个“引力池”。


GlobalSearch中,一个“引力池”有1个计数器:
计数器C1:落入该“引力池”的测试点个数(距离局部解小于DistanceThresholdFactor*半径)。
GlobalSearch中,总体有一个计数器(C2全局就一个):

计数器C2:分数比localSolverThreshold大的测试点个数。


此时只有一个“引力池”,点A与点C中目标值小的一个,这个点也是当前仅有的近似最优解。


5.Begin Main Loop
///循环遍历每个测试点//

//判断是否需要局部优化
遍历测试点集合(第一阶段用于建立“引力池”的测试点已经被删去了),当测试点p满足以下全部条件时,利用fmincon做局部
优化:
1)点p不落于任何现有“引力池”;
2)点p的分数比localSolverThreshold还低;
3)点p是可行点。StartPointsToRun属性被设置为'bounds'或'bounds-ineqs'时,该条件才有效。

//局部优化
(i)所有C1与C2
计数器清零;(因为已经达到了C1与C2的目的,那就是放松点p局部优化的限制条件,所以要重新加强限制条件,使得点p不能轻易进行局部优化,以达到限制“近似最优解”数量的目的);

(ii)如果点p符合局部优化条件,那么利用fmincon做局部优化,有两种可能结果:
1)与每个现有局部解比较,如果点p的位置离局部解都较远,或者点p的目标函数值与局部解都差较大。此时,算法认为点p是一个新的“引力池”,并新建一个GlobalOptimSolution。设从点p找到的局部解为点xp,即近似的最优解
2)与每个现有局部解比较,如果存在一个局部解点o,点p的位置和目标值与该解都十分相近。那么算法认为从点o与点p相当,修改点o的GlobalOptimSolution中的X0属性,把点p加入X0(译注:就是说从点p可到达点o)。
(iii)将localSolverThreshold设为点p的目标函数值(这是当前全局最小的了,其实xp应该更小)。同时设置xp的“引力池”的半径为xp与p的距离。


//不局部优化(计数器,以及基于计数器的调整,都是为了使后续测试点有机会满足局部优化的条件,来产生新的“引力池”)
(i)更新计数器。对点p落入的所有“引力池”C1计数器加1,其他“引力池”C1计数器清零;如果点p的目标值大于等于localSolverThreshold,则C2计数器加1,否则C2计数器清零;
(ii)根据计数器调整系统参数。如果某“引力池”C1达到MaxWaitCycle,缩小其半径并C1清零;如果C2达到MaxWaitCycle,放松localSolverThreshold并C2清零;

///结束循环遍历每个测试点//
6.Create GlobalOptimSolution
将所有的局部解GlobalOptimSolution排序输出。

附录:
Scatter Search算法
1.多样化地产生很多测试点,从中挑选优秀点组成reference solutions(索引点集);
2.从索引点集中抽取N个子集(可采用聚类的方式选择子集),每个子集中的点线性组合,从而生成新点;
3.将第二步的新点集作为测试点集,回到第一步,从中挑选优秀点更新索引点集(保留一部分历史优秀点),直到满足停机准则。


Scatter Search算法假设前提
1.最优解的信息,是被较优解的信息所包含的;
2.线性组合,应能够保证产生的新点可以跳出原始点集的范围;新点是同过启发式择优过程产生的。这两点保证了多样性和质量;
3.多个较优解的同时产生,提升了挖掘最优解信息的几率。

可以给我发邮件,如果需要讨论的话,以上有些地方也许说的不对,也请指正,方便大家学到真正的知识。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
matlab最优化程序包括:无约束一维极值问题、进退法、黄金分割法、斐波那契法、牛顿法基本牛顿法、全局牛顿法、割线法、抛物线法、三次插值法、可接受搜索法、Goidstein法、Wolfe Powell法、单纯形搜索法、Powell法、最速下降法、共轭梯度法、牛顿法、修正牛顿法、拟牛顿法、信赖域法、显式最速下降法、Rosen梯度投影法、罚函数法、外点罚函数法、內点罚函数法、混合罚函数法、乘子法、G-N法、修正G-N法、L-M法、线性规划、单纯形法、修正单纯形法、大M法、变量有界单纯形法、整数规划、割平面法、分支定界法、0-1规划、二次规划、拉格朗曰法、起作用集算法、路径跟踪法、粒子群优化算法基本粒子群算法、带压缩因子的粒子群算法、权重改进的粒子群算法、线性递减权重法、自适应权重法、随机权重法、变学习因子的粒子群算法、同步变化的学习因子、异步变化的学习因子、二阶粒子群算法、二阶振荡粒子群算法 (matlab optimization process includes Non-binding one-dimensional extremum problems Advance and retreat method Golden Section Fibonacci method of basic Newton s method Newton s method Newton s Law of the global secant method parabola method acceptable to the three interpolation search method Goidstein France Wolfe.Powell France Simplex search method Powell steepest descent method Conjugate gradient method Newton s method Newton s method to amend Quasi-Newton Method trust region method explicitly steepest descent method, Rosen gradient projection method Penalty function method outside the penalty function method within the penalty function method Mixed penalty function multiplier method G-N was amended in G-N method L-M method Of linear programming simplex method, revised simplex method Big M method variables bounded simplex method, Cutting Plane Method integer programming branch and bound method 0-1 programming quadratic programming )

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值