找回密码
 注册
Simdroid-非首页
查看: 508|回复: 8

[4.优化] maple优化算法v1.0

[复制链接]
发表于 2010-4-23 23:02:53 | 显示全部楼层 |阅读模式 来自 湖北武汉
此次工作的主要目的是改进maple13的全局优化能力;
当然,如果大家有maple的全局优化工具箱的话,就不用费事了。
这个版本还有很大的改进空间,姑且当作“勇敢的第一步”。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2010-4-24 00:16:59 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
此次工作的主要目的是改进maple13的全局优化能力;
当然,如果大家有maple的全局优化工具箱的话,就不用费事了。
这个版本还有很大的改进空间,姑且当作“勇敢的第一步”。


241628
maplelab 发表于 2010-4-23 23:02


是你自己写的程序?

以下代码转自:http://blog.csdn.net/mmm_zx/archive/2010/04/18/5499756.aspx


  1. 以下代码所实现的是无约束全局优化的混沌算法,该算法的效果相当不错。

  2. --------------------------------------------------------------------------------
  3. restart;
  4. ChaosIterationMin:=proc(expr::algebraic,xr::Or(listlist,list),n:=700)
  5. local vl,z,numiter,sol,root,broot,best,numvl,Lx,Ux,nxr;
  6. Digits:=50;
  7. convert(indets(expr,name),list);
  8. vl:=select(x->x<>Pi,%);
  9. numvl:=nops(vl);
  10.    nxr:=Matrix(xr);
  11.    Lx:=nxr[...,1];
  12.    Ux:=nxr[...,2];
  13. numiter:=floor(abs(n));
  14. z:=Vector(numvl,fill=0.9);
  15. ###########z不能取为Logistic映射的不动点{0,0.25,0.50,0.75,1}.
  16. broot:=Lx+~(Ux-Lx)*~z;
  17. best:=subs(zip(`=`,vl,convert(broot,list)),expr);
  18. to numiter do
  19.    z:=4*~z*~(1-~z);
  20.    root:=Lx+~(Ux-Lx)*~z;
  21.    if is(subs(zip(`=`,vl,convert(root,list)),expr)-best<=0) then
  22.       broot:=root;
  23.       best:=subs(zip(`=`,vl,convert(root,list)),expr);
  24.    fi;
  25. od;
  26. sol:=zip(`=`,vl,convert(broot,list));
  27. if not hastype(expr,{trig,trigh}) then
  28.    return {best,<sol>};
  29. else  
  30.    return {evalf(best),<sol>};
  31. fi;
  32. end proc:

  33. --------------------------------------------------------------------------------
  34. 调用方法很简单:
  35. ChaosIterationMin(目标函数,边界条件,迭代次数);
  36. 迭代次数默认为700次。

  37. --------------------------------------------------------------------------------
  38. 例1:求多峰测试函数sin(x)*x+sin(x)在区间[-3*Pi,3*Pi]内的全局最小值。
  39. 输入:
  40. ChaosIterationMin(sin(x)*x+sin(x),[-3*3.14,3*3.14]);
  41. 返回
  42.    {-5.7972388494,[x = 4.8699557989]}

  43. --------------------------------------------------------------------------------
  44. 例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]内的全局最大值。
  45. 输入:
  46. 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.]]);
  47. 返回:
  48. {-.9973614376, [x = -1.1000372353,y = -1.1000372353]}

  49. 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mmm_zx/archive/2010/04/18/5499756.aspx
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-4-24 07:08:54 | 显示全部楼层 来自 湖北武汉
那个博客就是在下开的,程序当然也是在下写的。其中的混沌算法已经重写。当然,原来那个还是可以用的,不过没有这个新改进的强大。
有空的话,大家可以去看看。
http://blog.csdn.net/mmm_zx
其中还有些大家可能兴趣的东西。
回复 不支持

使用道具 举报

发表于 2010-4-24 08:54:43 | 显示全部楼层 来自 黑龙江哈尔滨
那个博客就是在下开的,程序当然也是在下写的。其中的混沌算法已经重写。当然,原来那个还是可以用的,不过没有这个新改进的强大。
有空的话,大家可以去看看。
http://blog.csdn.net/mmm_zx
其中还有些大家可能兴 ...
maplelab 发表于 2010-4-24 07:08


很不错,你可以把你的签名档改为你的博客地址。
回复 不支持

使用道具 举报

发表于 2010-4-24 19:23:08 | 显示全部楼层 来自 黑龙江哈尔滨
不错,谢谢分享,下载下来,满满学习
回复 不支持

使用道具 举报

发表于 2010-5-14 16:37:15 | 显示全部楼层 来自 湖南长沙
谢谢分享,下载下来, 学习下
回复 不支持

使用道具 举报

发表于 2010-5-17 11:42:50 | 显示全部楼层 来自 上海浦东新区
Maple也在改进Optimization程序包。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-18 08:03:53 | 显示全部楼层 来自 湖北武汉
原来希望maple会在下个版本v14中将它的全局优化工具箱合并到maple中,就像maple14已经将Maple Toolbox for MATLAB和Maple NAG&#174; Connector合并在maple中。
现在只好放弃这个希望了。
不知v15会不会这样做。
matlab现在好像是全局优化工具箱的。
希望maple也能如此。
回复 不支持

使用道具 举报

发表于 2011-4-5 13:05:48 | 显示全部楼层 来自 上海
多谢楼主分享资料
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2026-1-6 10:32 , Processed in 0.047818 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表