资源简介
优化设计中复合形法C语言程序,多维优化,你值得拥有
代码片段和文件信息
#include
#include
#include
#define N 2 /*优化问题的维数N*/
#define K 4 /*复合形法顶点数K*/
#define N1 2 /*约束方程个数K*/
#define E 0.00000001 /*复合形法迭代精度*/
#define NM 500 /*寻找初始复合形的最大次数*/
int H=0L=0; /*H,L--复合形顶点坏点和好点顶点号*/
double f[K]; /*程序顶点值从f[0]开始*/
struct
{
double x1[N];
}Tpoint[K]xcxr; /*Tpoint存放K个点的坐标,xcxr分别为中心点和映射点坐标*/
/*目标函数子程序*/
double function(double x[])
{
double F;
F=x[0]*x[0]+x[1]*x[1]+4;
return(F);
}
/*约束条件子程序*/
int strain(double x[])
{
int ifin=1;
double g[N1];
g[0]=x[0];
g[1]=x[1];
for(i=0;i if(g[i]<0)
{
fin=0;
break;
}
return(fin);
}
/*初始可行点产生区间*/
void startab(double a[]double b[])
{
a[0]=0;b[0]=10.0;
a[1]=0;b[1]=10.0;
return;
}
/*初始复合形*/
int startfhx(double a[]double b[]int num)
{
int ii1iwkk=0;
int jj1mfh1=1;
double sum2[N];
double alfr;
srand( (unsigned)time( NULL ) ); /*srand()用来设置rand()产生随机数时的随机数种子*/
do /*产生第一个可行点*/
{
for(i=0;i {
r=rand()/32767.; /*直接调用函数产生随机数rand()可生成一个0到32767之间的随机数*/
Tpoint[0].x1[i]=a[i]+r*(b[i]-a[i]);
}
iw=strain(Tpoint[0].x1);
kk=kk+1;
if(kk>num)
{
fh1=2;
return(fh1);
}
}while(iw==0);
for(j=1;j {
for(i=0;i {
r=rand()/32767.; /*直接调用函数产生随机数*/
Tpoint[j].x1[i]=a[i]+r*(b[i]-a[i]);
}
iw=strain(Tpoint[j].x1);
if(iw==0)
{
m=j;
for(i1=0;i1 sum2[i1]=0.;
for(i1=0;i1 for(j1=0;j1 sum2[i1]+=Tpoint[j1].x1[i1];
for(j1=0;j1 xc.x1[j1]=sum2[j1]/m;
alf=0.5;
do /*求中心的映射点*/
{
for(i=0;i Tpoint[m].x1[i]=xc.x1[i]+alf*(Tpoint[m].x1[i]-xc.x1[i]);
iw=strain(Tpoint[m].x1);
}while(iw==0);
}
}
return(fh1);
}
void suan() /*找出好点和坏点*/
{
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
评论
共有 条评论