⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lv3.c

📁 机械优化设计的内点惩罚法解非线性问题的解法。
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
const int kkg=3;/*常量,定义约束条件个数*/
double r0;/*全局变量,惩罚因子*/
double f(double x[])/*目标函数子程序*/
{
double ff;
ff=pow((x[0]-8),2)+pow((x[1]-8),2);
return(ff);
}
void strain(double x[],double g[])/*约束条件子程序*/
{
g[0]=x[0]-1;
g[1]=x[1]-1;
g[2]=11-x[0]-x[1];
}
double objf(double p[])
{
int i;
double ff,sg,*g;
g=(double *)malloc(kkg *sizeof(double));
sg=0;
strain(p,g);
for(i=0;i<kkg;i++)
{
if(*(g+i)>0)
sg=sg+r0/(*(g+i));
else
sg=sg+r0*(1e+10);
}
free(g);
ff=f(p)+sg;
return(ff)
}
void main()
{
int i;
double p[]={3,4};
double fom,fxo,c,x[2];
c=0.1;
r0=120;
fom=100;
do 
fxo=powell(p,0.1,0.001,0.0001,2,x);
if(fabs(fom-fxo)>0.001)
{
fom=fxo;
r0=c*r0;
for(i=0;i<2;i++)
*(p+i)=x[i];
}
else
{
printf("输出最优点及其目标函数值:\n");
printf("x[0]=%f,x[1]=%f,ff=%f",x[0],x[1],fxo);
return;
}
while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -