Story Transcript
ANEXO 1 CODIFICACION BINARIA Y DECIMAL
SISTEMA BINARIO Los números se pueden expresar en distintos sistemas de numeración, como es sabido el más usual es el sistema en base 10, en este sistema llamado decimal se interpretan las cifras como coeficientes de un polinomio en potencias de 10, lo cual se ilustra a continuación:
D |10 d n .10 n d1 101 d 0 10 0
Donde los dígitos d n a d 0 constituyen el número en base 10, un ejemplo claro para ilustrar esta nomenclatura es el siguiente, tómese como ejemplo el número 1482, en base 10 se puede representar de la siguiente manera:
1482 1 103 4 10 2 9 101 2 10 0
Los coeficientes del polinomio son las cifras 1, 4, 8 y 2, el anterior número en base 10 se interpreta de la siguiente manera: un millar más cuadro centenas más nueve decenas más dos unidades. En el sistema decimal se trabaja con cifras de 0 al 9, para el caso del sistema binario la base es 2, por lo que existen solo dos posibles coeficientes el cero y el uno, en este orden de ideas la interpretación de un número en base 2 es la siguiente:
B |2 bn .2 n b1 21 b0 2 0
De esta manera el número 010011 en base dos se interpreta como la cantidad:
010011 |
2
0 2
5
1 24 0 23 0 22 1 21 1 20 19 |10
Para identificar la base en la cual se codifica el número se define el subíndice de la misma, habitualmente se trabaja en base 10 por lo cual se omite el subíndice;
se debe aclarar que los coeficientes d i de la representación decimal se denominan dígitos y a los coeficientes bi de la binaria se les llama BITS. Los sistemas decimal y binario son solo dos representaciones de la infinidad de representaciones existentes (hexadecimal, octal, entre otras), en general estas fórmulas se acoplan para cantidades enteras, pese a esto conviene considerar casos puntuales, por ejemplo para representar la cantidad 28,35 se debe hacer de la siguiente manera. 28.35 2 101 8 10 0 3 10 1 5 10 2
La notación matemática anterior se lee como dos decenas más 8 unidades más 3 décimas más 5 centésimas; en general una cantidad como 28.35 se descompone en dos partes: la parte entera a la izquierda de la coma (28) y la parte fraccionaria a la derecha de la misma (.35) la cual representa una cantidad menor que 1, la parte de la derecha contiene los coeficientes elevados a las potencias no negativas y la parte fraccionaria que contiene las potencias negativas, Lo anterior no significa que solo se puedan utilizar potencias positivas y negativas en la representación decimal, por ejemplo en base dos la cantidad 11.10 | 2 tiene parte entera 11 |2 y una parte fraccionaria 0.10 | 2 , la cantidad representada en decimal es :
1 1.21 1 2 0 1.2 1 0 2 2 2 1 0 3.5 |10 2
En la representación anterior se puede observar que la cantidad 11 | 2 = 3 |10
y
.10 |2 0.5 |10 , según lo anterior las cantidades indicadas por las partes enteras y fraccionarias no se modifican al cambiar la base. Una formula general que puede describir un número G en base b es la siguiente: G |b g p g p 1 g 0 g 1 g n
Según lo anterior cualquier valor en base decimal es:
D |10
i p
g
i n
i
bi
El funcionamiento de los computadores actuales se basa en el uso del sistema de numeración binario. Conversiones
Las conversiones permiten obtener las cifras correspondientes a una misma cantidad en distintas bases. En informática la conversión más usada es la decimal a binario y viceversa, a continuación se describen las dos metodologías.
Nota: Al realizar una conversión se debe tener en cuenta que la cantidad representada no cambia, lo que se modifica es la forma en la que se simboliza dicha cantidad.
BINARIO A DECIMAL Como se explicó anteriormente dado un numero en base dos es fácil hallar su equivalente decimal aplicando la formula (), es decir realizando la suma sucesiva en potencias de dos, por ejemplo el numero 1 | 2 equivale a 1 2 0 que es el 1 en base 10. DECIMAL A BINARIO El paso de decimal a binario es más estructurado, teniendo en cuenta que la mayoría de los números a los que se cambia de base cuentan con una parte entera y decimal; en primer lugar para las cantidades enteras se debe dividir el numero sucesivamente por dos, los residuos de las divisiones leídos en forma ascendente conforman el numero en binario, tal como se muestra en la figura () en la cual se representa el numero 210 |10 en base 2, si se utiliza la formula() se puede confirmar que el numero en base 2 equivale a 210 |10 ,
210
2
0
105
2
1
52
2
0
26
2
0
13
2
1
6 0
2 2
3 1
1
0
Potencia 20 21 22 23 24 25 26 27 28 29 210
1
0
0
Decimal 1 2 4 8 16 32 64 128 256 512 1024
1
1
0
Binario 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000
Figura X.X : Método de la división secuencial para la conversión de base 10 a base 2.
Para casos de números enteros la conversión resulta mucho más cómoda, por ejemplo para pasar a binario el número 18 en base 10 basta con observar que 20 |10 16 4 y por tanto igual a 2 4 2 2 por lo que la representación en binario resulta 10000 | 2) 100 | 2) 10100 | 2) ; es decir 18 |10) 10100 | 2 )
DECIMAL EN FRACCIONARIOS A BINARIO Los números fraccionarios pueden cambiarse con facilidad de base 10 a 2, en este caso se deben calcular los coeficientes de una suma con exponentes negativos. A diferencia del cambio de base para los números enteros se debe utilizar el método de la multiplicación, para ilustrar mejor el método considere el número 0,6875 |10) 2 1,375 |10) que tiene parte entera igual a 1, esto significa que el número 0,6875 |10) contiene la primera potencia negativa de dos que es
2 1 |10) 0,5 |10) . Este 1 se toma como parte de la expresión binaria. El proceso continúa tomando la parte decimal restante y volviendo a multiplicar por dos, este paso se repite hasta que desaparezcan todos los decimales. En la siguiente tabla se muestra el cambio de base de la cantidad fraccionaria elegida
Cantidad 0,6875 0,375 0,750 0,5
Cantidad X 2 1,375 0,75 1,5 1
Parte entera 1 0 1 1
Parte fraccionaria 0,375 0,75 0,5 0
Los coeficientes fraccionarios de esta representación se obtienen de la columna #3, de este modo se tiene que 0,6875 |10) 0,1011 | 2) , en conclusión basta con comprobar que el valor encontrado es igual a la suma de potencias 0 1 0 2 1 2 0 2 2 1 2 3 1 2 4 es igual al valor 0,6875 |10) .
En el cambio de base de cantidades decimales enteros a binarias se toman los residuos de las divisiones secuenciales mientras que para las cantidades fraccionarias se toman las partes enteras de las multiplicaciones resultantes.
CODIFICACIÓN DE NUMEROS BINARIOS Para representar un número entero positivo con un conjunto de bits se puede usar la codificación binaria (de hecho es la más utilizada), de esta manera si se disponen registros de 18 celdas es posible almacenar números entre el 0 y el 218 1 262143 . Si el número de celdas aumenta por ejemplo a 20, es posible ampliar el intervalo representable desde 0 hasta el 2 20 1 1048575 ; se debe resaltar que los computadores actuales tienen un límite en lo que se refiere al ancho de los registros. La representación en binario es fácil de entender e implementar, para utilizar esta codificación en los números negativos se debe reservar la celda que esté más a la izquierda, de esta manera el 1 o el 0 podrían representar una cantidad positiva o negativa, algunas de las convenciones de números de positivos y negativos se presenta a continuación: Modo signo valor absoluto: Se aparta la celda que se encuentre más a la izquierda, los números positivos se identifican con el 0 y para los negativos un valor de 1. e 0 y el 218 1 262143 0 y el 218 1 262143 0 y el 218 1 262143
… … . S
Va
Figura x.x : Representación signo-valor absoluto
Donde S simboliza el bit del signo y Va la representación en base dos, en general para un número de bits en el papel de n se pueden representar los enteros comprendidos en el intervalo (2 n 1 1), 2 n1 1 , para este sistema de
codificación se debe tener en cuenta que hay dos ceros,
0 00... 0 y el negativo
1 00... 0 .
Complemento a 1: Como en el método anterior se reserva el primer bit para signo, para el resto de codificación si el número es positivo se utiliza codificación en base 2 en convencional y si el número es negativo se utiliza complemento bit a bit del valor absoluto, en otras palabras se cambia base 2 valor absoluto y se intercambian el 1 por el 0 y viceversa.
el la el el
Para un número de bits en el papel de n se pueden representar los enteros comprendidos en el intervalo (2 n 1 1), 2 n1 1 , para este sistema de
codificación se debe tener en cuenta que hay dos ceros,
0 00... 0 y el negativo
1 00... 0 .
Complemento a 2: Los dos sistemas anteriores presentan inconsistencias al momento de realizar sumas y restas mediante circuitos lógicos, por lo cual se plantea el presente método, con este los números positivos se presentan de igual manera que en el signo-valor absoluto, pero los números negativos se representan sumándole 1 al complemento a 1, los números de bits que se pueden representar los enteros comprendidos en el intervalo 2 n1 , 2 n1 1 , como se puede concluir
del lado de los negativos hay un número más debido a que solo existe un cero 0 00... 0 el cual usa el espacio de un numero positivo, el numero 2 n1 tiene siempre una única representación 1 0... 0 el cual corresponde al cero negativo en los métodos anteriores.
NUMEROS FRACCIONARIOS
En el sistema decimal los números no enteros se representan en una serie de potencias negativas, estos números se pueden representar en binario (como se ha explicado anteriormente), para este ejemplo se considera el número 100,11 | 2 ) el cual indica la cantidad 1 2 2 0 21 0 20 1 2 1 1 2 2 4 0,5 0,25 4,75 |10) . En los equipos de cómputo actuales se plantea el problema de la representación del punto fraccionario y de interpretarlo, por esto se plantean posibles soluciones para este inconveniente:
Punto Fijo: En esta representación se apartan las celdas que contienen la parte entera en base 2 y las demás para la fraccionaria, a partir de esta última celda se debe multiplicar los coeficientes por las potencias negativas.
2p
21
2 1
20
2 q
2 2
Figura xx, Número de bits para la representación punto fijo
En la codificación con punto fijo se tienen reservadas p+1 celdas para la parte entera y q para la fraccionaria, para este caso no se contempla el problema del signo. En una computadora de punto fijo el número de coeficientes fraccionarios q es fijo por la propia construcción de los circuitos y no se puede cambiar. Esto es un problema pues no se puede trabajar con números muy dispares (por ejemplo 25000.0 y 0.0003). Para comprender esta afirmación piense que n=p+q+1 es un número prefijado por la tecnología del momento, hace años se utilizaban computadoras con n=8 de forma casi exclusiva. Con el paso del tiempo se ha avanzado pasando por n=16, n=32 y recientemente n=64. En cualquier caso si se decide incrementar q eso conlleva un decremento de p y viceversa. Debido a esto este sistema de punto fijo se usa poco en la actualidad. PUNTO FLOTANTE El numero N que se va a representar se calcula en función de los parámetros M y E de forma que N M 2 E , la primera cantidad se denomina mantisa y la segunda E del exponente. Para tener mayor claridad sobre el método se toma como base la codificación decimal.
Para ajustar el número se utiliza la NORMALIZACIÓN, la cual consiste en seleccionar la mantisa y el exponente de forma que cumplan con lo especificado, el objetivo de este método elegir la mantisa y el exponente de las posibles soluciones, una normalización frecuente consiste en asegurar que la mantisa no tenga parte entera y que su primer coeficiente fraccionario sea diferente de nulo.
EstadisticaEvolucion
ESTADÍSTICAS DE EVOLUCIÓN. Id Genetico:
AG-0000000005
Resolucion:
17
Tamano Poblacion:
20
Numero Generaciones:
100
Prob Cruce:
40,00%
Prob Mutacion:
10,00%
Alamacen Maximo:
6.000,00
Capital Maximo:
$8.500.000.000,0
La mejor combinación obtenida es la siguiente: Capital máximo usado: Referencia
27176 30466 38408 13736 60155 $7.251.936.768,00
Costo Unitario
Costo Mantener Inventario
Costo Preparacion
La mejor aptitud obtenida fue:
$906.483.008,00
El espacio máximo usado es:
5.807,12
Volumen Unitario
Demanda
Punto Reorden
CCVV444444
$35.000,00
$8.750,00
$260,00
0,0
46.806
8.000
XAADDD5555
$10.500,00
$2.625,00
$50,00
0,1
42.866
6.000
ZA2010112
$850,00
$212,00
$8,50
0,0
59.384
20.000
CE0000001
$17.000,00
$4.250,00
$130,00
0,1
28.297
2.000
PAA987563
$95.000,00
$23.750,00
$60,00
0,0
85.307
10.000
16/04/2013 3:01:51 p. m.
m^3
1
ANEXO 5 CODIGO FUENTEVISUAL C# ALGORITMO GENETICO
ObjEncabezado = new AGeneticoM { IdDocumento = txtDocumento.Text, FechaCreacion = txtFechaCreacion.Value, CapitalMaximo = rseCapitalMaximo.Value, AlamacenMaximo = rseAlamacenMaximo.Value, NumeroGeneraciones = Convert.ToInt32(rseNumeroGeneraciones.Value), TamanoPoblacion = Convert.ToInt32(rseTamañoPoblacion.Value), Resolucion = Convert.ToInt32(rseResolucion.Value), ProbCruce = rseCruce.Value, ProbMutacion = rseMutacion.Value, }; prbGenetico.Maximum = ObjEncabezado.NumeroGeneraciones; prbGenetico.Value1 = 0; ActualizaBarras(0); string varCorrida = txtDocumento.Text +'.'+ DateTime.Now.ToLongTimeString();
///// genero la poblacion inicial ControladorGenentico.FuncionPoblacionIncial(ObjEncabezado, ListaDetalle, varCorrida); ControladorGenentico.FuncionEvaluacion(varCorrida, 1); //// arranca ciclo evolutivo for (int i = 1; i 0) { retorno = true; } return retorno; } /// /// verifica el codigo epc y las cantidades que se le asignaran. /// /// No Parametro /// /// public static List ListaImpresion(string varEpc) { List ListaRegistroLectura = ManejadorRfid.ListaImpresion(varEpc); return ListaRegistroLectura; } ///
/// Inserta registro de lectura tag epc. /// /// No Parametro /// /// public static string InsertaRegistroLectura(List ListaRegistro) { string varBandera = ""; try { foreach (SRegistroLecturaRfid varInse in ListaRegistro) { bool VarVerifica = ControladorRfid.VerificaRegistroLectura(varInse.Documento, varInse.EpcLectura); if (VarVerifica == false) { SRegistroLecturaRfid ObjRegistro = new SRegistroLecturaRfid { CodigoBarra = varInse.CodigoBarra, Documento = varInse.Documento, EpcLectura = varInse.EpcLectura, }; varBandera = ManejadorRfid.InsertaRegistroLectura(ObjRegistro); } } } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } #endregion
} }
using using using using
System; System.Collections.Generic; System.Linq; System.Text;
namespace Cedi.DataAccesEntities { public class ManejadorAgenetico { static ManejadorAgenetico() { } #region Documento Algoritmo Genetico. /// /// Obtiene una lista del encabezado del documento. /// /// int vPlu. /// /// public static List ListaEncabezado(int varTipo, string @IdGenetico) { CediEntitiesModel context = new CediEntitiesModel(); List ListaEncabezado=new List(); switch (varTipo) { case 1: ListaEncabezado = (from AGeneticoM in context.AGeneticoMs where AGeneticoM.IdDocumento == @IdGenetico select new AGeneticoM { IdDocumento = AGeneticoM.IdDocumento, Anulado = AGeneticoM.Anulado, Impreso = AGeneticoM.Impreso, FechaCreacion = AGeneticoM.FechaCreacion, Resolucion = AGeneticoM.Resolucion, TamanoPoblacion = AGeneticoM.TamanoPoblacion, NumeroGeneraciones = AGeneticoM.NumeroGeneraciones, ProbCruce = AGeneticoM.ProbCruce, ProbMutacion = AGeneticoM.ProbMutacion, AlamacenMaximo = AGeneticoM.AlamacenMaximo, CapitalMaximo = AGeneticoM.CapitalMaximo, }).ToList(); break; default: ListaEncabezado = (from AGeneticoM in context.AGeneticoMs select new AGeneticoM
{ IdDocumento = AGeneticoM.IdDocumento, Anulado = AGeneticoM.Anulado, Impreso = AGeneticoM.Impreso, FechaCreacion = AGeneticoM.FechaCreacion, Resolucion = AGeneticoM.Resolucion, TamanoPoblacion = AGeneticoM.TamanoPoblacion, NumeroGeneraciones = AGeneticoM.NumeroGeneraciones, ProbCruce = AGeneticoM.ProbCruce, ProbMutacion = AGeneticoM.ProbMutacion, AlamacenMaximo = AGeneticoM.AlamacenMaximo, CapitalMaximo = AGeneticoM.CapitalMaximo, }).ToList(); break; } return ListaEncabezado;
} /// /// Obtiene una lista del detalle del documento. /// /// string IdGenetico. /// /// public static List ListaDetalle(int @Tipo, string @IdGenetico) { CediEntitiesModel context = new CediEntitiesModel(); List ListaDetalle = (from AGeneticoD in context.AGeneticoDs where AGeneticoD.IdDocumento == @IdGenetico select new AGeneticoD { IdDetalle = AGeneticoD.IdDetalle, IdDocumento = AGeneticoD.IdDocumento, Referencia = AGeneticoD.Referencia, CostoUnitario = AGeneticoD.CostoUnitario, CostoMantenerInventario = AGeneticoD.CostoMantenerInventario, CostoPreparacion = AGeneticoD.CostoPreparacion, VolumenUnitario = AGeneticoD.VolumenUnitario, Demanda = AGeneticoD.Demanda, PuntoReorden = AGeneticoD.PuntoReorden, }).ToList();
return ListaDetalle; } /// /// Inserta un nuevo registro del encabezado del documento en el sistema. /// /// ObjInserta tipo AGeneticoM /// /// public static string InsertaEncabezado(AGeneticoM ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { varBandera = context.ProcGenConsecutivo(1); AGeneticoM Inserta = new AGeneticoM(); Inserta.IdDocumento =varBandera; Inserta.FechaCreacion = ObjInserta.FechaCreacion; Inserta.CapitalMaximo = ObjInserta.CapitalMaximo; Inserta.AlamacenMaximo = ObjInserta.AlamacenMaximo; Inserta.NumeroGeneraciones = ObjInserta.NumeroGeneraciones; Inserta.ProbCruce=ObjInserta.ProbCruce; Inserta.ProbMutacion=ObjInserta.ProbMutacion; Inserta.TamanoPoblacion = ObjInserta.TamanoPoblacion; Inserta.Resolucion = ObjInserta.Resolucion; context.Add(Inserta); context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta registro del encabezado del documento. /// /// ObjInserta tipo AGeneticoM /// /// public static string UpdateEncabezado(AGeneticoM ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { AGeneticoM Inserta = context.AGeneticoMs.FirstOrDefault(p => p.IdDocumento == ObjInserta.IdDocumento); Inserta.IdDocumento = ObjInserta.IdDocumento; Inserta.FechaCreacion = ObjInserta.FechaCreacion; Inserta.CapitalMaximo = ObjInserta.CapitalMaximo; Inserta.AlamacenMaximo = ObjInserta.AlamacenMaximo; Inserta.NumeroGeneraciones = ObjInserta.NumeroGeneraciones; Inserta.TamanoPoblacion = ObjInserta.TamanoPoblacion; Inserta.ProbCruce = ObjInserta.ProbCruce; Inserta.ProbMutacion = ObjInserta.ProbMutacion;
Inserta.Resolucion = ObjInserta.Resolucion; context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta un nuevo registro del detalle documento en el sistema. /// /// ObjInserta tipo AGeneticoM /// /// public static string InsertaDetalle(AGeneticoD ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { AGeneticoD Inserta = new AGeneticoD(); Inserta.IdDetalle= ObjInserta.IdDetalle; Inserta.IdDocumento = ObjInserta.IdDocumento; Inserta.Referencia = ObjInserta.Referencia; Inserta.CostoUnitario = ObjInserta.CostoUnitario; Inserta.CostoMantenerInventario = ObjInserta.CostoMantenerInventario; Inserta.CostoPreparacion = ObjInserta.CostoPreparacion; Inserta.VolumenUnitario = ObjInserta.VolumenUnitario; Inserta.Demanda = ObjInserta.Demanda; Inserta.PuntoReorden = ObjInserta.PuntoReorden; context.Add(Inserta); context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta registro del encabezado del documento. /// /// ObjInserta tipo AGeneticoM /// /// public static string UpdateDetalle(AGeneticoD ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { AGeneticoD Inserta = context.AGeneticoDs.FirstOrDefault(p => p.IdDetalle== ObjInserta.IdDetalle); Inserta.IdDetalle = ObjInserta.IdDetalle; Inserta.IdDocumento = ObjInserta.IdDocumento;
Inserta.Referencia = ObjInserta.Referencia; Inserta.CostoUnitario = ObjInserta.CostoUnitario; Inserta.CostoMantenerInventario = ObjInserta.CostoMantenerInventario; Inserta.CostoPreparacion = ObjInserta.CostoPreparacion; Inserta.VolumenUnitario = ObjInserta.VolumenUnitario; Inserta.Demanda = ObjInserta.Demanda; Inserta.PuntoReorden = ObjInserta.PuntoReorden; context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Obtiene una lista Evaluacion. /// /// int vPlu. /// /// public static List ListaEvaluacion(int @Tipo, string @Corrida) { CediEntitiesModel context = new CediEntitiesModel(); List ListaEvaluacion = context.ProcInformeEvolucion(@Tipo, @Corrida).ToList(); return ListaEvaluacion; } /// /// Inserta Evaluacion para la generacion. /// /// ObjInserta tipo AEvaluacion /// /// public static string InsertaEvaluacion(AEvaluacion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { AEvaluacion Inserta = new AEvaluacion(); Inserta.Documento = ObjInserta.Documento; Inserta.Corrida = ObjInserta.Corrida; Inserta.Generacion = ObjInserta.Generacion; Inserta.AptitudMedia = ObjInserta.AptitudMedia; Inserta.SumaAptitud = ObjInserta.SumaAptitud; Inserta.MejorAptitud = ObjInserta.MejorAptitud; Inserta.IdMejorAp = ObjInserta.IdMejorAp; Inserta.MejorCombinacion = ObjInserta.MejorCombinacion; context.Add(Inserta); context.SaveChanges(); } catch (Exception e) {
varBandera = e.ToString(); } return varBandera; } /// /// Actualiza Evaluacion para la generacion. /// /// ObjInserta tipo AEvaluacion /// /// public static string UpdateEvaluacion(AEvaluacion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { AEvaluacion Inserta = context.AEvaluacions.FirstOrDefault(p => p.Corrida == ObjInserta.Corrida && p.Generacion == ObjInserta.Generacion); Inserta.Documento = ObjInserta.Documento; Inserta.Corrida = ObjInserta.Corrida; Inserta.Generacion = ObjInserta.Generacion; Inserta.AptitudMedia = ObjInserta.AptitudMedia; Inserta.SumaAptitud = ObjInserta.SumaAptitud; context.Add(Inserta); context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta los individuos generados aleatoriamente. /// /// ObjInserta tipo AGeneticoM /// /// public static string InsertaCombinaciones(ACombinacion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { ACombinacion Inserta = new ACombinacion(); Inserta.Documento = ObjInserta.Documento; Inserta.Corrida = ObjInserta.Corrida; Inserta.Combinacion = ObjInserta.Combinacion; Inserta.SumaCombinacion = ObjInserta.SumaCombinacion; Inserta.BinarioCombinacion = ObjInserta.BinarioCombinacion; Inserta.Aptitud = ObjInserta.Aptitud; Inserta.Generacion = ObjInserta.Generacion; Inserta.Puntuacion = ObjInserta.Puntuacion; Inserta.PuntuacionAcumulada = ObjInserta.PuntuacionAcumulada; context.Add(Inserta);
context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Obtiene una lista de combinaciones por Documento /// /// string Documento /// List /// public static List ListaDocumentosCorridas(string varDocumento) { CediEntitiesModel context = new CediEntitiesModel(); List ListaDocumentosCorridas = (from ACombinacion in context.ACombinacions where ACombinacion.Documento == varDocumento select new ACombinacion { Documento = ACombinacion.Documento, Corrida = ACombinacion.Corrida,
}).Distinct().ToList(); return ListaDocumentosCorridas; } /// /// Obtiene una lista de combinaciones por generacion y corrida /// /// string corrida, int Generacion /// List /// public static List ListaCombinacionEval(string corrida) { CediEntitiesModel context = new CediEntitiesModel(); List ListaCombinacion = (from ACombinacion in context.ACombinacions where ACombinacion.Corrida == corrida select new ACombinacion { IdCombinaciones = ACombinacion.IdCombinaciones, Documento = ACombinacion.Documento, Corrida = ACombinacion.Corrida, Combinacion = ACombinacion.Combinacion,
SumaCombinacion = ACombinacion.SumaCombinacion, BinarioCombinacion = ACombinacion.BinarioCombinacion, Aptitud = ACombinacion.Aptitud, Generacion = ACombinacion.Generacion, Restricion1 = ACombinacion.Restricion1, Restricion2 = ACombinacion.Restricion2, Restricion3 = ACombinacion.Restricion3, Restricion4 = ACombinacion.Restricion4, }).ToList(); return ListaCombinacion; }
/// /// Obtiene una lista de combinaciones por generacion y corrida /// /// string corrida, int Generacion /// List /// public static List ListaCombinacion(string corrida, int Generacion) { CediEntitiesModel context = new CediEntitiesModel(); List ListaCombinacion = (from ACombinacion in context.ACombinacions where ACombinacion.Corrida == corrida && ACombinacion.Generacion == Generacion select new ACombinacion { IdCombinaciones=ACombinacion.IdCombinaciones, Documento = ACombinacion.Documento, Corrida = ACombinacion.Corrida, Combinacion = ACombinacion.Combinacion, SumaCombinacion = ACombinacion.SumaCombinacion, BinarioCombinacion = ACombinacion.BinarioCombinacion, Aptitud = ACombinacion.Aptitud, Generacion = ACombinacion.Generacion, }).ToList(); return ListaCombinacion; } /// /// Obtiene una lista de seleccionados por generacion y corrida
/// /// string corrida, int Generacion /// List /// public static List ListaSeleccion(string corrida, int Generacion) { CediEntitiesModel context = new CediEntitiesModel(); List ListaSeleccion = (from ASeleccion in context.ASeleccions where ASeleccion.Corrida == corrida && ASeleccion.Generacion == Generacion select new ASeleccion { IdReproducirse = ASeleccion.IdReproducirse, Documento = ASeleccion.Documento, Corrida = ASeleccion.Corrida, Combinacion = ASeleccion.Combinacion, IdCombinacion = ASeleccion.IdCombinacion, Binario = ASeleccion.Binario, NumeroReproduciones = ASeleccion.NumeroReproduciones, Generacion = ASeleccion.Generacion, SeleccionadoCruce=ASeleccion.SeleccionadoCruce, }).ToList(); return ListaSeleccion; } /// /// Inserta los seleccionados. /// /// ObjInserta tipo ASeleccion /// /// public static string InsertaSeleccionados(ASeleccion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { ASeleccion Inserta = new ASeleccion(); Inserta.Documento = ObjInserta.Documento; Inserta.Corrida = ObjInserta.Corrida; Inserta.Combinacion = ObjInserta.Combinacion; Inserta.IdCombinacion = ObjInserta.IdCombinacion; Inserta.NumeroReproduciones = ObjInserta.NumeroReproduciones; Inserta.Binario = ObjInserta.Binario; Inserta.Generacion = ObjInserta.Generacion; Inserta.Mutado = ObjInserta.Mutado; context.Add(Inserta); context.SaveChanges(); }
catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta los seleccionados. /// /// ObjInserta tipo ASeleccion /// /// public static string UpdateSeleccion(ASeleccion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { ASeleccion Inserta = context.ASeleccions.FirstOrDefault(p => p.Corrida == ObjInserta.Corrida && p.Generacion == ObjInserta.Generacion && p.IdCombinacion == ObjInserta.IdCombinacion); Inserta.Documento = ObjInserta.Documento; Inserta.Corrida = ObjInserta.Corrida; Inserta.Combinacion = ObjInserta.Combinacion; Inserta.IdCombinacion = ObjInserta.IdCombinacion; Inserta.NumeroReproduciones = ObjInserta.NumeroReproduciones; Inserta.Binario = ObjInserta.Binario; Inserta.Generacion = ObjInserta.Generacion; Inserta.SeleccionadoCruce = ObjInserta.SeleccionadoCruce; Inserta.Mutado = ObjInserta.Mutado; context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta los seleccionados. /// /// ObjInserta tipo ASeleccion /// /// public static string UpdateCombinacionesRestricciones(ACombinacion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { ACombinacion Inserta = context.ACombinacions.FirstOrDefault(p => p.Corrida == ObjInserta.Corrida && p.IdCombinaciones == ObjInserta.IdCombinaciones); Inserta.Aptitud = ObjInserta.Aptitud; Inserta.Restricion1 = ObjInserta.Restricion1; Inserta.Restricion2 = ObjInserta.Restricion2; Inserta.Restricion3 = ObjInserta.Restricion3;
Inserta.Restricion4 = ObjInserta.Restricion4; context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta los seleccionados. /// /// ObjInserta tipo ASeleccion /// /// public static string UpdateCombinaciones(ACombinacion ObjInserta) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { ACombinacion Inserta = context.ACombinacions.FirstOrDefault(p => p.Corrida == ObjInserta.Corrida && p.IdCombinaciones == ObjInserta.IdCombinaciones); Inserta.Aptitud = ObjInserta.Aptitud; Inserta.Puntuacion = ObjInserta.Puntuacion; Inserta.PuntuacionAcumulada = ObjInserta.PuntuacionAcumulada; context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera; } /// /// Inserta los log. /// /// ObjInserta tipo ASeleccion /// /// public static string InsertaLog(string suces) { string varBandera = ""; CediEntitiesModel context = new CediEntitiesModel(); try { Log Inserta = new Log(); Inserta.Suceso = suces; context.Add(Inserta); context.SaveChanges(); } catch (Exception e) { varBandera = e.ToString(); } return varBandera;
} #endregion
} }