- 积分
- 15
- 注册时间
- 2008-7-20
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2010-4-24 00:16:59
|
显示全部楼层
来自 黑龙江哈尔滨
此次工作的主要目的是改进maple13的全局优化能力;
当然,如果大家有maple的全局优化工具箱的话,就不用费事了。
这个版本还有很大的改进空间,姑且当作“勇敢的第一步”。
241628
maplelab 发表于 2010-4-23 23:02 
是你自己写的程序?
以下代码转自:http://blog.csdn.net/mmm_zx/archive/2010/04/18/5499756.aspx
-
- 以下代码所实现的是无约束全局优化的混沌算法,该算法的效果相当不错。
- --------------------------------------------------------------------------------
- restart;
- ChaosIterationMin:=proc(expr::algebraic,xr::Or(listlist,list),n:=700)
- local vl,z,numiter,sol,root,broot,best,numvl,Lx,Ux,nxr;
- Digits:=50;
- convert(indets(expr,name),list);
- vl:=select(x->x<>Pi,%);
- numvl:=nops(vl);
- nxr:=Matrix(xr);
- Lx:=nxr[...,1];
- Ux:=nxr[...,2];
- numiter:=floor(abs(n));
- z:=Vector(numvl,fill=0.9);
- ###########z不能取为Logistic映射的不动点{0,0.25,0.50,0.75,1}.
- broot:=Lx+~(Ux-Lx)*~z;
- best:=subs(zip(`=`,vl,convert(broot,list)),expr);
- to numiter do
- z:=4*~z*~(1-~z);
- root:=Lx+~(Ux-Lx)*~z;
- if is(subs(zip(`=`,vl,convert(root,list)),expr)-best<=0) then
- broot:=root;
- best:=subs(zip(`=`,vl,convert(root,list)),expr);
- fi;
- od;
- sol:=zip(`=`,vl,convert(broot,list));
- if not hastype(expr,{trig,trigh}) then
- return {best,<sol>};
- else
- return {evalf(best),<sol>};
- fi;
- end proc:
- --------------------------------------------------------------------------------
- 调用方法很简单:
- ChaosIterationMin(目标函数,边界条件,迭代次数);
- 迭代次数默认为700次。
- --------------------------------------------------------------------------------
- 例1:求多峰测试函数sin(x)*x+sin(x)在区间[-3*Pi,3*Pi]内的全局最小值。
- 输入:
- ChaosIterationMin(sin(x)*x+sin(x),[-3*3.14,3*3.14]);
- 返回
- {-5.7972388494,[x = 4.8699557989]}
- --------------------------------------------------------------------------------
- 例2:求多峰Shaffer测试函数0.5+(sin(sqrt(x^2+y^2))^2-0.5)/((1.0+0.001*(x^2+y^2))^2)在区间x,y=[-100,100]内的全局最大值。
- 输入:
- ChaosIterationMin(-(0.5+(sin(sqrt(x^2+y^2))^2-0.5)/((1.0+0.001*(x^2+y^2))^2)),[[-100,100],[-100,100.]]);
- 返回:
- {-.9973614376, [x = -1.1000372353,y = -1.1000372353]}
- 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mmm_zx/archive/2010/04/18/5499756.aspx
复制代码 |
|