一.复合形法 1
程序 //机械优化设计
复合形法 //输入值选择 n=2,k=4,x1=(9,9),a=(5,6),b(10,20) #include #include #include #include #define E0 1e-5 //复合形法收敛控制精度 double **TwoArrayAlloc(int,int); //申请矩阵空间 double f(double *); //目标函数 double *g(double *); //约束函数 bool judge_feasibility(double *); //可行点的判断 int main() { int n,k; int i,j,k1; int l; int cnt=0; //迭代次数 double temp; double delta; //收敛条件 double alpha; //反射系数 srand((unsigned)time(NULL)); printf("请输入目标函数的维数 n:"); //输入已知数据 scanf("%d",&n); printf("请输入复合形的顶点数 k:"); scanf("%d",&k); double **x=TwoArrayAlloc(k,n); //存放复合形顶点 double *y=(double *)calloc(k,sizeof(double)); //存放目标函数值 double *p=(double *)calloc(3,sizeof(double)); //存放约束函数值 double *a=(double *)calloc(n,sizeof(double)); //存放设计变量的下限 double *b=(double *)calloc(n,sizeof(double)); //存放设计变量的上限 double *x_c=(doubl