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

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

?? svm_nu.cpp

?? 支持向量機(4)mySVM
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "svm_nu.h"

/**
 *
 * nu SVM
 *
 */

void svm_nu_regression_c::init(kernel_c* new_kernel, parameters_c* new_parameters){
  svm_c::init(new_kernel,new_parameters);
  lambda_nu = 0;
  sum_alpha_nu = 0;
  qp.m = 2;
  nu = new_parameters->nu;
  epsilon_pos=0;
  epsilon_neg=0;
};


SVMFLOAT svm_nu_regression_c::nabla(const SVMINT i){
  if(is_alpha_neg(i) > 0){
    return( sum[i] - all_ys[i]);
  }
  else{
    return(-sum[i] + all_ys[i]);
  };
};


void svm_nu_regression_c::reset_shrinked(){
  svm_c::reset_shrinked();
  sum_alpha_nu = 0;
};



int svm_nu_regression_c::is_alpha_neg(const SVMINT i){
  // variable i is alpha*
  int result;
  if(all_alphas[i] > 0){
    result = 1;
  }
  else if(all_alphas[i] == 0){
    SVMFLOAT k = sum[i] - all_ys[i] + lambda_eq;
    if(k+lambda_nu+epsilon_neg>=0){
      result = -1;
    }
    else if(-k+lambda_nu+epsilon_pos>=0){
      result = 1;
    }
    else{
      result = 2*((i+at_bound[i])%2)-1;
    };
  }
  else{
    result = -1;
  };
  return result;
};


SVMFLOAT svm_nu_regression_c::lambda(const SVMINT i){
  // size lagrangian multiplier of the active constraint

  SVMFLOAT alpha;
  SVMFLOAT result = 0;

  alpha=all_alphas[i];

  if(alpha>is_zero){
    // alpha*
    if(alpha-Cneg >= - is_zero){
      // upper bound active
      result = -lambda_eq-lambda_nu-nabla(i);
    }
    else{
      result = -abs(nabla(i)+lambda_eq+lambda_nu);
    };
  }
  else if(alpha >= -is_zero){
    // lower bound active
    if(is_alpha_neg(i) > 0){
      result = nabla(i) + lambda_eq+lambda_nu;
    }
    else{
      result = nabla(i)-lambda_eq+lambda_nu;
    };
  }
  else if(alpha+Cpos <= is_zero){
    // upper bound active
    result = lambda_eq -lambda_nu - nabla(i);
  }
  else{
    result = -abs(nabla(i)-lambda_eq+lambda_nu);
  };

  return result;
};


int svm_nu_regression_c::feasible(const SVMINT i){
  // is direction i feasible to minimize the target function
  // (includes which_alpha==0)

  if(at_bound[i] >= shrink_const){ return 0; };

  SVMFLOAT alpha;
  SVMFLOAT result;

  alpha=all_alphas[i];
  //  feasible_epsilon=-1;
  if(alpha-Cneg >= - is_zero){
    // alpha* at upper bound
    result = -lambda_eq-lambda_nu-nabla(i);
    if(result>=-feasible_epsilon){
      return 0; 
    };
  }
  else if((alpha<=is_zero) && (alpha >= -is_zero)){
    // lower bound active
    if(is_alpha_neg(i) > 0){
      result = nabla(i) + lambda_eq+lambda_nu;
    }
    else{
      result = nabla(i)-lambda_eq+lambda_nu;
    };
    if(result>=-feasible_epsilon){
      return 0; 
    };
  }
  else if(alpha+Cpos <= is_zero){
    // alpha at upper bound
    result = lambda_eq -lambda_nu- nabla(i);
    if(result>=-feasible_epsilon){
      return 0; 
    };
  }
  else{
    // not at bound
    result= abs(nabla(i)+is_alpha_neg(i)*lambda_eq+lambda_nu);
    if(result<=feasible_epsilon){
      return 0; 
    };
  };
  return 1;
};


void svm_nu_regression_c::init_optimizer(){
  lambda_nu_WS = 0;
  lambda_nu = 0;
  sum_alpha_nu=0;
  qp.m = 2;
  svm_c::init_optimizer();
  smo.init(parameters->is_zero,parameters->convergence_epsilon,working_set_size*working_set_size*10);
  nu *= parameters->realC;
  epsilon_pos=0;
  epsilon_neg=0;
};


void svm_nu_regression_c::project_to_constraint(){
  SVMFLOAT alpha;
  SVMFLOAT my_alpha_sum=sum_alpha;
  SVMFLOAT my_alpha_nu_sum=sum_alpha_nu-nu;
  SVMINT total_pos = 0;
  SVMINT total_neg = 0;
  for(SVMINT i=0;i<examples_total;i++){
    alpha = all_alphas[i];
    my_alpha_sum += alpha;
    my_alpha_nu_sum += abs(alpha);
    if((alpha>is_zero) && (alpha-Cneg < -is_zero)){
      total_neg++;
    }
    else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){
      total_pos++;
    };
  };

  //project
  if((total_pos > 0) && (total_neg > 0)){
    for(SVMINT i=0;i<examples_total;i++){
      alpha = all_alphas[i];
      if((alpha>is_zero) && (alpha-Cneg < -is_zero)){
	all_alphas[i] -= (my_alpha_sum+my_alpha_nu_sum)/2/total_neg;
      }
      else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){
	all_alphas[i] -= (my_alpha_sum-my_alpha_nu_sum)/2/total_pos;
      };
    };
  };
};


int svm_nu_regression_c::convergence(){
  long time_start = get_time();
  SVMFLOAT pos_sum = 0;
  SVMFLOAT neg_sum = 0;
  SVMINT total=0;
  SVMFLOAT alpha_sum=0;
  SVMFLOAT alpha_nu_sum=0;
  SVMFLOAT alpha=0;
  SVMINT i;
  int result=1;

  // actual convergence-test
  total = 0; alpha_sum=0;

  SVMINT total_pos = 0;
  SVMINT total_neg = 0;

  for(i=0;i<examples_total;i++){
    alpha = all_alphas[i];
    alpha_sum += alpha;
    alpha_nu_sum += abs(alpha);
    if((alpha>is_zero) && (alpha-Cneg < -is_zero)){
      // alpha^* => nabla = lambda_eq + lambda_nu
      neg_sum += nabla(i); //sum[i];
      total_neg++;
    }
    else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){
      // alpha => nabla = -lambda_eq + lambda_nu
      pos_sum += nabla(i); //-sum[i];
      total_pos++;
    };
  };

  if((total_pos>0) && (total_neg > 0)){
    lambda_nu = -(neg_sum/total_neg+pos_sum/total_pos)/2;
    lambda_eq = -(neg_sum/total_neg-pos_sum/total_pos)/2;
    if(target_count>2){
      if(parameters->verbosity>=5){
	cout<<"Re-estimating lambdas from WS"<<endl;
      };
      total_pos=0; total_neg=0;
      pos_sum = 0; neg_sum = 0;
      // estimate lambdas from WS
      for(i=0;i<working_set_size;i++){
	alpha = all_alphas[working_set[i]];
	if((alpha>is_zero) && (alpha-Cneg < -is_zero)){
	  // alpha^* => nabla = lambda_eq + lambda_nu
	  neg_sum += nabla(working_set[i]);
	  total_neg++;	  
	}
	else if((alpha<-is_zero) && (alpha+Cpos > is_zero)){
	  // alpha => nabla = -lambda_eq + lambda_nu
	  pos_sum += nabla(working_set[i]);
	  total_pos++;
	};
      };
      if((total_pos>0) && (total_neg > 0)){
	lambda_nu = -(neg_sum/total_neg+pos_sum/total_pos)/2;
	lambda_eq = -(neg_sum/total_neg-pos_sum/total_pos)/2;
      };
      if(target_count>30){
	i = working_set[target_count%working_set_size];
	if(parameters->verbosity>=5){
	  cout<<"Setting lambdas to nabla("<<i<<")"<<endl;
	};
	if(is_alpha_neg(i) > 0){
	  lambda_eq = -nabla(i);
	}
	else{
	  lambda_eq = nabla(i);
	  };
	lambda_nu=0;
      };
    };

    if(parameters->verbosity>= 4){
      cout<<"lambda_eq = "<<lambda_eq<<endl;
      cout<<"lambda_nu = "<<lambda_nu<<endl;
    };
  }
  else{
    // lambda_eq and lambda_nu are a bit harder to find:
    SVMFLOAT max1=-infinity;
    SVMFLOAT max2=-infinity;
    SVMFLOAT max3=-infinity;
    SVMFLOAT max4=-infinity;
    SVMFLOAT the_nabla;
    for(SVMINT i=0;i<examples_total;i++){
      alpha = all_alphas[i];
      the_nabla = nabla(i);
      if(alpha-Cneg>=-is_zero){
	if(the_nabla>max4) max4 = the_nabla;
      }
      else if(alpha+Cpos<=is_zero){
	if(the_nabla>max3) max3 = the_nabla;
      }
      else if((alpha <= is_zero) && (alpha>=-is_zero)){
	if(is_alpha_neg(i)){
	  if(the_nabla>max1) max1 = the_nabla;
	}
	else{
	  if(the_nabla>max2) max2 = the_nabla;
	};
      };
    };

    //    cout<<"max = ("<<max1<<", "<<max2<<", "<<max3<<", "<<max4<<endl;
    
    if(max1==-infinity) max1=0;
    if(max2==-infinity) max2=0;
    if(max3==-infinity) max3=0;
    if(max4==-infinity) max4=0;
    lambda_eq = (max1+max3-max2-max4)/4;
    lambda_nu = (max1+max2-max3-max4)/4;

    //    cout<<((max1+max3)/2)<<" <= lambda_eq <= "<<(-(max2+max4)/2)<<endl;
    //    cout<<((max1+max2)/2)<<" <= lambda_nu <= "<<(-(max3+max4)/2)<<endl;

    if(parameters->verbosity>= 4){
      cout<<"*** no SVs in convergence(), lambda_eq = "<<lambda_eq<<"."<<endl;
      cout<<"                             lambda_nu = "<<lambda_nu<<"."<<endl;
    };
  };

  // check linear constraint
  if(abs(alpha_sum+sum_alpha) > convergence_epsilon){
    // equality constraint violated
    if(parameters->verbosity>= 3){
      cout<<"alpha_sum "<<alpha_sum<<endl;
      cout<<"sum_alpha "<<sum_alpha<<endl;
      cout<<"No convergence: equality constraint violated: |"<<(alpha_sum+sum_alpha)<<"| >> 0"<<endl;
    };
    project_to_constraint();
    result = 0;  
  };
  // note: original nu is already multiplied by C in init_optimizer
  if(abs(alpha_nu_sum+sum_alpha_nu-nu) > convergence_epsilon){
    // equality constraint violated
    if(parameters->verbosity>= 3){
      cout<<"alpha_nu_sum "<<alpha_nu_sum<<endl;
      cout<<"sum_alpha_nu "<<sum_alpha_nu<<endl;
      cout<<"No convergence: nu-equality constraint violated: |"<<(alpha_nu_sum+sum_alpha_nu-nu)<<"| >> 0"<<endl;
    };
    project_to_constraint();
    result = 0;  
  };

  i=0;
  while((i<examples_total) && (result != 0)){
    if(lambda(i)>=-convergence_epsilon){
      i++;
    }
    else{
      result = 0;
    };
  };

  time_convergence += get_time() - time_start;
  return result;
};


void svm_nu_regression_c::init_working_set(){
  if((((SVMFLOAT)examples_total) * nu) > parameters->realC*(((SVMFLOAT)examples_total) - ((SVMFLOAT)(examples_total%2)))){
    nu = (((SVMFLOAT)examples_total) - ((SVMFLOAT)(examples_total%2))) /
      ((SVMFLOAT)examples_total);
    nu *= parameters->realC;
    nu -= is_zero; // just to make sure
    cout<<"ERROR: nu too large, setting nu = "<<nu<<endl;
  };

  if(examples->initialised_alpha()){
    // check bounds
    project_to_constraint();
  };

  // calculate nu-sum
  sum_alpha_nu=0;
  SVMFLOAT the_nu_sum = 0;
  SVMFLOAT the_sum=0;
  for(SVMINT ni=0;ni<examples_total;ni++){
    the_sum += all_alphas[ni];
    the_nu_sum += abs(all_alphas[ni]);
  };

  if((abs(the_sum) > is_zero) || (abs(the_nu_sum-nu) > is_zero)){
    // set initial feasible point
    // neg alpha: -nu/2n
    // pos alpha:  nu/2p

    for(SVMINT ni=0;ni<examples_total/2;ni++){
      examples->put_alpha(ni,nu/((SVMFLOAT)examples_total));
      examples->put_alpha(examples_total-1-ni,-nu/((SVMFLOAT)examples_total));
    };
    examples->set_initialised_alpha();
  };

  svm_c::init_working_set();
};


void svm_nu_regression_c::shrink(){
  // move shrinked examples to back
  if(to_shrink>examples_total/20){
    SVMINT i;
    SVMINT last_pos=examples_total;
    for(i=0;i<last_pos;i++){
      if(at_bound[i] >= shrink_const){
	// shrink i
	sum_alpha += all_alphas[i];
	sum_alpha_nu += is_alpha_neg(i)*all_alphas[i];
	last_pos--;
	examples->swap(i,last_pos);
	kernel->overwrite(i,last_pos);
	sum[i] = sum[last_pos];
	at_bound[i] = at_bound[last_pos];
      };
    };
    
    examples_total = last_pos;
    kernel->set_examples_size(examples_total);
    
    if(parameters->verbosity>=4){
      cout<<"shrinked to "<<examples_total<<" variables"<<endl;
    };
  };
};


void svm_nu_regression_c::optimize(){
  // optimizer-specific call
  // get time
  long time_start = get_time();

  qp.n = working_set_size;

  SVMINT i;
  SVMINT j;

  // equality constraint
  qp.b[0] = 0;
  qp.b[1] = 0;

  for(i=0;i<working_set_size;i++){
    qp.b[0] += all_alphas[working_set[i]];
    if(qp.A[i] > 0){
      qp.b[1] += all_alphas[working_set[i]];
    }
    else{
      qp.b[1] -= all_alphas[working_set[i]];
    };
  };

  // set initial optimization parameters
  SVMFLOAT new_target=0;
  SVMFLOAT old_target=0;
  SVMFLOAT target_tmp;
  for(i=0;i<working_set_size;i++){
    target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;
    for(j=0;j<i;j++){
      target_tmp+=primal[j]*qp.H[j*working_set_size+i];
    };
    target_tmp+=qp.c[i];
    old_target+=target_tmp*primal[i];
  };

  SVMFLOAT new_constraint_sum=0;
  SVMFLOAT new_nu_constraint_sum=0;
  SVMINT pos_count = 0;
  SVMINT neg_count = 0;

  // optimize
  int KKTerror=1;
  int convError=0;

  if(feasible_epsilon>is_zero){
    smo.set_max_allowed_error(feasible_epsilon);
  };

  int result = smo.smo_solve_const_sum(&qp,primal);
  lambda_WS = smo.get_lambda_eq();
  lambda_nu_WS = smo.get_lambda_nu();

  if(parameters->verbosity>=5){
    cout<<"smo ended with result "<<result<<endl;
    cout<<"lambda_WS = "<<lambda_WS<<endl;
    cout<<"lambda_nu_WS = "<<lambda_nu_WS<<endl;
  };

  // clip
  new_constraint_sum=qp.b[0];
  new_nu_constraint_sum=qp.b[1];
  for(i=0;i<working_set_size;i++){
    // check if at bound
    if(primal[i] <= is_zero){
      // at lower bound
      primal[i] = qp.l[i];
    }
    else if(primal[i] - qp.u[i] >= -is_zero){
      // at upper bound
      primal[i] = qp.u[i];
    };                            
    new_constraint_sum -= qp.A[i]*primal[i];
    new_nu_constraint_sum -= primal[i];
  };

  // enforce equality constraint
  pos_count=0;
  neg_count=0;
  for(i=0;i<working_set_size;i++){
    if((primal[i] < qp.u[i]) && (primal[i] > qp.l[i])){
      if(qp.A[i]>0){
	pos_count++;
      }
      else{
	neg_count++;
      };
    };
  };
  if((pos_count>0) && (neg_count>0)){
    SVMFLOAT pos_add = (new_constraint_sum+new_nu_constraint_sum)/(2*pos_count);
    SVMFLOAT neg_add = (new_constraint_sum-new_nu_constraint_sum)/(2*neg_count);
    //    cout<<"Adding ("<<pos_add<<", "<<neg_add<<")"<<endl;
    for(SVMINT i=0;i<working_set_size;i++){
      if((primal[i] > qp.l[i]) && 
	 (primal[i] < qp.u[i])){
	// real sv
	if(qp.A[i]>0){
	  primal[i] += pos_add;
	}
	else{
	  primal[i] -= neg_add;
	};
      };
    };
  }
  else if((abs(new_constraint_sum)   > is_zero) ||
	  (abs(new_nu_constraint_sum) > is_zero)){
    // error, can't get feasible point
    if(parameters->verbosity>=5){
      cout<<"WARNING: No SVs, constraint_sum = "<<new_constraint_sum<<endl
	  <<"              nu-constraint_sum = "<<new_nu_constraint_sum<<endl;
    };
    old_target = -1e20; 
    convError=1;
  };

  // test descend
  new_target=0;
  for(i=0;i<working_set_size;i++){
    // attention: loqo changes one triangle of H!
    target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;
    for(j=0;j<i;j++){
      target_tmp+=primal[j]*qp.H[j*working_set_size+i];
    };
    target_tmp+=qp.c[i];
    new_target+=target_tmp*primal[i];
  };


  if(new_target < old_target){
    KKTerror = 0;
    //      target_count=0;
    if(parameters->descend < old_target - new_target){
      target_count=0;
    }
    else{
      convError=1;
    };
    if(parameters->verbosity>=5){
      cout<<"descend = "<<old_target-new_target<<"  ("<<old_target<<" --> "<<new_target<<")"<<endl;
    };
  }
  else{
    // nothing we can do
    KKTerror=0;
    convError=1;
    if(parameters->verbosity>=5){
      cout<<"WARNING: no descend ("<<old_target<<" -> "<<new_target<<"), stopping"<<endl;
    };
  };

  if(convError){
    target_count++;
    if(new_target>=old_target){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区三区四区| 亚洲美女视频在线| 日韩av在线免费观看不卡| 色噜噜久久综合| 亚洲欧美日韩一区二区| 成人国产精品免费网站| 日韩欧美亚洲一区二区| 亚洲大片一区二区三区| 在线观看亚洲一区| 亚洲一区在线电影| 欧美日韩黄色影视| 丝袜诱惑制服诱惑色一区在线观看 | 99在线热播精品免费| 国产欧美日韩麻豆91| 国产成人啪午夜精品网站男同| 国产色一区二区| av电影在线观看一区| 亚洲精品日产精品乱码不卡| 欧美制服丝袜第一页| 午夜影视日本亚洲欧洲精品| 91精品国产综合久久久久| 日av在线不卡| 精品国产精品网麻豆系列| 国产精品影视天天线| 国产精品美女久久福利网站| 91一区二区三区在线播放| 一区二区三区国产精品| 欧美日韩专区在线| 亚洲一二三四区| 欧美精品在线观看一区二区| 捆绑紧缚一区二区三区视频| 久久久国产综合精品女国产盗摄| 成人av午夜电影| 亚洲一区二区精品视频| 日韩视频一区二区三区在线播放| 国产一二精品视频| 亚洲三级在线免费观看| 欧美人与z0zoxxxx视频| 黑人精品欧美一区二区蜜桃| 国产精品短视频| 欧美日韩高清一区| 国产一区在线视频| 自拍av一区二区三区| av亚洲精华国产精华精华| 一区二区三区在线看| 欧美成人精品3d动漫h| 成人免费黄色在线| 亚洲成人免费影院| 26uuu欧美日本| 91福利在线导航| 国产馆精品极品| 亚洲午夜激情网站| 国产午夜久久久久| 欧美日韩aaaaa| 成人免费毛片高清视频| 日韩高清不卡一区| 最新日韩av在线| 欧美一区二区三区喷汁尤物| 成人app网站| 麻豆精品在线看| 一区二区高清免费观看影视大全 | 亚洲高清视频中文字幕| 欧美国产日产图区| 欧美一区二区三区思思人| 99re成人在线| 国产精品一区二区在线观看不卡| 亚洲电影视频在线| 中国av一区二区三区| 欧美大片一区二区| 欧美无砖砖区免费| 91啪九色porn原创视频在线观看| 久久99国产精品尤物| 亚洲成a人v欧美综合天堂 | 亚洲免费资源在线播放| 久久久精品2019中文字幕之3| 欧美人妖巨大在线| 色哟哟日韩精品| av不卡在线播放| 国产jizzjizz一区二区| 麻豆高清免费国产一区| 五月天久久比比资源色| 亚洲另类春色校园小说| 18成人在线观看| 中文字幕巨乱亚洲| 国产婷婷一区二区| 欧美精品一区二区三区一线天视频| 欧美日韩国产综合久久 | 精品国精品国产| 日韩欧美中文字幕公布| 51精品秘密在线观看| 欧美日韩综合不卡| 欧美日韩专区在线| 99久久婷婷国产| 国产精品99久久久久久久女警 | av欧美精品.com| 成人性视频免费网站| 国产精品自在在线| 国产成人高清在线| 国产99久久久国产精品| 国v精品久久久网| 国产成人在线观看| 高清不卡在线观看| av在线这里只有精品| 91啪亚洲精品| 欧美午夜寂寞影院| 欧美高清视频一二三区| 日韩欧美中文字幕制服| 精品久久久久久综合日本欧美| 欧美成人免费网站| 国产亚洲欧美日韩俺去了| 久久一区二区三区四区| 国产欧美精品在线观看| 国产精品二三区| 亚洲人成在线播放网站岛国| 亚洲视频中文字幕| 国产精品乱码人人做人人爱| 一区二区三区在线免费视频 | 国产亚洲短视频| 日韩美女啊v在线免费观看| 国产精品不卡视频| 亚洲一区二区视频在线观看| 美女脱光内衣内裤视频久久网站| 国产一区在线观看麻豆| 99久久免费视频.com| 欧美日韩国产高清一区二区| 精品视频色一区| 制服丝袜国产精品| 国产亚洲欧美日韩在线一区| 亚洲女人****多毛耸耸8| 亚洲欧美在线另类| 亚洲国产精品久久人人爱| 美女视频黄免费的久久| 成人激情文学综合网| 欧美午夜电影网| 精品美女一区二区三区| 1区2区3区国产精品| 天天av天天翘天天综合网色鬼国产| 久久99国产精品尤物| 91麻豆福利精品推荐| 欧美一区二区三区思思人| 国产精品久久久久久久久久免费看| 亚洲伊人伊色伊影伊综合网| 韩日av一区二区| 在线亚洲人成电影网站色www| 日韩欧美电影在线| 亚洲精品在线免费播放| 亚洲精品五月天| 看国产成人h片视频| 欧洲一区在线电影| 久久久精品综合| 丝袜亚洲精品中文字幕一区| 不卡的看片网站| 337p亚洲精品色噜噜| 亚洲免费观看在线观看| 国产一区二区成人久久免费影院| 欧美综合一区二区| 欧美一区二区三区婷婷月色| 日本一区免费视频| 丝袜国产日韩另类美女| 色婷婷亚洲一区二区三区| 久久久91精品国产一区二区精品| 三级欧美在线一区| 色婷婷一区二区| 国产精品毛片高清在线完整版| 久久99精品久久久久婷婷| 欧美日韩美女一区二区| 亚洲欧美一区二区久久| 国产99精品国产| 亚洲国产成人一区二区三区| 成人永久免费视频| 成人欧美一区二区三区1314| 成人h版在线观看| 亚洲视频综合在线| 日本精品一级二级| 婷婷开心激情综合| 日韩一区二区精品| 国产一区二区在线电影| 日本一区二区三区dvd视频在线| 国产美女精品人人做人人爽| 国产性天天综合网| 成人动漫精品一区二区| 亚洲激情综合网| 欧美日本在线播放| 蜜桃av一区二区| 国产日产欧美一区二区三区| 91小视频在线免费看| 亚洲综合免费观看高清完整版| 欧美少妇性性性| 美女诱惑一区二区| 国产精品女上位| 欧美视频在线一区| 裸体歌舞表演一区二区| 国产免费久久精品| 欧美亚洲动漫精品| 久久99精品一区二区三区三区| 国产精品久久久久一区二区三区| 欧美亚洲一区二区在线观看| 另类人妖一区二区av| 国产精品蜜臀在线观看| 欧美日韩成人一区二区|