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

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

?? lrn_pifa.c

?? 這個(gè)代碼是policy iteration算法關(guān)于強(qiáng)化學(xué)習(xí)的. 請您用winzip 解壓縮
?? C
?? 第 1 頁 / 共 2 頁
字號:
		}
#endif

		cont_grad = 1;
		cnt = 0;
		for ( k = 1; k < Episodes_Per_Parameter_Update && (cont_grad == 1); k++ )
		{
			for ( j = 0; j < num_of_gaussians && (cont_grad == 1); j++ )
			{
				cont_grad = modes_visited[k][j];
			}
			if (cont_grad == 1)
				cnt++;
		}
		cnt++;

		Q_a = (double **)My_Malloc((long)cnt  * sizeof(double*));
		for ( k = 0; k < cnt; k++ )
		{
			Q_a[k] = (double *)My_Malloc((long)num_of_gaussians  * sizeof(double));
		}

		Update_Function_Coefficients(cnt,Q_a);

		Update_Policy_Parameters_Using_FA(cen, var);
		

#ifdef UPDATE_POLICY_PARAMETERS
		{
			double  tmax;
			{ // 
				char error_text[256];
				FILE *fp;
				
				if ((fp = fopen("gf.txt", "a")) == NULL)
				{
					sprintf(error_text, "Couldn't open \"%s\"\n", "gf.txt");
					My_Error(error_text);
				}
				for ( j = 0; j < num_of_gaussians; j++ )
				{
					for ( i = 0; i < dim; i++ )
					{
						fprintf(fp,"%g\n",drhodc[j][i]);
						fprintf(fp,"%g\n",drhodv[j][i]);
					}
				}
				fclose(fp);
			}
			for ( j = 0; j < num_of_gaussians; j++ )
			{
				for ( i = 0; i < dim; i++ )
				{
					if ( tdc < fabs(drhodc[j][i]) )
					{
						tdc = fabs(drhodc[j][i]);
					}
					if ( tdv < fabs(drhodv[j][i]) )
					{
						tdv = fabs(drhodv[j][i]);
					}
				}
			}
			
			if ( tdc > tdv )
			{
				tmax = tdc;
			}
			else
			{
				tmax = tdv;
			}
			
			
			for ( j = 0; j < num_of_gaussians; j++ )
			{
				for ( i = 0; i < dim; i++ )
				{
					drhodc[j][i] = drhodc[j][i] / tmax;
					drhodv[j][i] = drhodv[j][i] / tmax;
				}
			}
			
#ifdef GRAPHICS
			Update_Boundaries = 1;
#endif
			for ( j = 0; j < num_of_gaussians; j++ )
			{
				for ( i = 0; i < dim; i++ )
				{
					cen[j][i] = cen[j][i] + alpha * drhodc[j][i];
					var[j][i] = var[j][i] + alpha * drhodv[j][i];
					if ( var[j][i] < 0.01)
						var[j][i] = 0.01;
				}
			}
		}
#else
		{ // 
			char error_text[256];
			FILE *fp;
			
			if ((fp = fopen("gf.txt", "a")) == NULL)
			{
				sprintf(error_text, "Couldn't open \"%s\"\n", "gf.txt");
				My_Error(error_text);
			}
			for ( j = 0; j < num_of_gaussians; j++ )
			{
				for ( i = 0; i < dim; i++ )
				{
					fprintf(fp,"%g %g ",drhodc[j][i],drhodv[j][i]);
				}
			}
			fprintf(fp,"\n");
			fclose(fp);
		}
#endif
		

		for ( k = 0; k < cnt; k++ )
		{
			free(Q_a[k]);
		}
		free(Q_a);

		for ( k = 0; k < total_states_visited; k++ )
		{
			free(states_visited[k]);
		}
		free(states_visited);

		for ( k = 0; k < Episodes_Per_Parameter_Update+1; k++ )
		{
			free(Q[k]);
			free(p_pi[k]);

			for ( i = 0; i < num_of_gaussians; i++ )
			{
				for ( j = 0; j < dim; j++ )
				{
					free(dpdc[k][i][j]);
					free(dpdv[k][i][j]);
				}
				free(dpdc[k][i]);
				free(dpdv[k][i]);
			}
			free(dpdc[k]);
			free(dpdv[k]);
		}
		free(Q);
		free(dpdc);
		free(dpdv);
		free(p_pi);
		
		for ( i = 1; i < Episodes_Per_Parameter_Update; i++ )
		{
			free(modes_visited[i]);
		}
		free(modes_visited);

		Update_Policy_Parameters = 0;
		Step_To_Execute_Mode = -1;
		Mode_Execute = -1;

#ifdef UPDATE_POLICY_PARAMETERS
		Reset_Random_Seed_For_Paths();
#endif
		Num_of_Grad_Calculations++;
		if ( Num_of_Grad_Calculations > Max_Num_Grad_Calc )
		{
			exit(1);
		}
	}

}



void Update_Policy_Parameters_Using_FA(double **cen, double **var)
{
	int step,i,q,n,j;
	double g_tot, *g, *lpi, Qt;

	g = (double *)My_Malloc((long)num_of_gaussians  * sizeof(double));
	lpi = (double *)My_Malloc((long)num_of_gaussians  * sizeof(double));
	
	for ( step = 0; step < total_states_visited; step++ )
	{
		g_tot = 0.0;
		for ( i = 0; i < num_of_gaussians; i++ )
		{
			g[i] = evaluate_gauss(dim, states_visited[step], cen[i], var[i]);
			g_tot = g_tot + g[i];
		}
		for ( i = 0; i < num_of_gaussians; i++ )
		{
			lpi[i] = g[i]/g_tot;
			if ( lpi[i] < MIN_PI )
			{
				lpi[i] = MIN_PI;
			}
		}

		for ( q = 0; q < num_of_gaussians; q++ )
		{
			avaluate_total_gradient(dim, states_visited[step], cen[q], var[q], 
				dpdc_t, dpdv_t, wrk, q, g, num_of_gaussians, g_tot);

			Qt = 0.0;
			for ( i = 0; i < dim; i++ )
			{
				for ( n = 0; n < num_of_gaussians; n++ )
				{
					Qt = Qt + drhodc_coeff[q][i][n] * dpdc_t[i][n] / lpi[n];
					Qt = Qt + drhodv_coeff[q][i][n] * dpdv_t[i][n] / lpi[n];
				}
			}

			for ( i = 0; i < dim; i++ )
			{
				for ( n = 0; n < num_of_gaussians; n++ )
				{
					drhodc[q][i] = drhodc[q][i] + Qt * dpdc_t[i][n];
					drhodv[q][i] = drhodv[q][i] + Qt * dpdv_t[i][n];
				}
			}
			
		}
	}

	
	for ( j = 0; j < num_of_gaussians; j++ )
	{
		for ( i = 0; i < dim; i++ )
		{
			drhodc[j][i] = drhodc[j][i] / total_states_visited;
			drhodv[j][i] = drhodv[j][i] / total_states_visited;
		}
	}

	free(g);
	free(lpi);
}

void Update_Function_Coefficients(int nums, double **Q_a)
{
	double err, Qt, err_sq_before_lrn, err_sq_after_lrn;
	int i,j,k,n,cnt;
	
	int rows,cols;

	double **A,**AtA,*b,*Atb,*w, *S, *c;

	rows = nums-1;
	cols = 2 * num_of_gaussians * dim;

	/*** allocate memory ***/
	b = (double *)My_Malloc((long)(rows)  * sizeof(double));
	A = (double **)My_Malloc((long)rows  * sizeof(double*));
	for ( i = 0; i < rows; i++ )
	{
		A[i] = (double *)My_Malloc((long)cols  * sizeof(double));
	}
	w = (double *)My_Malloc((long)(2*cols)  * sizeof(double));
	S = (double *)My_Malloc((long)(2*cols)  * sizeof(double));
	c = (double *)My_Malloc((long)(2*cols)  * sizeof(double));
	Atb = (double *)My_Malloc((long)(2*cols)  * sizeof(double));
	AtA = (double **)My_Malloc((long)(2*cols)  * sizeof(double*));
	for ( i = 0; i < (2*cols); i++ )
	{
		AtA[i] = (double *)My_Malloc((long)cols  * sizeof(double));
	}
	/****************************/

	/* first update the policy parameters */
	err_sq_before_lrn = 0.0;
	for ( j = 0; j < num_of_gaussians; j++ )
	{
		for ( k = 1; k < nums; k++ )
		{
			cnt = 0;
			Qt = 0.0;
			for ( i = 0; i < dim; i++ )
			{
				for ( n = 0; n < num_of_gaussians; n++ )
				{
					Qt = Qt + drhodc_coeff[j][i][n] * dpdc[k][j][i][n] / p_pi[k][n];
					A[k-1][cnt++] = dpdc[k][j][i][n] / p_pi[k][n];
					Qt = Qt + drhodv_coeff[j][i][n] * dpdv[k][j][i][n] / p_pi[k][n];
					A[k-1][cnt++] = dpdv[k][j][i][n] / p_pi[k][n];
				}
			}
			err = Q[k][j] - Qt;
			err_sq_before_lrn = err_sq_before_lrn + err * err;
			b[k-1] = err;
		}

		for ( i = 0; i < cols; i++ )
		{
			for ( n = 0; n <= i; n++ )
			{
				AtA[i][n] = 0.0;
				for ( k = 0; k < rows; k++ )
				{
					AtA[i][n] = AtA[i][n] + A[k][i]*A[k][n];
					if ( _isnan(AtA[i][n]))
					{
						My_Error("Not a Number!");
					}
				}
			}
			Atb[i] = 0.0;
			for ( k = 0; k < rows; k++ )
			{
				Atb[i] = Atb[i] + A[k][i]*b[k];
			}
		}

		
		for ( i = 0; i < cols; i++ )
		{
			for ( n = i+1; n < cols; n++ )
			{
				AtA[i][n] = AtA[n][i];
			}
		}
		

		Solve_System(AtA, Atb, w, S, c, cols);
		cnt = 0;
		for ( i = 0; i < dim; i++ )
		{
			for ( n = 0; n < num_of_gaussians; n++ )
			{
				drhodc_coeff[j][i][n] = drhodc_coeff[j][i][n] + w[cnt++];
				drhodv_coeff[j][i][n] = drhodv_coeff[j][i][n] + w[cnt++];
			}
		}
	}
	
	/* calculate the new approximations */
	err_sq_after_lrn = 0.0;
	for ( k = 1; k < nums; k++ )
	{
		for ( j = 0; j < num_of_gaussians; j++ )
		{
			Qt = 0.0;
			for ( i = 0; i < dim; i++ )
			{
				for ( n = 0; n < num_of_gaussians; n++ )
				{
					Qt = Qt + drhodc_coeff[j][i][n] * dpdc[k][j][i][n] / p_pi[k][n];
					Qt = Qt + drhodv_coeff[j][i][n] * dpdv[k][j][i][n] / p_pi[k][n];
				}
			}

			Q_a[k][j] = Qt;
			err = Q[k][j] - Qt;
			err_sq_after_lrn = err_sq_after_lrn + err * err;
		}
	}

	/*** free up the memory ***/
	for ( i = 0; i < rows; i++ )
	{
		free(A[i]);
	}
	free(A);
	free(b);
	free(Atb);
	free(w);
	free(S);
	free(c);

	for ( i = 0; i < (2*cols); i++ )
	{
		free(AtA[i]);
	}
	free(AtA);
	/***************************/

}


void Solve_System(double **A, double *b, double *w, 
				  double *S2, double *c, int rows)
{
	void svd(double **A, double *S2, int n);
	int i, j, k;
	double tmp;
	
	svd(A, S2, rows);
	
	for (i = rows-1; i>=0; i--)                              /* "invert" S2 */
    {
		if (S2[i]*MAX_SV_RATIO > S2[0]) 
		{                                           /* SV large enough? */
			S2[i] = 1.0/S2[i];
		}
		else
			S2[i] = 0.0;                                /* delete direction */
    }
	
	for (i=0; i< rows; i++) 
    {                                 /* compute invA = V*invS2*(US)' */
		for (j=0; j< rows; j++) 
		{
			for (tmp=0.0, k=0; k < rows; k++)
				tmp += A[i+rows][k]*A[j][k]*S2[k];
			c[j] = tmp;
		}
		for (j=0; j< rows; j++) 
			A[i+rows][j] = c[j];  /* copy "c" into "A" */
    }
	
	for (i=0; i < rows; i++)             /* compute w = invA*b */
    {
		for (tmp=0.0, j=0; j< rows; j++)
			tmp += A[i+rows][j]*b[j];
		w[i] = tmp;
    }
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线播放一区| 91香蕉视频污| 色综合天天性综合| 91麻豆精品国产自产在线观看一区 | 精久久久久久久久久久| 91网站在线播放| 日韩精品一区二区在线观看| 国产精品国产自产拍高清av| 免费在线观看不卡| 色欧美乱欧美15图片| 久久精品视频免费| 久久精品国产精品青草| 欧美日韩精品福利| 亚洲丝袜自拍清纯另类| 久久国产麻豆精品| 91精品国产综合久久精品app | 成人精品在线视频观看| 5858s免费视频成人| 亚洲女爱视频在线| 成人av在线网站| 精品国产乱码久久久久久1区2区 | 欧美一区日韩一区| 1000精品久久久久久久久| 韩日欧美一区二区三区| 欧美日韩久久不卡| 亚洲一区视频在线| 91女人视频在线观看| 国产精品网曝门| 国产又黄又大久久| 久久久久国产一区二区三区四区| 毛片一区二区三区| 欧美精品粉嫩高潮一区二区| 亚洲国产成人tv| 欧美午夜精品一区| 一区二区三区高清| 欧美日韩国产三级| 亚洲第一二三四区| 欧美一区二区三区四区久久| 婷婷成人综合网| 日韩欧美高清dvd碟片| 日韩av在线播放中文字幕| 欧美精品日韩一区| 奇米色一区二区| 日韩欧美亚洲另类制服综合在线| 九九视频精品免费| 久久九九影视网| 成人午夜大片免费观看| 亚洲免费成人av| 欧美午夜精品久久久久久孕妇| 亚洲国产精品自拍| 91精品午夜视频| 国产美女av一区二区三区| 久久久久高清精品| 91丝袜美腿高跟国产极品老师| 一区二区三区国产豹纹内裤在线| 欧美精品少妇一区二区三区 | 亚洲国产日韩一区二区| 欧美人妖巨大在线| 国产一区欧美一区| 国产精品国产三级国产a| 欧美在线一区二区| 美国精品在线观看| 中文字幕一区二区三区在线不卡| 欧美专区日韩专区| 久久精品噜噜噜成人av农村| 国产精品女人毛片| 欧美喷水一区二区| 成人性视频免费网站| 亚洲午夜精品在线| 欧美激情在线一区二区| 欧美视频一区二区在线观看| 久久国产精品99精品国产| 亚洲视频中文字幕| 欧美r级在线观看| 91影视在线播放| 成人精品视频.| 婷婷成人激情在线网| 久久夜色精品一区| 欧美性受极品xxxx喷水| 国产精品18久久久久久久网站| 亚洲一二三四久久| 国产日韩欧美一区二区三区综合| 欧美撒尿777hd撒尿| 成人污污视频在线观看| 秋霞国产午夜精品免费视频| 国产精品毛片无遮挡高清| 91精品国产一区二区人妖| 91美女精品福利| 国产一区二区三区高清播放| 图片区小说区国产精品视频| 国产精品高清亚洲| 精品成人在线观看| 欧美日本视频在线| 日本国产一区二区| 粉嫩av一区二区三区| 久久er99热精品一区二区| 一区二区三区欧美日| 国产日韩欧美激情| 欧美va天堂va视频va在线| 欧美日韩高清在线播放| 一本到不卡免费一区二区| 国产黄色精品视频| 九色porny丨国产精品| 日本一道高清亚洲日美韩| 亚洲男人天堂av| 国产精品网站在线| 国产亚洲欧美日韩在线一区| 欧美zozo另类异族| 91精选在线观看| 欧美一区二区私人影院日本| 欧美体内she精视频| 色婷婷av一区二区三区gif| 高清成人免费视频| 国产91精品精华液一区二区三区 | 亚洲综合区在线| 亚洲欧美另类小说视频| 国产精品久久福利| 中文欧美字幕免费| 国产色婷婷亚洲99精品小说| 久久久噜噜噜久久中文字幕色伊伊| 精品美女被调教视频大全网站| 日韩精品一区二区三区中文不卡 | 91久久精品一区二区三| 色综合视频在线观看| 91久久一区二区| 日本久久一区二区| 欧美色综合网站| 欧美群妇大交群中文字幕| 欧美人妇做爰xxxⅹ性高电影| 欧美一区二区三区系列电影| 日韩三级在线免费观看| 2020国产成人综合网| 国产网站一区二区三区| 国产精品国产自产拍高清av| 亚洲精品视频自拍| 亚洲国产成人tv| 精品一区二区三区免费视频| 久久99久久99| 成人免费av在线| 欧美在线色视频| 日韩欧美国产不卡| 国产蜜臀av在线一区二区三区| 亚洲精品成人少妇| 国产一区二区在线观看视频| 国产激情精品久久久第一区二区| 成人av电影免费在线播放| 欧美在线999| 日韩精品一区二区三区四区视频| 久久精子c满五个校花| 依依成人综合视频| 青青草原综合久久大伊人精品优势 | 欧美一区二区三区影视| 国产视频一区二区在线观看| 日韩毛片高清在线播放| 美国毛片一区二区| a级精品国产片在线观看| 欧美日韩在线三级| 国产欧美日韩激情| 亚洲二区视频在线| 国产精品一区在线观看你懂的| 日本韩国精品一区二区在线观看| 欧美大尺度电影在线| 国产精品久久国产精麻豆99网站| 免费看欧美女人艹b| av不卡在线播放| 欧美一区二区三区四区在线观看| 一区二区中文字幕在线| 奇米精品一区二区三区在线观看一| 91影院在线观看| 2023国产精华国产精品| 午夜视频在线观看一区| 成人av网站免费观看| 日韩欧美视频一区| 亚洲人精品一区| 国产成人在线观看| 日韩丝袜美女视频| 亚洲国产成人高清精品| av综合在线播放| 国产丝袜欧美中文另类| 三级久久三级久久久| 91蜜桃在线免费视频| 欧美国产一区在线| 美女视频黄 久久| 欧美美女一区二区在线观看| 中文字幕一区在线| 国产不卡视频一区二区三区| 久久综合九色综合97_久久久| 丝袜亚洲精品中文字幕一区| aaa欧美日韩| 国产精品久久久久国产精品日日| 久久精品国产精品亚洲精品| 日韩一区二区电影网| 午夜精品久久久久久| 欧美性高清videossexo| 亚洲另类在线一区| 91麻豆123| 亚洲精品国产一区二区精华液| 91亚洲国产成人精品一区二三| 国产欧美视频一区二区| 国产成人av一区二区三区在线|