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

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

?? clinearfafeaturecalculator.cpp

?? 強(qiáng)化學(xué)習(xí)算法(R-Learning)難得的珍貴資料
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
void CLinearMultiFeatureCalculator::getModifiedState(CStateCollection *stateCol, CState *featState)
{
	assert(equals(featState->getStateProperties()));

	memset(actualPartition, 0, sizeof(unsigned int) * numDim);
	unsigned int j = 0;
	CState *state = stateCol->getState(originalState);

/*	printf("State : ");
	for (int i = 0; i < 4; i ++)
	{
		printf("%f ", state->getNormalizedContinuousState(i));
	}
	printf("\n");*/

	getSingleActiveFeature(state, singleStateFeatures);
	unsigned int i;
	int feature = 0;

	//offset to add to the actual feature
	int featureAdd = 0;

	getFeaturePosition(getActiveFeature(state), activePosition);

	for (i = 0; i < numDim; i ++)
	{
		int singleFeatureOffset = 0;
		if (areaSize[i] % 2 == 0)
		{
			//rlt_real x1 = state->getNormalizedContinuousState(dimensions[i]);
			//rlt_real x2 = activePosition->getElement(i);
			if (state->getNormalizedContinuousState(dimensions[i]) < activePosition->getElement(i))
			{
				singleFeatureOffset ++;
			}
			singleFeatureOffset += (areaSize[i] - 1) / 2;
		}
		else
		{
			singleFeatureOffset += areaSize[i] / 2;
		}
		singleStateFeatures[i] -= singleFeatureOffset;
		activePosition->setElement(i, activePosition->getElement(i) - singleFeatureOffset * 1.0 / partitions[i] * gridScale[i]);
	}

	unsigned int featureIndex = 0;


	for (i = 0; i < areaNumPart; i++)
	{
		feature = 0;
		/*for (j = 0; j < numDim; j++)
		{
			int dist = (actualPartition[j] - areaSize[j]);
			featurePosition->setElement(j,  (activePosition->getElement(j) + 1.0 / partitions[j] * dist));

			featureAdd = (singleStateFeatures[j] + (actualPartition[j] - areaSize[j]));
			if (state->getStateProperties()->getPeriodicity(j))
			{
				featurePosition->setElement(j, featurePosition->getElement(j) - floor(featurePosition->getElement(j)));
				featureAdd = featureAdd - (int) floor((rlt_real) featureAdd / (rlt_real) partitions[j]) * partitions[j];
			}

			feature = feature + featureAdd * dimensionSize[j];
		} */
		/*for (j = 0; j < numDim; j++)
		{
			int dist = (actualPartition[j] - 1);
			featurePosition->setElement(j,  (activePosition->getElement(j) + 1.0 / partitions[j] * dist));

			featureAdd = (singleStateFeatures[j] + (actualPartition[j] - 1));
			if (state->getStateProperties()->getPeriodicity(j))
			{
				featurePosition->setElement(j, featurePosition->getElement(j) - floor(featurePosition->getElement(j)));
				featureAdd = featureAdd - (int) floor((rlt_real) featureAdd / (rlt_real) partitions[j]) * partitions[j];
			}
			
			feature = feature + featureAdd * dimensionSize[j];
		} 
		for (i = 0; i < numDim; i ++)
		{
			int singleFeatureOffset = 0;
			if (areaSize[i] % 2 == 0)
			{
				if (state->getContinuousState(dimensions[i]) < activePosition->getElement(i))
				{
					singleFeatureOffset ++;
				}
				singleFeatureOffset += (singleFeatureOffset - 1) / 2;
			}
			else
			{
				singleFeatureOffset += areaSize[i] / 2;
			}
			singleStateFeatures[i] -= singleFeatureOffset;
			activePosition->setElement(i, activePosition->getElement(i) - singleFeatureOffset * 1.0 / partitions[i]);

		}*/
		for (j = 0; j < numDim; j++)
		{
			//int dist = (actualPartition[j] - areaSize[j]);
			featurePosition->setElement(j,  activePosition->getElement(j) + (1.0 / partitions[j] * actualPartition[j])  * gridScale[j]);

			featureAdd = (singleStateFeatures[j] + actualPartition[j]);
			if (state->getStateProperties()->getPeriodicity(j) && gridScale[j] >= 1.0)
			{
				featurePosition->setElement(j, featurePosition->getElement(j) - floor(featurePosition->getElement(j)));
				featureAdd = featureAdd - (int) floor((rlt_real) featureAdd / (rlt_real) partitions[j]) * partitions[j];
			}

			feature = feature + featureAdd * dimensionSize[j];
		}
		if (feature >= 0 && (unsigned int) feature < getNumFeatures())
		{
			featState->setDiscreteState(featureIndex, feature);
			featState->setContinuousState(featureIndex, getFeatureFactor(state, featurePosition));
			featureIndex ++;
		}
		else
		{
			j = 0;
		}
				
		j = 0;
	
		actualPartition[0] ++;
		while (j < numDim && actualPartition[j] >= areaSize[j])
		{
			actualPartition[j] = 0;
			j ++;
			if (j < numDim)
			{
				actualPartition[j]++;
			}
		}
	}
	featState->setNumActiveContinuousStates(featureIndex);
	featState->setNumActiveDiscreteStates(featureIndex);

	for (; featureIndex < areaNumPart; featureIndex ++)
	{
		featState->setDiscreteState(featureIndex, 0);
		featState->setContinuousState(featureIndex, 0.0);
	}

	this->normalizeFeatures(featState);
}

CRBFFeatureCalculator::CRBFFeatureCalculator(unsigned int numDim, unsigned int dimensions[], unsigned int partitions[], rlt_real offsets[], rlt_real sigma[]) : CLinearMultiFeatureCalculator(numDim, dimensions, partitions, offsets, 0)
{
	this->sigma = new rlt_real[numDim];
	memcpy(this->sigma, sigma, sizeof(rlt_real) * numDim);
	sigmaMaxSize = 2.0;
	initAreaSize();
	addType(FEATURESTATEDERIVATIONX);
}

CRBFFeatureCalculator::CRBFFeatureCalculator(unsigned int numDim, unsigned int dimensions[], unsigned int partitions[], rlt_real offsets[], rlt_real sigma[], unsigned int areaSize[]) : CLinearMultiFeatureCalculator(numDim, dimensions, partitions, offsets, 0)
{
	this->sigma = new rlt_real[numDim];
	memcpy(this->sigma, sigma, sizeof(rlt_real) * numDim);
	sigmaMaxSize = 2.0;
	memcpy(this->areaSize, areaSize, sizeof(unsigned int) * numDim);
	calcNumActiveFeatures();

	addType(FEATURESTATEDERIVATIONX);
}


CRBFFeatureCalculator::~CRBFFeatureCalculator()
{
	delete sigma;
}

void CRBFFeatureCalculator::initAreaSize()
{
	for (unsigned int i = 0; i < numDim; i++)
	{
		areaSize[i] = (2 * (unsigned int)floor(sigmaMaxSize * sigma[i] * partitions[i]) + 1);
		if(areaSize[i] <= 1)
		{
			areaSize[i] += 1;
		}
	}
	calcNumActiveFeatures();
}

rlt_real CRBFFeatureCalculator::getFeatureFactor(CState *state, CMyVector *position)
{
	rlt_real exponent = 0.0;
	
//	printf("position : ");
//	position->saveASCII(stdout);

	for (unsigned int i = 0; i < numDim; i++)
	{
		rlt_real difference = fabs(state->getNormalizedContinuousState(i) - position->getElement(i));

		if (state->getStateProperties()->getPeriodicity(i) && difference > 0.5)
		{
			difference = 1 - difference;
		}

		exponent += pow(difference / (sigma[i] * gridScale[i]), 2) / 2;
	}
//	printf(" Factor %f \n", my_exp(- exponent));

	return my_exp(- exponent);
}

void CRBFFeatureCalculator::getFeatureDerivationX(int feature, CStateCollection *stateCol, CMyVector *targetVector)
{
	getFeaturePosition(feature, activePosition);
	CState *state = stateCol->getState();
	rlt_real factor = getFeatureFactor(state, activePosition);
	
	for (unsigned int i = 0; i < this->numDim; i ++)
	{
		targetVector->setElement(dimensions[i],  factor * (- state->getSingleStateDifference(dimensions[i], activePosition->getElement(i))) / pow(sigma[i], 2));
	}
}


CLinearInterpolationFeatureCalculator::CLinearInterpolationFeatureCalculator(unsigned int numDim, unsigned int dimensions[], unsigned int partitions[], rlt_real offsets[]) : CLinearMultiFeatureCalculator(numDim, dimensions, partitions, offsets, 0)
{
	initAreaSize();
}

CLinearInterpolationFeatureCalculator::~CLinearInterpolationFeatureCalculator()
{
}

rlt_real CLinearInterpolationFeatureCalculator::getFeatureFactor(CState *state, CMyVector *featPos)
{
	rlt_real factor = 1.0;
	
	for (unsigned int i = 0; i < numDim; i++)
	{

		rlt_real difference = fabs(state->getNormalizedContinuousState(i) - featPos->getElement(i));

		if (state->getStateProperties()->getPeriodicity(i) && difference > 0.5)
		{
			difference = 1 - difference;
		}
		factor *= 1 - difference * partitions[i];
	}
	return factor;
}

void CLinearInterpolationFeatureCalculator::initAreaSize()
{
	for (unsigned int i = 0; i < numDim; i ++)
	{
		areaSize[i] = 2;
	}
	calcNumActiveFeatures();
}






CSingleStateFeatureCalculator::CSingleStateFeatureCalculator(int dimension, int numPartitions, rlt_real *partitions, int numActiveFeatures) : CFeatureCalculator(numPartitions, numActiveFeatures)
{
	this->dimension = dimension;
	this->partitions = new rlt_real[numPartitions];
	memcpy(this->partitions, partitions, sizeof(rlt_real) * numPartitions);

	originalState = NULL;
}

CSingleStateFeatureCalculator::~CSingleStateFeatureCalculator()
{
	delete partitions;
}

void CSingleStateFeatureCalculator::getModifiedState(CStateCollection *stateCol, CState *featState)
{
	CState *state = stateCol->getState(originalState);
	CStateProperties *properties = state->getStateProperties();
	rlt_real contState = state->getContinuousState(dimension);
	rlt_real width = properties->getMaxValue(dimension) - properties->getMinValue(dimension);


	if (contState < partitions[0] && properties->getPeriodicity(dimension))
	{
		contState += width;
	}

	unsigned int activeFeature = 0, featureIndex = 0;
	unsigned int featureNum = 0, realfeatureNum = 0;

	rlt_real part = partitions[activeFeature];

	while (activeFeature < numFeatures && part < contState)
	{
		activeFeature++;

		part = partitions[activeFeature];

		if (part < partitions[0])
		{
			assert(properties->getPeriodicity(dimension));
			part += width;
		}
	}

	
	if (activeFeature == numFeatures && !properties->getPeriodicity(dimension))
	{
		featureNum ++;
	}
	
	for (; realfeatureNum < this->numActiveFeatures; realfeatureNum++, featureNum ++)
	{
		if (featureNum % 2 == 0)
		{
			featureIndex = activeFeature + featureNum / 2;
		}
		else
		{
			featureIndex = activeFeature - (featureNum / 2 + 1);
		}

		if (state->getStateProperties()->getPeriodicity(dimension))
		{
			featureIndex = featureIndex % numFeatures;
		}
		
		if (featureIndex >= 0 && featureIndex < numFeatures)
		{
			featState->setDiscreteState(realfeatureNum, featureIndex);
			featState->setContinuousState(realfeatureNum, getFeatureFactor(featureIndex, contState, state->getSingleStateDifference(dimension, partitions[featureIndex])));
		}
		else
		{
			featState->setContinuousState(realfeatureNum, 0.0);
			featState->setDiscreteState(realfeatureNum, 0);
		}
	}
	this->normalizeFeatures(featState);
}


CSingleStateRBFFeatureCalculator::CSingleStateRBFFeatureCalculator(int dimension, int numPartitions, rlt_real *partitions, int numActiveFeatures, rlt_real *l_sigma) : CSingleStateFeatureCalculator(dimension, numPartitions, partitions, numActiveFeatures)
{
	this->sigma = new rlt_real[numPartitions];
	memcpy(this->sigma, l_sigma, sizeof(rlt_real) * numPartitions);


	addType(FEATURESTATEDERIVATIONX);
}


CSingleStateRBFFeatureCalculator::CSingleStateRBFFeatureCalculator(int dimension, int numPartitions, rlt_real *partitions, int numActiveFeatures) : CSingleStateFeatureCalculator(dimension, numPartitions, partitions, numActiveFeatures)
{
	this->sigma = new rlt_real[numPartitions];

	if (numPartitions > 1)
	{
		sigma[0] = (partitions[1] - partitions[0]) / 2;
		sigma[numPartitions - 1] = (partitions[numPartitions - 1] - partitions[numPartitions - 2]) / 2;

		for (int i = 1; i < numPartitions - 1; i ++)
		{
			sigma[i] = (partitions[i + 1] - partitions[i - 1]) / 4;
		}
	}

	addType(FEATURESTATEDERIVATIONX);
}

void CSingleStateRBFFeatureCalculator::setSigma(int i, rlt_real l_sigma)
{
	this->sigma[i] = l_sigma;
}

rlt_real CSingleStateRBFFeatureCalculator::getSigma(int i)
{
	return sigma[i];
}

void CSingleStateRBFFeatureCalculator::getFeatureDerivationX(int feature, CStateCollection *stateCol, CMyVector *targetVector)
{
	rlt_real distance = stateCol->getState(originalState)->getSingleStateDifference(dimension, partitions[feature]);

	//rlt_real dev = my_exp(- pow(distance / sigma, 2) / 2) * distance * (- 1 / pow(sigma,2));
	//targetVector->setElement(dimension, targetVector->getElement(dimension) + dev);
}

rlt_real CSingleStateRBFFeatureCalculator::getFeatureFactor(int partition, rlt_real contState, rlt_real difference)
{
	rlt_real distance = fabs(difference);

	return my_exp(- pow(distance / sigma[partition], 2) / 2) ;
}


CSingleStateLinearInterpolationFeatureCalculator::CSingleStateLinearInterpolationFeatureCalculator(int dimension, int numPartitions, rlt_real *partitions) : CFeatureCalculator(numPartitions, 2)
{
	this->dimension = dimension;
	this->partitions = new rlt_real[numPartitions];
	memcpy(this->partitions, partitions, sizeof(rlt_real) * numPartitions);

	originalState = NULL;

	addType(FEATURESTATEDERIVATIONX);
}

CSingleStateLinearInterpolationFeatureCalculator::~CSingleStateLinearInterpolationFeatureCalculator()
{
	delete partitions;
}

void CSingleStateLinearInterpolationFeatureCalculator::getModifiedState(CStateCollection *stateCol, CState *featState)
{
	CState *state = stateCol->getState(originalState);
	rlt_real contState = state->getContinuousState(dimension);
	unsigned int activeFeature = 0;
	rlt_real k = 0.0;
	CStateProperties *stateProp = state->getStateProperties();

	while (activeFeature < numFeatures && partitions[activeFeature] < contState)
	{
		activeFeature++;
	}

	if (!stateProp->getPeriodicity(dimension) && (activeFeature == numFeatures || activeFeature == 0))
	{
		if (activeFeature == numFeatures)
		{
			activeFeature = numFeatures - 1;
		}
		featState->setDiscreteState(0, activeFeature);
		featState->setContinuousState(0, 1.0);
		featState->setDiscreteState(1, 0);
		featState->setContinuousState(1, 0.0);
	}
	else
	{
		if (stateProp->getPeriodicity(dimension) && (activeFeature == numFeatures || activeFeature == 0))
		{
			activeFeature = activeFeature % numFeatures;
			k = state->getSingleStateDifference(dimension, partitions[activeFeature]) / stateProp->getMirroredStateValue(dimension, partitions[activeFeature] - partitions[(activeFeature - 1) % numFeatures]);
			
		}
		else
		{
			k = (partitions[activeFeature] - contState) / (partitions[activeFeature] - partitions[activeFeature - 1]);
		}
		featState->setDiscreteState(0, activeFeature);
		featState->setContinuousState(0, 1.0 - k);
		featState->setDiscreteState(1, (activeFeature - 1) % numFeatures);
		featState->setContinuousState(1, k);
	}
}

void CSingleStateLinearInterpolationFeatureCalculator::getFeatureDerivationX(int feature, CStateCollection *stateCol, CMyVector *targetVector)
{
	rlt_real distance = fabs(stateCol->getState(originalState)->getSingleStateDifference(dimension, partitions[feature]));

	rlt_real dev = 0;
	
	if (distance > 0)
	{
		dev = - 1.0 /  getMirroredStateValue(dimension, partitions[feature] - partitions[(feature + 1) % numFeatures]);
	}
	else
	{
		dev = 1.0 / getMirroredStateValue(dimension, partitions[feature] - partitions[(feature + 1) % numFeatures]);
	}

	targetVector->setElement(dimension, dev);
}

CFeatureStateNNInput::CFeatureStateNNInput(CFeatureCalculator *l_featureStateCalc) : CStateModifier(l_featureStateCalc->getNumFeatures(), 0)
{
	this->featureStateCalc = l_featureStateCalc;
	this->featureState = new CState(l_featureStateCalc);	
}

CFeatureStateNNInput::~CFeatureStateNNInput()
{
	delete featureState;
}


void CFeatureStateNNInput::getModifiedState(CStateCollection *stateCol, CState *state)
{
	CState *featureStateBuff;
	state->initVector(0.0);

	if (stateCol->isMember(featureStateCalc))
	{
		featureStateBuff = stateCol->getState(featureStateCalc);
	}
	else
	{
		featureStateCalc->getModifiedState(stateCol, featureState);
		featureStateBuff = featureState;
	}

	for (int i = 0;i < featureStateCalc->getNumActiveFeatures(); i++)
	{
		state->setContinuousState(featureStateBuff->getDiscreteState(i), featureStateBuff->getContinuousState(i));
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区高清| 国产综合久久久久久久久久久久| 丝袜国产日韩另类美女| 久久精品国产精品青草| 国产成人啪午夜精品网站男同| 成人av中文字幕| 欧美日韩一本到| 精品蜜桃在线看| 亚洲男帅同性gay1069| 午夜欧美一区二区三区在线播放| 精品一区二区在线视频| av激情综合网| 91精品国产丝袜白色高跟鞋| 国产午夜精品在线观看| 亚洲va在线va天堂| 成人开心网精品视频| 欧美日韩视频不卡| 亚洲国产精品精华液2区45| 亚洲妇熟xx妇色黄| 成人动漫一区二区在线| 91精品久久久久久久99蜜桃| 亚洲国产精品ⅴa在线观看| 香蕉加勒比综合久久| 国产不卡高清在线观看视频| 欧美日本在线播放| 国产精品传媒在线| 国内久久精品视频| 欧美三级电影网站| 中日韩av电影| 麻豆国产精品777777在线| 91麻豆精品视频| 久久综合久色欧美综合狠狠| 性欧美大战久久久久久久久| 91丨porny丨首页| 亚洲精品一区二区三区影院 | 国产精一品亚洲二区在线视频| 色综合久久综合网97色综合| 久久女同互慰一区二区三区| 首页综合国产亚洲丝袜| 色吧成人激情小说| 国产午夜精品在线观看| 麻豆成人久久精品二区三区红 | 亚洲国产日韩在线一区模特| 福利电影一区二区三区| 日韩精品一区二区在线观看| 亚洲国产精品久久久男人的天堂| 白白色亚洲国产精品| 精品国产精品网麻豆系列| 天堂蜜桃一区二区三区 | 亚洲综合区在线| 成人av第一页| 国产三级欧美三级| 精品在线亚洲视频| 欧美一区二区三区影视| 香蕉久久夜色精品国产使用方法| 91官网在线免费观看| 国产精品国产三级国产aⅴ原创 | 国产欧美精品区一区二区三区| 精品在线亚洲视频| 日韩精品中文字幕一区二区三区| 日韩黄色免费电影| 91精品久久久久久久久99蜜臂| 亚洲成人黄色影院| 精品视频色一区| 亚洲一级二级在线| 欧美日韩亚洲国产综合| 亚洲成人av一区二区三区| 欧美午夜电影一区| 午夜一区二区三区在线观看| 91久久久免费一区二区| 亚洲视频一区二区免费在线观看| 成人精品鲁一区一区二区| 国产欧美日韩在线视频| 国产大陆精品国产| 中文在线资源观看网站视频免费不卡 | 成人福利电影精品一区二区在线观看| 久久久精品中文字幕麻豆发布| 激情国产一区二区 | 国产寡妇亲子伦一区二区| 精品国产第一区二区三区观看体验| 久久精品国产精品亚洲综合| 精品国产乱码久久久久久图片 | www激情久久| 国产高清成人在线| 国产精品福利在线播放| 99精品欧美一区二区三区综合在线| 亚洲视频一二区| 欧美日韩精品一区二区在线播放| 亚洲第一成人在线| 欧美一二三四在线| 精品一区二区综合| 国产精品全国免费观看高清| 99热这里都是精品| 亚洲国产精品久久久男人的天堂| 337p亚洲精品色噜噜狠狠| 国产真实乱子伦精品视频| 日本一区二区三区四区| 一本大道久久a久久精二百| 亚洲电影一区二区| 26uuu国产电影一区二区| 成人av午夜电影| 亚洲主播在线观看| 精品人在线二区三区| www.性欧美| 同产精品九九九| 国产人妖乱国产精品人妖| 色综合色狠狠天天综合色| 三级亚洲高清视频| 国产亚洲综合在线| 欧美午夜精品久久久久久孕妇| 老司机免费视频一区二区| 国产精品卡一卡二| 欧美久久久久久久久久| 韩国精品久久久| 亚洲欧洲综合另类在线| 日韩欧美国产1| 99精品国产视频| 日本不卡一区二区| 亚洲欧洲另类国产综合| 欧美巨大另类极品videosbest | 国产视频一区二区在线| 91国产成人在线| 国产制服丝袜一区| 亚洲午夜一区二区三区| 久久久99免费| 欧美人妇做爰xxxⅹ性高电影| 国产乱人伦偷精品视频免下载| 亚洲人亚洲人成电影网站色| 日韩美女视频在线| 日本丶国产丶欧美色综合| 狠狠色丁香婷综合久久| 一区二区三区加勒比av| 欧美精品一区二区三区四区 | 日本亚洲三级在线| 国产精品久久毛片| 欧美一区二区啪啪| 色综合久久综合中文综合网| 韩国精品在线观看| 日日夜夜精品视频免费| 自拍偷拍国产精品| 久久久久久久久蜜桃| 欧美肥胖老妇做爰| 91免费在线播放| 国产美女视频91| 日韩精品一二三四| 一区二区三区在线观看欧美| 久久久99免费| 精品女同一区二区| 欧美一区永久视频免费观看| 色综合天天综合狠狠| 国产成人亚洲综合a∨婷婷| 日本网站在线观看一区二区三区| 亚洲人被黑人高潮完整版| 久久精品欧美一区二区三区不卡| 91精品国产乱码久久蜜臀| 色999日韩国产欧美一区二区| 丰满亚洲少妇av| 激情都市一区二区| 蜜臀av一区二区在线观看 | 欧美一区二视频| 欧美最猛黑人xxxxx猛交| 不卡一区二区中文字幕| 国产精品18久久久久| 久久99国产精品麻豆| 天天色综合天天| 婷婷综合另类小说色区| 亚洲国产成人porn| 亚洲一区二区偷拍精品| 亚洲美女精品一区| 中文字幕一区二区三中文字幕| 国产欧美日韩在线| 国产亚洲精久久久久久| 国产喂奶挤奶一区二区三区| 欧美精品一区二区精品网| 精品日本一线二线三线不卡| 日韩视频一区二区三区| 欧美日本一区二区在线观看| 欧美日韩电影在线播放| 欧美色精品在线视频| 欧美亚洲一区二区在线观看| 91成人免费在线| 欧美一a一片一级一片| 日本久久一区二区三区| 色哟哟国产精品| 欧美亚洲综合久久| 欧美日韩三级一区二区| 91麻豆精品国产91久久久久久| 欧美三电影在线| 欧美日本视频在线| 91精品国产91久久综合桃花 | 免费在线看一区| 免费观看日韩av| 麻豆精品一区二区av白丝在线| 韩国成人在线视频| 国产高清无密码一区二区三区| 成人h版在线观看| 在线中文字幕一区二区| 欧美精品xxxxbbbb| 日韩欧美亚洲国产精品字幕久久久| 欧美一级欧美三级|