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

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

?? matrixpso.c

?? 用于邏輯電路設計的PSO算法代碼,代碼簡單明了
?? C
字號:
/********************************************************/
/*					CINVESTAV - IPN						*/
/*			Departamento de Ingener韆 El閏trica			*/
/*					Secci髇 Computaci髇					*/
/*														*/	
/*				   Computacion Evolutiva				*/
/*														*/
/*					Erika Hernandez Luna				*/
/*			 eluna@computacion.cs.cinvestav.mx			*/
/*					  2 / agosto / 2003					*/
/*														*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* Archivo: estadisticas.c								*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* Descripci髇: Biblioteca para llevar a cabo el manejo	*/
/* de la matriz que representa a un circuito			*/
/********************************************************/

#include <math.h>
#include <string.h>
#include "matrixpso.h"
#include "circuitos.h"
#include "psomatrixcircuit.h"

/*Reserva memoria para las variables globales de la decodificacion*/
void reservaMemoriaMatriz(void)
{
	unsigned i;

	entrada1 = memVarX;
	entrada2 = memVarX;
	tipoG = memVarX;
	salida = (unsigned *)malloc(sizeof(unsigned)*numReng);
	cuentaG = (unsigned *)malloc(sizeof(unsigned)*tMat);
	inTT = (unsigned **)malloc(sizeof(unsigned *)*numRengTT);

	for(i=0; i<numRengTT; i++)
		inTT[i] = (unsigned *)malloc(sizeof(unsigned)*numReng);
}

/*Libera memoria para las variables globales de la decodificacion*/
void liberaMemoriaMatriz(void)
{
	unsigned i;

	free(entrada1);
	free(entrada2);
	free(tipoG);
	free(salida);
	free(cuentaG);
	
	for(i=0; i<numRengTT; i++)
		inTT[i] = (unsigned *)malloc(sizeof(unsigned)*numReng);
	free(inTT);
}

/*Decodifica la matriz en los valores de las variables*/
void decodifica(matrix M)
{
	int k;
	unsigned i,j,num,in;

	for(i=0,j=0,in=0; i<nVar; i++){

		if(representacion != BINARIA)
			num = M[i];
		else{
			num = 0;
                          			for (k=bitVariable[i]-1; k>=0; k--,j++)
				if(M[j]) num += (unsigned)pow(2,k);
		}

		switch(i%3){
			case 0:	/*Entrada 1*/
				entrada1[in] = (num%numReng);
				break;
			case 1:	/*Entrada 2*/
				entrada2[in] = (num%numReng);
				break;
			case 2:	/*Tipo*/
				tipoG[in++] = (num%numGates);
		}
	}
}

/*Evalua a la matriz y obtiene el n鷐ero de violaciones al circuito pedido asi como el n鷐ero de WIRE's*/
void evalua(matrix M, unsigned *numIgual)
{
	unsigned i,j,k,in;

	*numIgual = 0;
	decodifica(M);

	for(i=0; i<numRengTT; i++)
		for(j=0; j<numReng; j++)
			inTT[i][j] = j<numEntradas ? entradaTT[i][j] : inTT[i][j-numEntradas];	

	for(i=0; i<numRengTT; i++){
		for(j=0,in=0; j<tMat; j++){
			switch(tipoG[j]) {
				case AND : 
					salida[in] = inTT[i][entrada1[j]] & inTT[i][entrada2[j]];
					break;
				case OR : 
					salida[in] = inTT[i][entrada1[j]] | inTT[i][entrada2[j]];
					break;
				case NOT : 
				case NOT1:
					salida[in] = inTT[i][entrada1[j]] ? 0 : 1;
					break;
				case WIRE :
				case WIRE1:
					salida[in] = inTT[i][entrada1[j]];
					break;
				case XOR : 
				case XOR1 : 
					salida[in] = inTT[i][entrada1[j]] ^ inTT[i][entrada2[j]];
					break;
			}

			if(!((j+1) % numReng)){
				in = 0;
		        for (k=0; k<numReng; k++) 
					inTT[i][k] = salida[k];
			}
			else in++;
		}

		for(j=0; j<numSalidas;j++)
			if(salida[j] == salidaTT[i][j]) (*numIgual)++; 
	}
}

/*Cuenta el n鷐ero de compuertas totales involucradas en las soluciones*/
unsigned cuentaCompuertas(void)
{
	unsigned i, compuertas = 0; 
	unsigned salidaI = numReng*(numCols-1);
	
	for(i=0; i<tMat; i++) cuentaG[i] = 0;
	for(i=salidaI; i<salidaI+numSalidas; i++)
		cCompuerta(i,numCols-1,cuentaG);
	for(i=0; i<tMat; i++) if(cuentaG[i]) compuertas++;

	return compuertas;
}

/*Cuenta el numero de compuertas involucradas en una solucion*/
void cCompuerta(unsigned salida, int columna, unsigned *cuentaG)
{
	if(columna>=0 && salida>=0){
		if(tipoG[salida] != WIRE && tipoG[salida] != WIRE1)
			if(tipoG[salida] != AND && tipoG[salida] != OR)
			   cuentaG[salida] = 1;
			else
				if(entrada1[salida] != entrada2[salida])
					cuentaG[salida] = 1;

		cCompuerta(numReng*(columna-1) + entrada1[salida],columna-1,cuentaG);
		cCompuerta(numReng*(columna-1) + entrada2[salida],columna-1,cuentaG);  
	}
}

/*Obtiene la expresi髇 booleana que representa la matriz*/
void expresion(matrix M, cadBooleana expBool, unsigned salida)
{
	strcpy(expBool,"");
	decodifica(M);
	cadenaBooleana(numReng*(numCols-1) + salida,numCols-1,expBool);
}

/*Procedimiento recursivo que va pegando a la cadena los caracteres que definir醤 la exp booleana*/
void cadenaBooleana(unsigned celda, int col, cadBooleana cadena)
{
	unsigned nuevae1, nuevae2;
	char chrgate[7], chrvar[2];

	chrvar[1] = EndString;
	switch(tipoG[celda]){
			case AND:
				strcpy(chrgate,"(AND1 ");
				break;
			case OR:
				strcpy(chrgate,"(OR1 ");
				break;
			case NOT:
			case NOT1:
				strcpy(chrgate,"(NOT1 ");
				break;
			case XOR:
			case XOR1:
				strcpy(chrgate,"(XOR1 ");
				break;
			case WIRE:
			case WIRE1:
				strcpy(chrgate,"(WIRE ");
				break;
	}

	strcat(cadena,chrgate);
	if(col<=0){
		chrvar[0] = entrada1[celda] % numEntradas + (int)'A';
		strcat(cadena,chrvar);
		if(tipoG[celda] != WIRE && tipoG[celda] != WIRE1 && tipoG[celda] != NOT && tipoG[celda] != NOT){
			chrvar[0] = entrada2[celda] % numEntradas + (int)'A';
			strcat(cadena," ");
			strcat(cadena,chrvar);
		}
	}
	else{
		nuevae1 = numReng*(col-1) + entrada1[celda];
		nuevae2 = numReng*(col-1) + entrada2[celda];

		cadenaBooleana(nuevae1,col-1,cadena);
		if(tipoG[celda] != WIRE && tipoG[celda] != WIRE1 && tipoG[celda] != NOT && tipoG[celda] != NOT){
			strcat(cadena," ");
			cadenaBooleana(nuevae2,col-1,cadena);
		}
	}
	strcat(cadena,")");
}

/*Imprime los datos de la matriz de compuertas*/
void imprimeMatriz(matrix M)
{
	int dec,sign;
	unsigned i, j;
	char cadena[5000];
	
	printf("\n");
	decodifica(M);
	for(i=0; i<numReng; i++){
		strcpy(cadena,"");
		for(j=0; j<numCols; j++){
			switch(tipoG[j*numReng + i]) {
					case AND : 
						strcat(cadena,"AND(");
						break;
					case OR: 
						strcat(cadena,"OR(");
						break;
					case NOT : 
						strcat(cadena,"NOT(");
						break;
					case WIRE : 
						strcat(cadena,"WIRE(");
						break;
					case XOR : 
						strcat(cadena,"XOR(");
						break;
					case NOT1:
						strcat(cadena,"NOT(");
						break;
					case WIRE1:
						strcat(cadena,"WIRE(");
						break;
					case XOR1 : 
						strcat(cadena,"XOR(");
						break;

			}

			strcat(cadena, entrada1[j*numReng + i] == 0 ? "0" : fcvt(entrada1[j*numReng + i],0,&dec,&sign));
			strcat(cadena, " ");
			strcat(cadena, entrada2[j*numReng + i] == 0 ? "0" : fcvt(entrada2[j*numReng + i],0,&dec,&sign));
			strcat(cadena,")");
			if(j!=numCols-1) strcat(cadena,",");
		}
		printf("%s\n",cadena);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91官网在线免费观看| 欧美一级在线视频| 欧美丰满少妇xxxxx高潮对白| 日韩亚洲欧美成人一区| 亚洲色图视频网| 国产在线精品视频| 欧美日韩高清在线| 国产精品免费av| 另类综合日韩欧美亚洲| 欧美性淫爽ww久久久久无| 国产性色一区二区| 久久国产欧美日韩精品| 日本韩国精品在线| 国产精品久久看| 国产激情一区二区三区桃花岛亚洲| 欧美美女黄视频| 亚洲一二三四久久| av不卡在线播放| 欧美国产禁国产网站cc| 麻豆精品国产91久久久久久| 欧美无乱码久久久免费午夜一区| 国产精品福利影院| 成人精品鲁一区一区二区| 久久久精品免费观看| 久久se这里有精品| 欧美一区二区黄| 天堂av在线一区| 欧美精品久久一区| 亚洲一区成人在线| 欧美三级电影网| 亚洲成人一二三| 精品视频一区三区九区| 午夜视黄欧洲亚洲| 欧美日本一区二区在线观看| 五月婷婷久久丁香| 欧美一区二区在线看| 免播放器亚洲一区| 欧美一二三四区在线| 国产欧美一区二区三区网站 | 综合欧美一区二区三区| 顶级嫩模精品视频在线看| 久久久久高清精品| 成人一区二区三区| 中文字幕一区二区视频| 99久久99精品久久久久久| 亚洲欧美偷拍卡通变态| 色激情天天射综合网| 亚洲一区二区精品久久av| 欧美日韩一本到| 久热成人在线视频| 国产嫩草影院久久久久| 91美女视频网站| 午夜视黄欧洲亚洲| www国产成人| 99精品视频免费在线观看| 大胆亚洲人体视频| 337p粉嫩大胆色噜噜噜噜亚洲| 国产麻豆91精品| 亚洲欧美一区二区三区极速播放| 欧美性视频一区二区三区| 久久99国产精品尤物| 国产人成一区二区三区影院| 91精品1区2区| 麻豆精品久久精品色综合| 国产精品久久久久久久久久久免费看| 91丝袜美女网| 久久国产视频网| 亚洲免费三区一区二区| 91精品婷婷国产综合久久性色| 国产精品18久久久久久久久| 亚洲与欧洲av电影| 久久五月婷婷丁香社区| 一本一道综合狠狠老| 免费不卡在线观看| 亚洲麻豆国产自偷在线| 欧美一级久久久久久久大片| 国产精品 欧美精品| 亚洲电影欧美电影有声小说| 国产亚洲欧美色| 欧美群妇大交群中文字幕| 国产一区二区三区精品欧美日韩一区二区三区 | 美女在线一区二区| 中文字幕一区二区三区四区不卡| 欧美一区中文字幕| 色综合网色综合| 国产伦精品一区二区三区视频青涩 | 福利一区二区在线观看| 视频在线观看91| 国产欧美日韩视频一区二区| 欧美另类变人与禽xxxxx| 成人的网站免费观看| 麻豆精品久久精品色综合| 亚洲午夜日本在线观看| 中文成人综合网| 久久日韩粉嫩一区二区三区| 日韩午夜在线观看视频| 日精品一区二区| 中文字幕欧美三区| 日韩一二在线观看| 色屁屁一区二区| www.av亚洲| 成人午夜视频在线观看| 国产在线不卡一卡二卡三卡四卡| 日本美女一区二区三区视频| 一区二区成人在线视频| ...xxx性欧美| 中文字幕在线一区免费| 国产精品情趣视频| 国产日韩欧美麻豆| 久久精品日韩一区二区三区| 精品久久久久久久久久久久久久久久久| 欧美日本精品一区二区三区| 色婷婷综合在线| 色欲综合视频天天天| 91首页免费视频| 色综合欧美在线视频区| 色94色欧美sute亚洲13| 国内精品嫩模私拍在线| 麻豆精品久久精品色综合| 成人黄动漫网站免费app| 国产一区二区在线电影| 国产在线观看一区二区| 国产一区二区三区国产| 国产在线精品一区二区不卡了| 韩国av一区二区| 福利一区二区在线| av亚洲精华国产精华| 日本韩国欧美国产| 欧美日韩五月天| 日韩久久精品一区| 久久久久一区二区三区四区| 久久久久99精品一区| 国产精品久久久久久久久快鸭| 综合激情网...| 亚洲成a人片在线不卡一二三区| 天天av天天翘天天综合网| 免费人成网站在线观看欧美高清| 免费观看91视频大全| 国产在线精品一区二区| 99精品国产热久久91蜜凸| 91福利在线导航| 日韩视频免费观看高清完整版在线观看| 日韩视频不卡中文| 日韩小视频在线观看专区| 国产a视频精品免费观看| 99久久精品99国产精品| 在线欧美日韩精品| 日韩欧美国产一二三区| 国产精品麻豆视频| 亚洲国产日日夜夜| 国产麻豆成人传媒免费观看| 91网上在线视频| 日韩欧美综合在线| 一区在线中文字幕| 免费在线观看不卡| 成人免费视频视频在线观看免费| 91国偷自产一区二区开放时间| 日韩欧美中文一区二区| 中文字幕av在线一区二区三区| 亚洲高清免费在线| 丁香桃色午夜亚洲一区二区三区| 色先锋资源久久综合| 欧美精品一区二区在线播放| 一区二区三区精品在线| 国内精品国产成人国产三级粉色 | 7777精品伊人久久久大香线蕉超级流畅 | 8v天堂国产在线一区二区| 2024国产精品| 性欧美大战久久久久久久久| 国产精品一级在线| 欧美日本一区二区| 成人欧美一区二区三区小说| 久久99精品久久久久久| 色老综合老女人久久久| 精品sm捆绑视频| 午夜电影网一区| 一本高清dvd不卡在线观看| 久久久99精品久久| 午夜私人影院久久久久| 色综合色综合色综合| 国产日韩影视精品| 国产91对白在线观看九色| 久久99精品久久久| 一道本成人在线| 国产免费观看久久| 久久国内精品自在自线400部| 欧美吞精做爰啪啪高潮| 中文字幕精品一区| 国内精品嫩模私拍在线| 精品嫩草影院久久| 免费看日韩精品| 日韩欧美国产精品| 人人爽香蕉精品| 666欧美在线视频| 亚洲mv在线观看| 9191久久久久久久久久久| 久久久综合精品| 麻豆freexxxx性91精品| 欧美一级淫片007| 美女在线一区二区|