亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dfp變尺度法.cpp

?? dfp變尺度法程序
?? CPP
字號:
//擬牛頓法(變尺度法)DFP算法的c/c++源碼
//問題  minf(x)=100*( x1-x0*x0 )^2 + (1-x0)^2

#include "iostream.h"
#include "math.h"
#define pi  3.1415926/4
//計算梯度
void comput_grad(double (*pf)(double *x),  int n,  double *point,  double *grad); 
//0.618法線搜索         
double line_search1(double (*pf)(double *x),  int n,  double *start,  double *direction);
//解析法線搜索  
double line_search(double (*pf)(double *x),   int n,  double *start,  double *direction);
//無約束變尺度法  
double DFP(double (*pf)(double *x),   int n,   double *min_point);       

//梯度計算模塊
//參數:指向目標函數的指針,變量個數,求梯度的點,結果
void comput_grad(double (*pf)(double *x),int n,double *point,double *grad)
{
  double h=1E-3;
  int i;
  double *temp;
  temp = new double[n];
  for(i=1;i<=n;i++)
   {
    temp[i-1]=point[i-1];
    }
   for(i=1;i<=n;i++)
     {
       temp[i-1]+=0.5*h;
       grad[i-1]=4*pf(temp)/(3*h);
       temp[i-1]-=h;
       grad[i-1]-=4*pf(temp)/(3*h);
       temp[i-1]+=(3*h/2);
       grad[i-1]-=(pf(temp)/(6*h));
       temp[i-1]-=(2*h);
       grad[i-1]+=(pf(temp)/(6*h));
       temp[i-1]=point[i-1];
      }
    delete[] temp;
}

//一維搜索模塊
//參數:指向目標函數的指針,變量個數,出發點,搜索方向
//返回:最優步長
double line_search(double (*pf)(double *x),int n,double *start,double *direction)
{
  int i;
  double step=0.001;
  double a=0,value_a,diver_a;
  double b,value_b,diver_b;
  double t,value_t,diver_t;
  double s,z,w;
  double *grad,*temp_point;

  grad=new double[n];
  temp_point=new double[n];
  comput_grad(pf,n,start,grad);
  diver_a=0;
  for(i=1;i<=n;i++)
    diver_a=diver_a+grad[i-1]*direction[i-1];
   do
    {
      b=a+step;
      for(i=1;i<=n;i++)
         temp_point[i-1]=start[i-1]+b*direction[i-1];
         comput_grad(pf,n,temp_point,grad);
         diver_b=0;
       for(i=1;i<=n;i++)
          diver_b=diver_b+grad[i-1]*direction[i-1];
          if( fabs(diver_b)<1E-10 )
            {
              delete[] grad;
              delete[] temp_point;
              return(b);
             }
           if( diver_b<-1E-15 )
             {
               a=b;
               diver_a=diver_b;
               step=2*step;
              }
        }while( diver_b<=1E-15 );

        for(i=1;i<=n;i++)
                temp_point[i-1]=start[i-1]+a*direction[i-1];
        value_a=(*pf)(temp_point);
        for(i=1;i<=n;i++)
                temp_point[i-1]=start[i-1]+b*direction[i-1];
        value_b=(*pf)(temp_point);

do
 {
   s=3*(value_b-value_a)/(b-a);
   z=s-diver_a-diver_b;
   w=sqrt( fabs(z*z-diver_a*diver_b) );        /////////!!!!!!!!!!!!!!!!!!!!!!
   t=a+(w-z-diver_a)*(b-a)/(diver_b-diver_a+2*w);
   value_b=(*pf)(temp_point);
   for(i=1;i<=n;i++)
     temp_point[i-1]=start[i-1]+t*direction[i-1];
     value_t=(*pf)(temp_point);
     comput_grad(pf,n,temp_point,grad);
     diver_t=0;
   for(i=1;i<=n;i++)
     diver_t=diver_t+grad[i-1]*direction[i-1];
   if(diver_t>1E-6)
    {
      b=t;
      value_b=value_t;
      diver_b=diver_t;
              }
    else if(diver_t<-1E-6)
     {
       a=t;
       value_a=value_t;
       diver_a=diver_t;
      }
     else break;
 }while( (fabs(diver_t)>=1E-6) && (fabs(b-a)>1E-6) );

delete[] grad;
delete[] temp_point;
return(t);

}

//無約束變尺度法DFP函數聲明
//
//參數:pf指向目標函數的指針,n變量個數,min_point接受初始點、存放結果
//返回:極小點處函數值
//
double DFP(double (*pf)(double *x),int n, double *min_point)
{
  int i,j;
  int k=0;
  double e=1E-5;
  double g_norm;
                
  double *g0=new double[n];                //梯度
  double *g1=new double[n];
  double *dg=new double[n];

  double *p=new double[n];                //搜索方向 =-g
  double t;                               //一維搜索步長

  double *x0=new double[n];
  double *x1=new double[n];
  double *dx=new double[n];

  double **H=new double*[n];
 for (i=0; i<n; i++)   H[i] = new double[n];

 double **tempH=new double*[n];
 for (i=0; i<n; i++)   tempH[i] = new double[n];

 double *gH=new double[n];
 double *Hg=new double[n];
 double num1;
 double num2;

for(i=0;i<n;i++)
for(j=0;j<n;j++)
 {
   if(i==j)        H[i][j]=1.0;        // H0=I
   else        H[i][j]=0.0;
   tempH[i][j]=0.0;
  }

for(i=0;i<n;i++)
  x0[i]=min_point[i];        

comput_grad(pf,n,x0,g0);

g_norm=0.0;
for(i=0;i<n;i++)        g_norm=g_norm+g0[i]*g0[i];        
  g_norm=sqrt(g_norm);

for(i=0;i<n;i++)        p[i]=-g0[i];        

for(;;)
{ 
  t=line_search(pf,n,x0,p);                                
 for(i=0;i<n;i++)        x1[i]=x0[i]+t*p[i];
 comput_grad(pf,n,x1,g1);
 g_norm=0.0;
 for(i=0;i<n;i++)        g_norm=g_norm+g1[i]*g1[i];
 g_norm=sqrt(g_norm);
if (g_norm<e) 
 {
   for(i=0;i<n;i++)        min_point[i]=x1[i];
   
   delete[] g0;                
   delete[] g1;
   delete[] dg;
   delete[] p;
   delete[] x0;
   delete[] x1;
   delete[] dx;
   for (i=0; i<n; i++)             delete[] H[i];
   delete []H;
   for (i=0; i<n; i++)            delete[] tempH[i];
   delete []tempH;
   delete[] gH;
   delete[] Hg;
   cout<<"總的迭代次數為:"<<k<<"\n";                     
  return pf(min_point);
 }
for(i=0;i<n;i++)
 {
   dx[i]=x1[i]-x0[i];
   dg[i]=g1[i]-g0[i];
 }
/////求Hk+1的矩陣運算
//g*H,H*g
for(i=0;i<n;i++)
 {
   gH[i]=0.0;
   Hg[i]=0.0;
 }
for(i=0;i<n;i++)
{
 for(j=0;j<n;j++)
 {
    gH[i]=gH[i]+dg[j]*H[j][i];
   //Hg[i]=Hg[i]+H[i][j]*dg[j];
    Hg[i]=gH[i];
 }                        
}

//num1,num2
num1=0.0;
num2=0.0;
for(i=0;i<n;i++)
 {
   num1=num1+dx[i]*dg[i];
   num2=num2+gH[i]*dg[i];
  }

//tempH[i][j]
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
    tempH[i][j]=0.0;
for(i=0;i<n;i++)
 {
   for(j=0;j<n;j++)
     {
       tempH[i][j]=tempH[i][j]+H[i][j];
       tempH[i][j]=tempH[i][j]+dx[i]*dx[j]/num1;
       tempH[i][j]=tempH[i][j]-Hg[i]*gH[j]/num2;
     }
 }

for(i=0;i<n;i++)
  {
   for(j=0;j<n;j++)
   {
     H[i][j]=tempH[i][j];
   }
  }
/////////////////////////////
 
for(i=0;i<n;i++)        p[i]=0.0;
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
       {
         p[i]=p[i]-H[i][j]*g1[j];
       }                        
  }
for(i=0;i<n;i++)
  {
    g0[i]=g1[i];
    x0[i]=x1[i];
 }
k=k+1;
}
}

//目標函數
double fun(double *x)
{  
  double f,u1,u2,u3,u4;
u1=x[2]*(x[3]*x[3]+x[4]*x[4])+28*pow(x[3],2)+32*pow(x[4],2);
u2=0.92*x[0]*x[4]*x[4]-x[0]*x[3]*x[3]-85*x[0]*x[1]*x[1];
u3=-1.6*x[0]*x[1]*x[4]+1340.64*x[0];
u4=1428*x[0]*x[1]+13.44*x[0]*x[4];
f=pi*(u1+u2+u3+u4);
return f;
	  // return 100*( x[1]-x[0]*x[0] )*( x[1]-x[0]*x[0] ) + (1-x[0])*(1-x[0]);
}
//主函數
void main()
{
  int n=5;
  double min_point[5]={23,0.8,42,12,16},f0;
  f0=fun(min_point);
  double min_value=DFP(fun,n,min_point);
 
  cout<<"\n\tf0="<<f0;
for(int k=0;k<n;k++)
      cout<<"\n\t"<<"min_point["<<k<<"]="<<min_point[k];
  cout<<"\n\tmin_value="<<min_value<<"\n";

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃在线观看| 亚洲.国产.中文慕字在线| 一本色道综合亚洲| 亚洲一区精品在线| 欧美猛男gaygay网站| 精品国产制服丝袜高跟| 亚洲一区二区三区在线看| 久久se精品一区二区| 久久午夜免费电影| 这里只有精品免费| 久久www免费人成看片高清| 国产精品66部| 国产精品五月天| 91久久香蕉国产日韩欧美9色| 26uuu国产一区二区三区| 成人av免费在线观看| 精品国产亚洲在线| 国产精品乱码一区二三区小蝌蚪| 一级做a爱片久久| 亚洲乱码国产乱码精品精小说| 麻豆精品一区二区三区| 欧美精品一区二区三区一线天视频| 国产精品污www在线观看| 男人的天堂亚洲一区| 精品国产制服丝袜高跟| 成人激情动漫在线观看| 国产精品久久久久一区二区三区 | 日韩精品电影在线观看| 国产成a人亚洲精品| 国产欧美日韩久久| 国产精品一区二区视频| 日韩欧美成人一区| 国产高清无密码一区二区三区| 欧美精品自拍偷拍| 午夜精品国产更新| 欧美一区二区三区四区在线观看| 一区二区三区美女| 色老综合老女人久久久| 欧美成人video| 一本色道久久综合亚洲aⅴ蜜桃 | 精品国产网站在线观看| 老司机午夜精品99久久| 国产精品初高中害羞小美女文| 91美女片黄在线观看91美女| 国产调教视频一区| 国内精品久久久久影院薰衣草 | 欧美福利电影网| 国产精品12区| 麻豆精品久久久| 日韩精品每日更新| 日韩av一区二区在线影视| 日韩精品成人一区二区三区| 午夜精品在线视频一区| 午夜欧美一区二区三区在线播放| 亚洲国产精品久久久男人的天堂| 亚洲一区二区三区免费视频| 亚洲欧美色一区| 欧美精品一区二区久久婷婷| 顶级嫩模精品视频在线看| 91亚洲大成网污www| 日本伊人色综合网| 午夜视频一区二区三区| 日本一区二区三区高清不卡| 欧美成人精品二区三区99精品| 人人狠狠综合久久亚洲| 欧美激情综合在线| 国产亚洲精品aa午夜观看| 亚洲丝袜美腿综合| 欧美精品亚洲二区| 日韩高清一区在线| 爽爽淫人综合网网站| 一区二区三区成人| 亚洲天堂2016| 久久日韩粉嫩一区二区三区| 717成人午夜免费福利电影| 国产精品久久久爽爽爽麻豆色哟哟 | 色哟哟亚洲精品| 国产乱淫av一区二区三区| 懂色av中文字幕一区二区三区| 91热门视频在线观看| 在线不卡欧美精品一区二区三区| 欧美电影免费观看高清完整版 | 国产精品影视网| 97久久超碰国产精品| 欧美蜜桃一区二区三区| 欧美精品一区二区久久婷婷| 综合av第一页| 天堂一区二区在线免费观看| 久久99日本精品| 99久久夜色精品国产网站| 欧美日韩久久久久久| wwww国产精品欧美| 一区二区三区国产| 激情久久五月天| 色呦呦一区二区三区| 精品欧美一区二区久久| 亚洲蜜桃精久久久久久久| 日本欧洲一区二区| 不卡一区在线观看| 2024国产精品| 调教+趴+乳夹+国产+精品| 国产91精品精华液一区二区三区| 91麻豆文化传媒在线观看| 精品成人一区二区三区四区| 亚洲精品国产视频| 国产精品1024久久| 91精品国产欧美一区二区成人| 中文字幕日韩一区| 国产真实乱偷精品视频免| 精品视频999| 亚洲欧美一区二区视频| 精品一二线国产| 在线播放国产精品二区一二区四区 | 蓝色福利精品导航| 色www精品视频在线观看| 欧美激情一区不卡| 久久国产精品99精品国产 | 91成人国产精品| 国产欧美日韩中文久久| 麻豆国产精品一区二区三区| 欧美在线高清视频| 日韩理论片在线| 粉嫩13p一区二区三区| 欧美xfplay| 天天综合网天天综合色| 色婷婷av一区二区| 中文字幕制服丝袜成人av| 国产精品一卡二卡在线观看| 91精品久久久久久久99蜜桃 | 国产一区啦啦啦在线观看| 国产欧美精品一区| 欧美tk丨vk视频| 97国产一区二区| 日本人妖一区二区| 国产亚洲精久久久久久| 国产乱子轮精品视频| 欧美日韩国产一级二级| 美女高潮久久久| 一区在线观看视频| 538在线一区二区精品国产| 免费观看一级特黄欧美大片| 亚洲图片你懂的| 日本精品裸体写真集在线观看| 久久久久国产成人精品亚洲午夜 | 视频在线观看91| 日韩欧美一区二区三区在线| 国产一区二区网址| 18成人在线视频| 不卡欧美aaaaa| 亚洲电影欧美电影有声小说| 欧美日韩免费电影| 美国av一区二区| 欧美不卡视频一区| 裸体一区二区三区| 精品粉嫩aⅴ一区二区三区四区 | 日本中文字幕一区二区有限公司| 日韩欧美亚洲国产精品字幕久久久| 国产呦精品一区二区三区网站| 亚洲老妇xxxxxx| 国产色产综合产在线视频| 欧美日韩一区二区三区四区| 国产成a人亚洲精品| 另类小说一区二区三区| 国产综合色在线| 不卡的av网站| 精品久久久久久久人人人人传媒 | 国产成人午夜片在线观看高清观看| 国产日韩高清在线| 91丨porny丨首页| 亚洲成人激情社区| 日韩精品一区二区在线| 国产精品亚洲专一区二区三区| 亚洲丝袜自拍清纯另类| 5566中文字幕一区二区电影 | 欧美亚洲愉拍一区二区| 午夜av一区二区| 久久精品视频一区二区| 色综合一区二区| 青草av.久久免费一区| 国产精品伦一区二区三级视频| 色婷婷亚洲精品| 狠狠色综合日日| 亚洲激情av在线| 精品国内二区三区| 色婷婷综合久久久久中文一区二区| 婷婷开心激情综合| 国产欧美精品一区aⅴ影院| 欧美日韩一级大片网址| 国产黄色精品网站| 亚洲成人av一区| 久久精品欧美日韩精品| 欧美三区在线视频| 成人综合在线视频| 日韩 欧美一区二区三区| 国产在线精品一区二区夜色| 成人福利视频在线看| 91精品国产高清一区二区三区蜜臀| 一区二区三区自拍| 国产又黄又大久久| 欧美电视剧免费全集观看|