Modsimpmethod.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2015-01-21 22:27
    上传日期
改进的单纯形全局最优化算法,收敛较快,效果不错,希望对需要的童鞋有用
Modsimpmethod.rar
  • Modsimpmethod.txt
    4.1KB
内容介绍
#include<stdio.h> #include<math.h> #include<iostream.h> int i,j; double d[3][100]={{0,1,0,0},{0,0,1,0},{0,0,0,1}},f[100];//d[][]为单纯形的顶点,本算例中未知数个数为3,则顶点个数为4 double g,h,l,q,s=1,t=2,u=0.5,v=0.0001,y=0;//s为反射系数,t为扩展系数,u为压缩系数,v为允许误差 int o,F,r,D,e,lj=0,N=4;//N为顶点的个数,o为最大值点的位置,F为最小值点的位置,r为次大值点的位置 void function1(int e)//求解函数f[e] { f[e]=(d[0][e]-3)*(d[0][e]-3)+2*(d[1][e]+2)*(d[1][e]+2)+(d[2][e]-4)*(d[2][e]-4);//函数为f=(x1-3)^2+2(x2+2)^2+(x3-4)^2,求其最小值 } void function2() { while((++lj)<100)//最大迭代次数 { for(i=0,g=f[i];i<N-1;i++)//求最大值点 { if(g<f[i+1]) { g=f[i+1];o=i+1; } else if(i==0) o=i; } for(i=0,h=f[i];i<N-1;i++)//求最小值点 { if(h>f[i+1]) { h=f[i+1];F=i+1; } else if(i==0) F=i; } for(i=0,l=f[i];i<N-1;i++)//求次大值点 { if(i==o&&i==0) { l=f[i+1]; r=i+1; continue; } if(l<f[i+1]&&(i+1)!=o) { l=f[i+1];r=i+1; } else if(i==0) r=i; } for(i=0;i<N-1;i++)//求除最大值点,其余点的形心 { d[i][N]=0; for(j=0;j<N;j++) { if(j!=o) { d[i][N]=d[i][N]+d[i][j]; } } d[i][N]=d[i][N]/(N-1);//平均值 } function1(N); for(i=0;i<N-1;i++) { d[i][N+1]=d[i][N]+(d[i][N]-d[i][o])*s;//反射 } function1(N+1); if(f[N+1]<f[F]) { for(i=0;i<N-1;i++) { d[i][N+2]=d[i][N]+(d[i][N+1]-d[i][N])*t;//扩展 } function1(N+2); if(f[N+2]<f[N+1]) { for(i=0;i<N-1;i++) { d[i][o]=d[i][N+2]; } f[o]=f[N+2]; y=0; for(i=0;i<N;i++) { y=y+(f[i]-f[N])*(f[i]-f[N]); } y=sqrt(y/(N*1.0)); if(y<v) { for(i=0;i<N-1;i++) { printf("d[%d][%d]=%f",i,F,d[i][F]); printf("\n"); } printf("f[%d]=%f",F,f[F]); break; } else { function2(); break; } } else { for(i=0;i<N-1;i++) { d[i][o]=d[i][N+1]; } f[o]=f[N+1]; y=0; for(i=0;i<N;i++) { y=y+(f[i]-f[N])*(f[i]-f[N]); } y=sqrt(y/(N*1.0)); if(y<v) { for(i=0;i<N-1;i++) { printf("d[%d][%d]=%f",i,F,d[i][F]); printf("\n"); } printf("f[%d]=%f",F,f[F]); break; } else { function2(); break; } } } if(f[N+1]>=f[F]&&f[N+1]<=f[r]) { for(i=0;i<N-1;i++) { d[i][o]=d[i][N+1]; } f[o]=f[N+1]; y=0; for(i=0;i<N;i++) { y=y+(f[i]-f[N])*(f[i]-f[N]); } y=sqrt(y/(N*1.0)); if(y<v) { for(i=0;i<N-1;i++) { printf("d[%d][%d]=%f",i,F,d[i][F]); printf("\n"); } printf("f[%d]=%f",F,f[F]); break; } else { function2(); break; } } if(f[N+1]>f[r]) { if(f[N+1]>f[o])//压缩 { D=o; } else { D=N+1; } for(i=0;i<N-1;i++) { d[i][N+3]=d[i][N]+(d[i][D]-d[i][N])*u; } function1(N+3); if(f[N+3]<=f[D]) { for(i=0;i<N-1;i++) { d[i][o]=d[i][N+3]; } f[o]=f[N+3]; y=0; for(i=0;i<N;i++) { y=y+(f[i]-f[N])*(f[i]-f[N]); } y=sqrt(y/(N*1.0)); if(y<v) { for(i=0;i<N-1;i++) { printf("d[%d][%d]=%f",i,F,d[i][F]); printf("\n"); } printf("f[%d]=%f",F,f[F]); break; } else { function2(); break; } } else { for(i=0;i<N-1;i++) { for(j=0;j<N;j++) { d[i][j]=d[i][j]+0.5*(d[i][F]-d[i][j]);//收缩 } } for(i=0;i<N;i++) { function1(i); } y=0; for(i=0;i<N;i++) { y=y+(f[i]-f[N])*(f[i]-f[N]); } y=sqrt(y/(N*1.0)); if(y<v) { for(i=0;i<N-1;i++) { printf("d[%d][%d]=%f",i,F,d[i][F]); printf("\n"); } printf("f[%d]=%f",F,f[F]); break; } else { function2(); break; } } } } } void main() { for(i=0;i<N;i++) { function1(i); } function2(); }
评论
    相关推荐
    • matlab开发-全局优化
      matlab开发-全局优化。globalmin查找给定间隔内实变量x的函数f(x)的全局最小值。
    • Jaya全局优化算法
      Jaya全局优化算法Jaya全局优化算法
    • 【原创】全局优化求解器——三角进化算法
      Triangle Evolution ...关键词: 三角进化算法 低维单形进化 进化算法 全局优化 全局最优化 全局优化算法 全局优化软件 FuncLib.mdb Readme.doc result.txt TEOptimizer.exe 4 Files 162,232 bytes
    • 群优化:全局优化的群优化-matlab开发
      使用 SWARM 的硬约束全局优化。 该算法应用于一组不同难度的全局优化问题,表现出良好的鲁棒性。 分析的一些功能或问题: Branin、Goldprice、Quartic、Griewank2、Hartman3、Schubert3、Shekel5、 谢克尔7、舒伯特...
    • matlab开发-全局优化工具箱
      matlab开发-全局优化工具箱。Ganso库的matlab接口
    • 全局优化补丁
      源自xda,理论上支持所有第三方定制ROM ...此包含有两个主要功能:sql数据库读写优化;zipalign优化 有人喜欢刷xda原版未本地化过的ROM,有人只是喜欢单纯的美化ROM,那么刷完后再刷此补丁可以说是如虎添翼了
    • humpday:评估和选择全局优化
      狂欢 将分配给无全球衍生工具的Python全局优化“策略”,以及 以通用的调用语法呈现。 这旨在减轻选择Python全局优化器的麻烦。 解释 看: 。 这是后续文章: 。
    • inverse-bgo:使用贝叶斯全局优化解决反问题
      使用贝叶斯全局优化解决反问题 该软件包包含将贝叶斯全局优化(BGO)应用于反问题求解的示例。 该代码由普渡大学的开发。 内容 我们简要说明此代码的每个文件/文件夹中的内容。 有关更多详细信息,建议您查看大量...
    • BayesianOptimization:具有高斯过程的全局优化的Python实现
      具有高斯过程的贝叶斯全局优化的纯Python实现。 PyPI(点): $ pip install bayesian-optimization 来自conda-forge频道的Conda: $ conda install -c conda-forge bayesian-optimization 这是基于贝叶斯推理...
    • 高斯过程全局优化程序.rar
      高斯过程全局优化程序,使用高斯算法进行刀具加工的全局优化预测与拟合的matlab程序