主题:求大虾帮帮小弟看看这个程序
#include<math.h>
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define E1 0.0001
#define ep 0.0001
#define n 2
#define k 4
float af=10;
int i,j;
double X0[n],XX[n],X[k][n],FF[k];
void produce(double A[n],double B[n]); /* 产生k个复合形顶点 */
double a[n],b[n];
double F(double C[n]); /* 目标函数 */
int cons(double D[n]); /* 约束函数 */
void bou(); /* 给出边界条件 */
double *Complex();
/* 制定这样的例子 */
double F(double C[n])
{
double F;
F=25/(C[0]*C[1]*C[1]*C[1]); /* 目标函数 */
return F;
}
/* 检查在约束条件下可选择顶点的可行性 */
int cons(double D[n])
{
if(((30/D[0]*D[1]*D[1]-50)<=0)&&((0.0004*D[1]-0.001)<=0)&&
((D[0]>=2)&&(D[0]<=4))&&((D[1]>=0.5)&&(D[1]<=1))) /* 约束条件 */
return 1;
else
return 0;
}
void bou() /* 给出设计变量的边界条件 */
{
a[0]=2;
a[1]=0.5;
b[0]=4;
b[1]=1;
}
void produce(double A[n],double B[n]) /* 产生复合形的k个顶点 */
{
double rr;
int jj;
do
{
rr=rand();
rr=rr/32767;
for(i=0;i<n;i++)
{
X[0][i]=A[i]+rr*(B[i]-A[i]);
XX[i]=X[0][i];
}
while(cons(XX)==0);
for(j=1;j<k;j++) /* 生成其他的k-1个顶点 */
{
rr=rand();
rr=rr/32767;
for(i=0;i<n;i++)
{
X[j][i]=A[i]+rr*(B[i]-A[i]);
}
}
for(j=0;j<k;j++) /* 检查每个点的可行性 */
{
for(i=0;i<n;i++)
{
X0[i]=0;
for(jj=0;jj<j+1;j++)
{
X0[i]+=X[jj][i];
}
X0[i]=(1/(j+1.0))*(X0[i]);
XX[i]=X[j][i];
}
while(cons(XX)==0) /* 如果Xji不可行,重新生成它 */
{
for(i=0;i<n;i++)
{
X[j][i]=X0[i]+0.5*(X[j][i]-X0[i]);
XX[i]=X[j][i]; /* 更新XX */
}
}
}
}
}
double *Complex( )
{
double EE,Xc[n],Xh[n],Xg[n],Xl[n],Fh,Fg,Fl,Xr[n];
double *prXl;
int h,g,l;[code=c]
请填写代码
[/code]
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define E1 0.0001
#define ep 0.0001
#define n 2
#define k 4
float af=10;
int i,j;
double X0[n],XX[n],X[k][n],FF[k];
void produce(double A[n],double B[n]); /* 产生k个复合形顶点 */
double a[n],b[n];
double F(double C[n]); /* 目标函数 */
int cons(double D[n]); /* 约束函数 */
void bou(); /* 给出边界条件 */
double *Complex();
/* 制定这样的例子 */
double F(double C[n])
{
double F;
F=25/(C[0]*C[1]*C[1]*C[1]); /* 目标函数 */
return F;
}
/* 检查在约束条件下可选择顶点的可行性 */
int cons(double D[n])
{
if(((30/D[0]*D[1]*D[1]-50)<=0)&&((0.0004*D[1]-0.001)<=0)&&
((D[0]>=2)&&(D[0]<=4))&&((D[1]>=0.5)&&(D[1]<=1))) /* 约束条件 */
return 1;
else
return 0;
}
void bou() /* 给出设计变量的边界条件 */
{
a[0]=2;
a[1]=0.5;
b[0]=4;
b[1]=1;
}
void produce(double A[n],double B[n]) /* 产生复合形的k个顶点 */
{
double rr;
int jj;
do
{
rr=rand();
rr=rr/32767;
for(i=0;i<n;i++)
{
X[0][i]=A[i]+rr*(B[i]-A[i]);
XX[i]=X[0][i];
}
while(cons(XX)==0);
for(j=1;j<k;j++) /* 生成其他的k-1个顶点 */
{
rr=rand();
rr=rr/32767;
for(i=0;i<n;i++)
{
X[j][i]=A[i]+rr*(B[i]-A[i]);
}
}
for(j=0;j<k;j++) /* 检查每个点的可行性 */
{
for(i=0;i<n;i++)
{
X0[i]=0;
for(jj=0;jj<j+1;j++)
{
X0[i]+=X[jj][i];
}
X0[i]=(1/(j+1.0))*(X0[i]);
XX[i]=X[j][i];
}
while(cons(XX)==0) /* 如果Xji不可行,重新生成它 */
{
for(i=0;i<n;i++)
{
X[j][i]=X0[i]+0.5*(X[j][i]-X0[i]);
XX[i]=X[j][i]; /* 更新XX */
}
}
}
}
}
double *Complex( )
{
double EE,Xc[n],Xh[n],Xg[n],Xl[n],Fh,Fg,Fl,Xr[n];
double *prXl;
int h,g,l;[code=c]
请填写代码
[/code]