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

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

?? loqo_solver.cpp

?? 支持向量分類算法在linux操作系統下的是實現
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
  printf("c=");  for(int i=0; i<n; ++i)    printf(" %g", c[i]);  printf("\n");  printf("low=");  for(int i=0; i<n; ++i)    printf(" %g", low[i]);  printf("\n");  printf("up=");  for(int i=0; i<n; ++i)    printf(" %g", up[i]);  printf("\n");}double Solver_LOQO_NU::calculate_rho(){  int nr_free1 = 0,nr_free2 = 0;  double ub1 = INF, ub2 = INF;  double lb1 = -INF, lb2 = -INF;  double sum_free1 = 0, sum_free2 = 0;  for(int i=0;i<active_size;i++)    {      if(y[i]==+1)	{	  if(is_lower_bound(i))	    ub1 = min(ub1,G[i]);	  else if(is_upper_bound(i))	    lb1 = max(lb1,G[i]);	  else	    {	      ++nr_free1;	      sum_free1 += G[i];	    }	}      else	{	  if(is_lower_bound(i))	    ub2 = min(ub2,G[i]);	  else if(is_upper_bound(i))	    lb2 = max(lb2,G[i]);	  else	    {	      ++nr_free2;	      sum_free2 += G[i];	    }	}    }  printf("nr_free1 = %d\n", nr_free1);  printf("sum_free1 = %g\n",sum_free1);  printf("nr_free2 = %d\n", nr_free2);  printf("sum_freee = %g\n",sum_free2);  double r1,r2;  if(nr_free1 > 0)    r1 = sum_free1/nr_free1;  else    r1 = (ub1+lb1)/2;	  if(nr_free2 > 0)    r2 = sum_free2/nr_free2;  else    r2 = (ub2+lb2)/2;	  si->r = (r1+r2)/2;  printf("(r1+r2)/2 = %g\n", (r1+r2)/2);  printf("(r1+r2)/2 = %g\n", (r1-r2)/2);  return (r1-r2)/2;}void Solver_LOQO::init_working_set(int *work_set, int *not_work_set){  int j;  NEXT_RAND = 1;  for (int i=0; i<n; ++i)  {    do      {	j = next_rand_pos() % l;      } while (work_status[j] != WORK_N);    work_status[j] = WORK_B;  }  int k=0; j=0;  for(int i=0; i<l; ++i)    {      if(work_status[i] == WORK_B)	{	  work_set[j] = i; ++j;	  work_count[i] = 0;	}      else	{	  not_work_set[k] = i; ++k;	  work_count[i] = -1;	}    }}int Solver_LOQO::solve_inner(){  Solver_NU sl;  schar *sy = new schar[n];  Qfloat *Q_bb_f = new Qfloat[n*n];  Qfloat *QD_f = new Qfloat[n];  for(int i=0; i<n; ++i)    {      sy[i] = (schar) a[i];      QD_f[i] = (Qfloat) Q_bb[i*n+i];      for(int j=0; j<n; ++j)	Q_bb_f[i*n+j] = (Qfloat) Q_bb[i*n+j];    }  sl.Solve(n, SVQ_No_Cache(Q_bb_f, QD_f, n), c, sy, work_space,	   Cp, Cn, eps, si, /* shrinking */ 0);  delete[] sy;  delete[] QD_f;  return 0;}// int Solver_LOQO::solve_inner()// {//   int result = 0;//   double sigdig;//   double epsilon_loqo = 1e-10;//   double margin;//   int iteration;//   for(margin=init_margin, iteration=init_iter; //       margin <= 0.9999999 && result != OPTIMAL_SOLUTION;)//     {//       sigdig = -log10(opt_precision);//       // run pr_loqo//       result = pr_loqo(n, m, c, Q_bb, a, d, low, up, work_space,// 		       &work_space[3*n], dist, 3, sigdig, iteration, margin, // 		       up[0]/4, 0);//       // Note: No need to check for choldc problem, as we employ//       // Manteuffel shifting.//       if(result == -1)// 	{// 	  info("NOTICE: Restarting PR_LOQO with more conservative");// 	  info("parameters.\n"); info_flush();// 	  if(init_margin < 0.80)// 	    init_margin = (4.0*margin+1.0)/5.0;// 	  margin = (margin+1.0)/2.0;// 	  opt_precision *= 10.0;// 	  info("NOTICE: Reducing precision of PR_LOQO.\n");// 	}//       else if(result != OPTIMAL_SOLUTION)// 	{// 	  // increase number of iterations// 	  iteration += 2000;// 	  init_iter += 10;// 	  // reduce precision// 	  opt_precision *= 10.0;// 	  info("NOTICE: Reducing precision of PR_LOQO!\n"); info_flush();// 	}//     }//   // Check precision of alphas//   for(int i=0; i<n; ++i)//     {//       if(work_space[i] < up[i]-epsilon_loqo && dist[i] < -eps)// 	epsilon_loqo = 2*(up[i]-work_space[i]);//       else if(work_space[i] > low[i]+epsilon_loqo && dist[i] > eps)// 	epsilon_loqo = 2*work_space[i];//     }//   info("Using epsilon_loqo= %g\n", epsilon_loqo); info_flush();//   // Clip alphas to bounds//   for(int i=0; i<n; ++i)//     {//       if(fabs(work_space[i]) < epsilon_loqo)// 	{// 	  work_space[i] = 0;// 	}//       if(fabs(work_space[i]-get_C(i)) < epsilon_loqo)// 	{// 	  work_space[i] = get_C(i);// 	}//     }//   // Compute obj after optimization//   double obj_after = 0.0;//   for(int i=0; i<n; ++i)//     {//       obj_after += work_space[i]*c[i];//       obj_after += 0.5*work_space[i]*work_space[i]*Q_bb[i*n+i];//       for(int j=0; j<i; ++j)// 	{// 	  obj_after += work_space[j]*work_space[i]*Q_bb[j*n+i];// 	}//     }//   printf("obj_after/before = %g / %g\n", obj_after, obj_before); fflush(stdout);//   printf("delta a/b = %g\n", obj_after-obj_before); fflush(stdout);//   // Check for progress//   if(obj_after >= obj_before)//     {//       // Increase precision//       opt_precision /= 100.0;//       ++precision_violations;//       info("NOTICE: Increasing Precision of PR_LOQO.\n"); info_flush();//     }//   if(precision_violations > 500)//     {//       // Relax stopping criterion//       eps *= 10.0;//       precision_violations = 0;//       info("WARNING: Relaxing epsilon on KKT-Conditions.\n"); info_flush();//     }//   return result;// }void Solver_LOQO::Solve(int l, const QMatrix& Q, const double *b_, 			const schar *y_, double *alpha_, double Cp, 			double Cn, double eps, SolutionInfo* si, 			int shrinking){  this->l = l;  this->si = si;  this->Q = &Q;  QD = Q.get_QD(); // we need diagonal for working_set_selection  clone(b,b_,l);  clone(y,y_,l);  clone(alpha,alpha_,l);  this->Cp = Cp;  this->Cn = Cn;  this->eps = eps;  this->active_size = l;  this->lmn = l - n;  int *work_set = new int[n];  int *not_work_set = new int[l];  double *delta_alpha = new double[n];  // init alpha status and work status  {    alpha_status = new char[l];    work_status = new char[l];    work_count = new int[l];    for(int i=0; i<l; ++i)      {	update_alpha_status(i);	work_status[i] = WORK_N;	work_count[i] = -1;      }  }  // init gradient  info("initializing gradient..."); info_flush();  {    G = new double[l];    for(int i=0; i<l; ++i)      {	G[i] = b[i];      }    for(int i=0; i<l; ++i)      { 	if(!is_lower_bound(i)) 	  {	    const Qfloat *Q_i = Q.get_Q(i,l); 	    double alpha_i = alpha[i];	    for(int j=0; j<l; ++j)	      {		G[j] += alpha_i * Q_i[j];	      } 	  }      }  }  info("done.\n"); info_flush();  // Allocate space for pr_loqo  Q_bb = new LOQOfloat[n*n];  c = new LOQOfloat[n];  up = new LOQOfloat[n];  low = new LOQOfloat[n];  dist = new LOQOfloat[n];  allocate_a();  allocate_d();  allocate_work_space();  iter=0;  // optimization loop  while(1)    {      // select working set and check for optimality      if(iter > 0)	{	  if(select_working_set(work_set, not_work_set) != 0)	    break;	}      else	{	  info("initializing working set..."); info_flush();   	  init_working_set(work_set, not_work_set);	  info("done.\n"); info_flush(); 	}      lmn = l - n;//       printf("working_set=");//       for(int i=0; i<n; ++i)// 	{// 	  printf("%d ",work_set[i]);// 	}//       printf("\n");//       printf("not_working_set=");//       for(int i=0; i<lmn; ++i)// 	{// 	  printf("%d ",not_work_set[i]);// 	}//       printf("\n");      ++iter;      // setup problem for pr_loqo      info("setting up problem for pr_loqo..."); info_flush();      setup_problem(work_set, not_work_set);      setup_up(work_set);      setup_low();//       print_problem();      info("done.\n");      // run inner solver      for(int i=0; i<n; ++i)	work_space[i]=alpha[work_set[i]];      // Compute obj before optimization      obj_before = 0.0;      for(int i=0; i<n; ++i)	{	  obj_before += alpha[work_set[i]]*c[i];	  obj_before += 0.5*alpha[work_set[i]]*alpha[work_set[i]]*Q_bb[i*n+i];	  for(int j=0; j<i; ++j)	    {	      obj_before += alpha[work_set[j]]*alpha[work_set[i]]*Q_bb[j*n+i];	    }	}      printf("obj_before = %g\n", obj_before); fflush(stdout);      int status = solve_inner();      printf("pr_loqo status = %d\n",status);      // Restore Q_bb, lower triangle, overwritten by pr_loqo      for(int i=0; i<n; ++i)	{	  for(int j=i+1; j<n; ++j)	    {	      Q_bb[n*j+i] = Q_bb[n*i+j];	    }	}      // update gradient, compute G_b += Q_bb*delta_alpha and       // G_n += Q_nb*delta_alpha.      int *nz = new int[n];      double sum_delta_alpha_pos=0;      double sum_delta_alpha_neg=0;      for(int i=0; i<n; ++i)	{	  delta_alpha[i] = work_space[i] - alpha[work_set[i]];	  if(y[work_set[i]]==+1)	    sum_delta_alpha_pos += delta_alpha[i];	  else	    sum_delta_alpha_neg += delta_alpha[i];   	  if(fabs(delta_alpha[i]) > TOL_ZERO)	    nz[i] = 1;  	  else  	    nz[i] = 0;	}      printf("sum_delta_alpha_pos = %g\n", sum_delta_alpha_pos);      printf("sum_delta_alpha_neg = %g\n", sum_delta_alpha_neg);      for(int i=0; i<n; ++i)	for(int j=0; j<n; ++j) // G_b	  {	    if(nz[j])	      G[work_set[i]] += Q_bb[n*i+j]*delta_alpha[j];	  }      for(int i=0; i<n; ++i) // G_n	{	  if(nz[i])	    { 	      const Qfloat *Q_i =  		Q.get_Q_subset(work_set[i],not_work_set,lmn);//  	      const Qfloat *Q_i = Q.get_Q(work_set[i],l);	      for(int j=0; j<lmn; ++j)		G[not_work_set[j]] += Q_i[not_work_set[j]] * delta_alpha[i];	    }	}      delete[] nz;      // update alpha      for(int i=0; i<n; ++i)	{ 	  alpha[work_set[i]] = work_space[i];	  update_alpha_status(work_set[i]);	}//       double sum_alpha=0;//       printf("alpha = ");//       double sum_alpha_pos=0;//       double sum_alpha_neg=0;//       for(int i=0; i<l; ++i)// 	{// 	  sum_alpha += alpha[i];// 	  if(y[i]==+1)// 	    sum_alpha_pos += alpha[i];// 	  else// 	    sum_alpha_neg += alpha[i];// 	  printf(" %g", alpha[i]);// 	}//       printf("\n");//       printf("sum_alpha = %g\n",sum_alpha);//       printf("sum_alpha_pos = %g\n",sum_alpha_pos);//       printf("sum_alpha_neg = %g\n",sum_alpha_neg);//       double delta_alpha_pos = (sum_alpha/2)-sum_alpha_pos;//       double delta_alpha_neg = (sum_alpha/2)-sum_alpha_neg;      // Restore consistency//       if(fabs(delta_alpha_pos) > 0)// 	{// 	  for(int i=0; i<l; ++i)// 	    {// 	      if(y[i] == +1)// 		{// 		  if(alpha[i]+delta_alpha_pos >= low[i] &&// 		     alpha[i]+delta_alpha_pos <= up[i])// 		    {// 		      alpha[i] += delta_alpha_pos;// 		      break;// 		    }// 		}// 	    }// 	}//       if(fabs(delta_alpha_neg) > 0)// 	{// 	  for(int i=0; i<l; ++i)// 	    {// 	      if(y[i] == -1)// 		{// 		  if(alpha[i]+delta_alpha_neg >= low[i] &&// 		     alpha[i]+delta_alpha_neg <= up[i])// 		    {// 		      alpha[i] += delta_alpha_neg;// 		      break;// 		    }// 		}// 	    }// 	}      // Recheck//       sum_alpha_pos = 0;//       sum_alpha_neg = 0;//       sum_alpha = 0;//       for(int i=0; i<l; ++i)// 	{// 	  sum_alpha += alpha[i];// 	  if(y[i] == +1)// 	    sum_alpha_pos += alpha[i];// 	  else// 	    sum_alpha_neg += alpha[i];// 	}//       printf("sum_alpha = %g\n",sum_alpha);//       printf("sum_alpha_pos = %g\n",sum_alpha_pos);//       printf("sum_alpha_neg = %g\n",sum_alpha_neg);    } // while(1)  // calculate rho  si->rho=calculate_rho();  // calculate objective value  {    double v = 0;    int i;    for(i=0;i<l;i++)      v += alpha[i] * (G[i] + b[i]);    si->obj = v/2;  }  // put back the solution  {    for(int i=0;i<l;i++)      alpha_[i] = alpha[i];  }  si->upper_bound_p = Cp;  si->upper_bound_n = Cn;  info("\noptimization finished, #iter = %d\n",iter);  // clean up  delete[] b;  delete[] y;  delete[] alpha;  delete[] alpha_status;  delete[] delta_alpha;  delete[] work_status;  delete[] work_count;  delete[] work_set;  delete[] not_work_set;  delete[] G;  delete[] Q_bb;  delete[] c;  delete[] up;  delete[] low;  delete[] dist;  delete[] a;  delete[] d;  delete[] work_space;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕 久热精品 视频在线 | ww亚洲ww在线观看国产| 91在线观看地址| 99久久免费国产| 国产成人精品综合在线观看 | 中文字幕在线观看一区| 国产精品网站在线| 中文字幕在线观看不卡| 亚洲欧美日韩国产综合| 亚洲天天做日日做天天谢日日欢 | 午夜久久久久久久久| 亚洲h精品动漫在线观看| 午夜免费欧美电影| 美女网站一区二区| 国产成人aaaa| 91在线精品一区二区| 99精品国产视频| 欧美亚日韩国产aⅴ精品中极品| 色婷婷精品大在线视频| 欧美日韩中文字幕精品| 欧美一区2区视频在线观看| 欧美变态tickling挠脚心| 久久综合久久99| 国产精品久久久久影视| 一区二区三区日韩欧美精品| 亚洲成人精品一区二区| 麻豆传媒一区二区三区| 国产成人自拍高清视频在线免费播放| 成人精品鲁一区一区二区| 一本久道久久综合中文字幕| 3d成人动漫网站| 欧美激情综合网| 亚洲一二三专区| 国产老妇另类xxxxx| 成人av电影在线网| 91精选在线观看| 中文字幕高清不卡| 日本不卡视频在线观看| 成人av在线电影| 欧美一区二区三区四区久久| 国产欧美日韩综合精品一区二区| 亚洲卡通欧美制服中文| 久久电影国产免费久久电影| 97精品视频在线观看自产线路二| 777奇米四色成人影色区| 国产欧美一区二区精品仙草咪| 亚洲1区2区3区4区| 国内精品久久久久影院薰衣草 | 欧美v日韩v国产v| 中文字幕一区二区三| 久草热8精品视频在线观看| 99re这里只有精品6| 精品国产电影一区二区| 亚洲电影欧美电影有声小说| www.爱久久.com| 久久夜色精品一区| 日韩主播视频在线| 91视频免费播放| 国产日产亚洲精品系列| 美女视频网站久久| 欧美日韩国产片| 亚洲欧洲日产国产综合网| 国产一区999| 91麻豆精品91久久久久久清纯| 亚洲激情男女视频| 91小视频在线| 国产精品久久久久天堂| 国产乱一区二区| 精品sm捆绑视频| 久久国产麻豆精品| 日韩精品中文字幕在线不卡尤物| 日韩精品欧美成人高清一区二区| 色综合天天综合狠狠| 激情综合色综合久久综合| 欧美激情自拍偷拍| 久久99国产精品麻豆| 欧美一区二区播放| 久久99精品久久久久久久久久久久| 91在线观看一区二区| 波多野结衣中文字幕一区二区三区| 亚洲一卡二卡三卡四卡五卡| 久久久久久久久久电影| 欧美精品xxxxbbbb| 99久久免费视频.com| 蜜臀久久久久久久| 一区二区三区在线影院| 国产三级三级三级精品8ⅰ区| 欧美三级视频在线播放| 成人免费视频一区| 激情综合一区二区三区| 亚洲制服欧美中文字幕中文字幕| 久久精品一区二区三区av | 国产乱码精品一区二区三| 亚洲一区二区在线观看视频| 国产日韩欧美激情| 日韩视频国产视频| 欧美人动与zoxxxx乱| 91久久精品一区二区三| www.在线欧美| 国产成人午夜精品5599| 久久成人综合网| 日韩黄色在线观看| 亚洲午夜久久久久久久久电影院| 中日韩av电影| 国产亚洲精品福利| 久久免费国产精品| 精品国产露脸精彩对白| 精品精品欲导航| 欧美变态tickle挠乳网站| 日韩一区二区在线播放| 欧美日韩国产另类不卡| 欧美三级三级三级爽爽爽| 欧美最新大片在线看| 91国偷自产一区二区开放时间| 成人激情校园春色| 99久久精品一区二区| a美女胸又www黄视频久久| 福利一区二区在线| 成人精品鲁一区一区二区| 成人免费毛片高清视频| 成人午夜视频福利| 99精品国产热久久91蜜凸| 色一区在线观看| 欧美日韩一区二区三区在线看| 欧美三级电影在线观看| 欧美日韩精品一区二区三区四区 | 亚洲制服丝袜在线| 亚洲一级在线观看| 视频一区二区中文字幕| 乱中年女人伦av一区二区| 激情六月婷婷综合| 国产精品一区二区在线播放| 成人黄色片在线观看| 一本到一区二区三区| 欧美男女性生活在线直播观看| 欧美一级日韩免费不卡| 精品成人在线观看| 国产喷白浆一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲精品成人在线| 日韩激情在线观看| 国产高清一区日本| 在线观看视频一区| 日韩一区二区三区在线视频| 久久精品一区二区三区不卡| 亚洲色图欧美激情| 丝袜美腿亚洲色图| 国产不卡在线视频| 欧美亚洲禁片免费| 日韩精品在线一区二区| 国产精品视频在线看| 亚洲国产精品影院| 国产一区二区女| 色8久久精品久久久久久蜜| 日韩一区二区三免费高清| 欧美国产日韩亚洲一区| 亚洲福利视频一区| 韩国三级中文字幕hd久久精品| a级精品国产片在线观看| 欧美一级高清片| 亚洲日本va午夜在线电影| 日韩av午夜在线观看| a美女胸又www黄视频久久| 日韩欧美色综合网站| 亚洲色图制服诱惑| 国产九九视频一区二区三区| 欧美午夜免费电影| 国产精品久久久久久久久搜平片| 天天射综合影视| 成人a区在线观看| 精品成人一区二区三区四区| 亚洲夂夂婷婷色拍ww47| zzijzzij亚洲日本少妇熟睡| 日韩一级在线观看| 亚洲国产综合人成综合网站| 99久久免费精品| 久久久噜噜噜久噜久久综合| 日韩精品电影在线| 在线精品视频小说1| 国产精品乱子久久久久| 精品无码三级在线观看视频| 欧美色爱综合网| 一区二区在线看| 国产91精品露脸国语对白| 日韩欧美国产一区二区在线播放| 亚洲国产日韩综合久久精品| 99国内精品久久| 国产精品久久毛片av大全日韩| 精品午夜久久福利影院| 日韩一区二区三区视频在线观看| 亚洲成av人影院在线观看网| 色吊一区二区三区| 自拍偷拍欧美精品| 99在线视频精品| 亚洲同性同志一二三专区| 高清国产一区二区| 中文字幕国产一区二区| 成人av在线资源网站| 欧美国产日韩在线观看| 成人永久免费视频|