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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qpc2solver.c

?? 一個(gè)工具包
?? C
?? 第 1 頁 / 共 2 頁
字號:
            double *vector_y,
            long dim, 
            long tmax,
            double tolabs,
            double tolrel,
            double *alpha,
            long  *ptr_t, 
            double *ptr_aHa11,
            double *ptr_aHa22,
            double **ptr_History,
            long verb)
{
  double LB;
  double UB;
  double aHa11, aHa12, aHa22, ac1, ac2;
  double tmp;
  double Huu, Huv, Hvv;
  double min_beta1, max_beta1, min_beta2, max_beta2, beta;
  double lambda;
  double delta1, delta2;
  double improv, max_improv;
  double *History;
  double *Ha1;
  double *Ha2;
  double *tmp_ptr;
  double *col_u, *col_v;
  double *col_v1, *col_v2;
  long u1, u2;
  long v1, v2;
  long i;
  long t;
  long History_size;
  int exitflag;
  int which_case;

  /* ------------------------------------------------------------ */
  /* Initialization                                               */
  /* ------------------------------------------------------------ */

  Ha1 = mxCalloc(dim, sizeof(double));
  if( Ha1 == NULL ) mexErrMsgTxt("Not enough memory.");
  Ha2 = mxCalloc(dim, sizeof(double));
  if( Ha2 == NULL ) mexErrMsgTxt("Not enough memory.");

  History_size = (tmax < HISTORY_BUF ) ? tmax+1 : HISTORY_BUF;
  History = mxCalloc(History_size*2,sizeof(double));
  if( History == NULL ) mexErrMsgTxt("Not enough memory.");

  /* inx1 = firts of find( y ==1 ), inx2 = firts of find( y ==2 ) */
  v1 = -1; v2 = -1; i = 0;
  while( (v1 == -1 || v2 == -1) && i < dim ) {
    if( v1 == -1 && vector_y[i] == 1 ) { v1 = i; }
    if( v2 == -1 && vector_y[i] == 2 ) { v2 = i; } 
    i++;
  }

  col_v1 = (double*)get_col(v1,-1);
  col_v2 = (double*)get_col(v2,v1);
  
  aHa12 = col_v1[v2];
  aHa11 = diag_H[v1];
  aHa22 = diag_H[v2];
  ac1 = vector_c[v1];
  ac2 = vector_c[v2];

  min_beta1 = PLUS_INF; min_beta2 = PLUS_INF;
  for( i = 0; i < dim; i++ ) 
  {
    alpha[i] = 0;
    Ha1[i] = col_v1[i];
    Ha2[i] = col_v2[i];

    beta = Ha1[i] + Ha2[i] + vector_c[i];

    if( vector_y[i] == 1 && min_beta1 > beta ) {
      u1 = i;
      min_beta1 = beta;
    }

    if( vector_y[i] == 2 && min_beta2 > beta ) {
      u2 = i;
      min_beta2 = beta;
    }
  }

  alpha[v1] = 1;
  alpha[v2] = 1;

  UB = 0.5*(aHa11 + 2*aHa12 + aHa22) + ac1 + ac2;
  LB = min_beta1 + min_beta2 - 0.5*(aHa11 + 2*aHa12 + aHa22);

  delta1 = Ha1[v1] + Ha2[v1] + vector_c[v1] - min_beta1;
  delta2 = Ha1[v2] + Ha2[v2] + vector_c[v2] - min_beta2;

  t = 0;
  History[INDEX(0,0,2)] = LB;
  History[INDEX(1,0,2)] = UB;

  if( verb ) {
    mexPrintf("Init: UB=%f, LB=%f, UB-LB=%f, (UB-LB)/|UB|=%f \n",
      UB, LB, UB-LB,(UB-LB)/UB);
  }  

  if( delta1 > delta2 ) 
  {
     which_case = 1;
     col_u = (double*)get_col(u1,v1);
     col_v = col_v1;
  }
  else
  {
     which_case = 2;
     col_u = (double*)get_col(u2,v2);
     col_v = col_v2;
  }

  /* Stopping conditions */
  if( UB-LB <= tolabs ) exitflag = 1;
  else if(UB-LB <= ABS(UB)*tolrel ) exitflag = 2;
  else exitflag = -1;

  /* ------------------------------------------------------------ */
  /* Main optimization loop                                       */
  /* ------------------------------------------------------------ */

  while( exitflag == -1 ) 
  {
    t++;     

    if( which_case == 1 )
    {
      Huu = diag_H[u1];
      Hvv = diag_H[v1];
      Huv = col_u[v1];

      lambda = delta1/(alpha[v1]*(Huu - 2*Huv + Hvv ));
      lambda = MIN(1,lambda);

      tmp = lambda*alpha[v1];

      aHa11 = aHa11 + 2*tmp*(Ha1[u1]-Ha1[v1])+tmp*tmp*( Huu - 2*Huv + Hvv );
      aHa12 = aHa12 + tmp*(Ha2[u1]-Ha2[v1]);
      ac1 = ac1 + tmp*(vector_c[u1]-vector_c[v1]);

      alpha[u1] = alpha[u1] + tmp;
      alpha[v1] = alpha[v1] - tmp;

      min_beta1 = PLUS_INF; min_beta2 = PLUS_INF;
      max_beta1 = MINUS_INF; max_beta2 = MINUS_INF; 
      for( i = 0; i < dim; i ++ )
      {
         Ha1[i] = Ha1[i] + tmp*(col_u[i] - col_v[i]);

         beta = Ha1[i] + Ha2[i] + vector_c[i];
         if( vector_y[i] == 1 ) 
           {
             if( min_beta1 > beta ) { u1 = i; min_beta1 = beta; }
             if( max_beta1 < beta && alpha[i] > 0 ) { v1 = i; max_beta1 = beta; }
           }
         else
           {
             if( min_beta2 > beta ) { u2 = i; min_beta2 = beta; }
             if( max_beta2 < beta && alpha[i] > 0) { v2 = i; max_beta2 = beta; }
           }
      }
    }
    else
    {
      Huu = diag_H[u2];
      Hvv = diag_H[v2];
      Huv = col_u[v2];
  
      lambda = delta2/(alpha[v2]*( Huu - 2*Huv + Hvv ));
      lambda = MIN(1,lambda);

      tmp = lambda*alpha[v2];
      aHa22 = aHa22 + 2*tmp*( Ha2[u2]-Ha2[v2]) + tmp*tmp*( Huu - 2*Huv + Hvv);
      aHa12 = aHa12 + tmp*(Ha1[u2]-Ha1[v2]);
      ac2 = ac2 + tmp*( vector_c[u2]-vector_c[v2] );

      alpha[u2] = alpha[u2] + tmp;
      alpha[v2] = alpha[v2] - tmp;

      min_beta1 = PLUS_INF; min_beta2 = PLUS_INF;
      max_beta1 = MINUS_INF; max_beta2 = MINUS_INF; 
      for(i = 0; i < dim; i++ ) 
      {  
         Ha2[i] = Ha2[i] + tmp*( col_u[i] - col_v[i] );

         beta = Ha1[i] + Ha2[i] + vector_c[i];

         if( vector_y[i] == 1 ) 
         {
           if( min_beta1 > beta ) { u1 = i; min_beta1 = beta; }
           if( max_beta1 < beta && alpha[i] > 0 ) { v1 = i; max_beta1 = beta; }
         }
         else
         {
           if( min_beta2 > beta ) { u2 = i; min_beta2 = beta; }
           if( max_beta2 < beta && alpha[i] > 0) { v2 = i; max_beta2 = beta; }
         }
      }
    }

    UB = 0.5*(aHa11 + 2*aHa12 + aHa22) + ac1 + ac2;
    LB = min_beta1 + min_beta2 - 0.5*(aHa11 + 2*aHa12 + aHa22);
  
    delta1 = Ha1[v1] + Ha2[v1] + vector_c[v1] - min_beta1;
    delta2 = Ha1[v2] + Ha2[v2] + vector_c[v2] - min_beta2;

    if( delta1 > delta2 ) 
    {
       col_u = (double*)get_col(u1,-1);

      /* search for optimal v while u is fixed */
      for( max_improv =  MINUS_INF, i = 0; i < dim; i++ ) {

        if( vector_y[i] == 1 && alpha[i] != 0 ) {

          beta = Ha1[i] + Ha2[i] + vector_c[i];

          if( beta >= min_beta1 ) {

            tmp = diag_H[u1] - 2*col_u[i] + diag_H[i];
            if( tmp != 0 ) {
              improv = (0.5*(beta-min_beta1)*(beta-min_beta1))/tmp;

              if( improv > max_improv ) {
                max_improv = improv;
                v1 = i;
              }
            }
          }
        }
      }
      col_v = (double*)get_col(v1,u1);
      delta1 = Ha1[v1] + Ha2[v1] + vector_c[v1] - min_beta1;
      which_case = 1;
      
    }
    else
    {
       col_u = (double*)get_col(u2,-1);

      /* search for optimal v while u is fixed */
      for( max_improv =  MINUS_INF, i = 0; i < dim; i++ ) {

        if( vector_y[i] == 2 && alpha[i] != 0 ) {

          beta = Ha1[i] + Ha2[i] + vector_c[i];

          if( beta >= min_beta2 ) {

            tmp = diag_H[u2] - 2*col_u[i] + diag_H[i];
            if( tmp != 0 ) {
              improv = (0.5*(beta-min_beta2)*(beta-min_beta2))/tmp;

              if( improv > max_improv ) {
                max_improv = improv;
                v2 = i;
              }
            }
          }
        }
      }

      col_v = (double*)get_col(v2,u2);
      delta2 = Ha1[v2] + Ha2[v2] + vector_c[v2] - min_beta2;
      which_case = 2;
    }
    

    /* Stopping conditions */
    if( UB-LB <= tolabs ) exitflag = 1; 
    else if( UB-LB <= ABS(UB)*tolrel ) exitflag = 2;
    else if(t >= tmax) exitflag = 0; 

    if( verb && (t % verb) == 0) {
     mexPrintf("%d: UB=%f,LB=%f,UB-LB=%f,(UB-LB)/|UB|=%f\n",
        t, UB, LB, UB-LB,(UB-LB)/UB); 
    }  

    /* Store selected values */
    if( t < History_size ) {
      History[INDEX(0,t,2)] = LB;
      History[INDEX(1,t,2)] = UB;
    }
    else {
      tmp_ptr = mxCalloc((History_size+HISTORY_BUF)*2,sizeof(double));
      if( tmp_ptr == NULL ) mexErrMsgTxt("Not enough memory.");
      for( i = 0; i < History_size; i++ ) {
        tmp_ptr[INDEX(0,i,2)] = History[INDEX(0,i,2)];
        tmp_ptr[INDEX(1,i,2)] = History[INDEX(1,i,2)];
      }
      tmp_ptr[INDEX(0,t,2)] = LB;
      tmp_ptr[INDEX(1,t,2)] = UB;
      
      History_size += HISTORY_BUF;
      mxFree( History );
      History = tmp_ptr;
    }
  }

  /* print info about last iteration*/
  if(verb && (t % verb) ) {
    mexPrintf("%d: UB=%f, LB=%f, UB-LB=%f, (UB-LB)/|UB|=%f \n",
      t, UB, LB, UB-LB,(UB-LB)/UB);
  }  

  /*------------------------------------------------------- */
  /* Set outputs                                            */
  /*------------------------------------------------------- */
  (*ptr_t) = t;
  (*ptr_aHa11) = aHa11;
  (*ptr_aHa22) = aHa22;
  (*ptr_History) = History;

  /* Free memory */
  mxFree( Ha1 );
  mxFree( Ha2 );
  
  return( exitflag ); 
}




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲老司机在线| 欧美一区二区三区人| 国产精品免费视频一区| 成人永久免费视频| 国产精品区一区二区三区| 成人高清视频在线| 亚洲欧美日韩国产手机在线| 欧美性感一区二区三区| 天堂资源在线中文精品| 在线播放中文一区| 精品亚洲国产成人av制服丝袜| 久久婷婷久久一区二区三区| 波波电影院一区二区三区| 亚洲男人的天堂在线aⅴ视频| 欧美三级视频在线| 久久精品国产免费| 国产精品免费视频网站| 欧美日韩在线直播| 黑人精品欧美一区二区蜜桃| 国产精品你懂的在线欣赏| 在线视频综合导航| 美女视频黄 久久| 国产精品美女久久久久久久网站| 99riav一区二区三区| 视频一区二区三区入口| 国产三级精品视频| 91福利在线观看| 美女网站色91| 亚洲免费高清视频在线| 日韩欧美在线网站| 91小视频在线观看| 久久99久久久久久久久久久| 日韩一区欧美一区| 欧美成人一区二区三区片免费| 不卡的电视剧免费网站有什么| 午夜激情一区二区| 国产精品网曝门| 日韩亚洲欧美中文三级| 91小宝寻花一区二区三区| 久久精品二区亚洲w码| 亚洲精选免费视频| 国产亚洲精品久| 欧美一区二区三区男人的天堂| www.激情成人| 极品美女销魂一区二区三区| 亚洲影视资源网| 欧美国产乱子伦| 精品国产一区二区三区av性色| 色视频欧美一区二区三区| 国产乱码精品一区二区三区忘忧草 | a在线播放不卡| 日韩国产欧美视频| 亚洲在线免费播放| 国产精品少妇自拍| 久久奇米777| 日韩西西人体444www| 日本韩国欧美国产| 99re这里只有精品首页| 国产精品一区二区久久不卡 | 亚洲卡通动漫在线| 亚洲国产精品99久久久久久久久 | 国产三级三级三级精品8ⅰ区| 欧美精品在线视频| 欧美性色综合网| 色老头久久综合| 91小视频免费看| 91丨porny丨中文| 波多野结衣精品在线| 成人精品视频一区| 成人av资源在线| 丁香桃色午夜亚洲一区二区三区| 狠狠色丁香婷婷综合| 精品一区二区三区视频| 久久精品国产77777蜜臀| 美女视频黄 久久| 久久国产精品无码网站| 久久爱另类一区二区小说| 全国精品久久少妇| 老司机精品视频导航| 久久国产精品免费| 精品一区二区三区免费观看| 久久精品国产**网站演员| 精品制服美女久久| 国产在线精品一区二区三区不卡| 国产在线精品一区二区不卡了| 国产在线一区观看| 国产成人免费视频网站| 成人动漫精品一区二区| 不卡视频一二三| 欧美在线影院一区二区| 欧美日韩国产精品自在自线| 91超碰这里只有精品国产| 日韩欧美国产三级| 久久久噜噜噜久久中文字幕色伊伊| 精品国产一区二区三区四区四| 久久亚洲精精品中文字幕早川悠里 | 亚洲综合成人在线视频| 亚洲一区成人在线| 免费av网站大全久久| 激情亚洲综合在线| 东方aⅴ免费观看久久av| 91在线视频观看| 欧美日韩久久一区| 久久久久久免费网| 亚洲三级电影全部在线观看高清| 亚洲电影在线播放| 国内精品免费在线观看| 波多野结衣中文一区| 欧美午夜在线观看| 日韩女优电影在线观看| 国产精品久久久久婷婷二区次| 亚洲欧美aⅴ...| 日韩av一区二| 风间由美一区二区av101| 欧美性色黄大片手机版| 久久久综合精品| 亚洲综合色在线| 国产一区不卡在线| 91激情在线视频| 久久综合视频网| 午夜私人影院久久久久| 国产激情一区二区三区四区 | 欧美肥妇free| 国产拍揄自揄精品视频麻豆| 香蕉乱码成人久久天堂爱免费| 国产乱子轮精品视频| 欧美亚洲综合网| 国产精品美女www爽爽爽| 日韩经典中文字幕一区| 成人18视频在线播放| 欧美成人a视频| 亚洲与欧洲av电影| www.亚洲精品| wwwwxxxxx欧美| 亚洲成人av一区| 99免费精品视频| 国产午夜精品一区二区三区四区 | 青娱乐精品在线视频| 99re热视频精品| 久久久久久久久久美女| 爽爽淫人综合网网站| 91国产免费看| 国产精品久久久久久久久免费丝袜 | 欧美色综合网站| 亚洲欧美一区二区在线观看| 国产精品一区二区在线播放| 欧美精品xxxxbbbb| 一个色综合av| 99精品视频在线免费观看| 久久久久久久久99精品| 久久国产日韩欧美精品| 欧美日产国产精品| 一区二区三区四区在线播放| 成人精品一区二区三区中文字幕| 日韩欧美第一区| 肉丝袜脚交视频一区二区| 欧美日韩一级片在线观看| 亚洲精品国产一区二区精华液 | 成人va在线观看| 久久精品亚洲一区二区三区浴池| 美日韩黄色大片| 日韩一区二区影院| 日韩经典一区二区| 欧美一区二区视频网站| 天天综合色天天综合色h| 欧美女孩性生活视频| 亚洲6080在线| 777奇米四色成人影色区| 三级影片在线观看欧美日韩一区二区 | 亚洲一区二区视频| 91久久精品日日躁夜夜躁欧美| 一区二区国产视频| 欧美日韩亚洲综合在线 | 亚洲美腿欧美偷拍| 色综合天天综合色综合av| 综合电影一区二区三区| 色悠悠亚洲一区二区| 一区二区三区视频在线观看| 在线观看日韩高清av| 亚洲成国产人片在线观看| 欧美老人xxxx18| 毛片一区二区三区| 久久久一区二区| 成人avav影音| 亚洲一级电影视频| 欧美日韩成人综合在线一区二区| 日韩欧美国产精品| 欧美顶级少妇做爰| 国产欧美一区二区三区网站| 天天操天天干天天综合网| 欧美一级在线观看| 韩国v欧美v亚洲v日本v| 国产亚洲欧美日韩日本| av激情综合网| 亚洲高清不卡在线| 精品国产a毛片| 一本到不卡免费一区二区| 日韩国产一区二| 久久精品视频一区二区| 91污在线观看|