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:
0
0
1
110 101010.| dddD n
n
Donde los dígitos nd a 0d 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:
0123 1021091041011482
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:
0
0
1
12 222.| bbbB n
n
De esta manera el número 010011 en base dos se interpreta como la cantidad:
10
012345
2 |19212120202120|010011
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 id de la representación decimal se denominan
dígitos y a los coeficientes ib 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.
2101 10510310810235.28
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 2|10.11 tiene parte
entera 2|11 y una parte fraccionaria 2|10.0 , la cantidad representada en decimal
es :
10
2101 |5.302
112202.1212.1
En la representación anterior se puede observar que la cantidad 102 |3 =|11 y
102 |5.0|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:
nppb gggggG 101|
Según lo anterior cualquier valor en base decimal es:
pi
ni
i
i bgD 10|
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 2|1 equivale a 021 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 10|210 en base 2, si se utiliza la formula() se
puede confirmar que el numero en base 2 equivale a 10|210 ,
Potencia Decimal Binario 02 1 1 12 2 10 22 4 100 32 8 1000 42 16 10000 52 32 100000 62 64 1000000 72 128 10000000 82 256 100000000 92 512 1000000000 102 1024 10000000000
210
0 105
1 52
0 26
0 13
6 1
0
2
3
1
2
2
2
2
2
2
1
1 0 1 0 0 1 0
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
416|20 10 y por tanto igual a 24 22 por lo que la representación en binario
resulta )2)2)2 |10100|100|10000 ; es decir )2)10 |10100|18
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
)10)10 |375,12|6875,0 que tiene parte entera igual a 1, esto significa que el
número )10|6875,0 contiene la primera potencia negativa de dos que es
)10)10
1 |5,0|2 . 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 Cantidad X 2 Parte entera Parte fraccionaria
0,6875 1,375 1 0,375
0,375 0,75 0 0,75
0,750 1,5 1 0,5
0,5 1 1 0
Los coeficientes fraccionarios de esta representación se obtienen de la columna
#3, de este modo se tiene que )2)10 |1011,0|6875,0 , en conclusión basta con
comprobar que el valor encontrado es igual a la suma de potencias 43210 2121202120 es igual al valor )10|6875,0 .
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
262143120 18 ely . Si el número de celdas aumenta por ejemplo a 20, es
posible ampliar el intervalo representable desde 1048575120 20 elhasta ; 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 262143120 18 ely 262143120 18 ely 262143120 18 ely
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 12),12( 11 nn , para este sistema de
…
…
.
S Va
Figura x.x : Representación signo-valor absoluto
codificación se debe tener en cuenta que hay dos ceros, 0...000 y el negativo
0...001 .
Complemento a 1: Como en el método anterior se reserva el primer bit para el
signo, para el resto de codificación si el número es positivo se utiliza la
codificación en base 2 en convencional y si el número es negativo se utiliza el
complemento bit a bit del valor absoluto, en otras palabras se cambia base 2 el
valor absoluto y se intercambian el 1 por el 0 y viceversa.
Para un número de bits en el papel de n se pueden representar los enteros
comprendidos en el intervalo 12),12( 11 nn , para este sistema de
codificación se debe tener en cuenta que hay dos ceros, 0...000 y el negativo
0...001 .
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 12,2 11 nn , como se puede concluir
del lado de los negativos hay un número más debido a que solo existe un cero
0...000 el cual usa el espacio de un numero positivo, el numero 12 n tiene
siempre una única representación 0...01 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 )2|11,100 el
cual indica la cantidad )10
21012 |75,425,05,042121202021 .
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.
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 EMN 2 , 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.
1202 12 22 q2p2
Figura xx, Número de bits para la representación punto fijo
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.
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
27176 30466 38408 13736 60155 $906.483.008,00La mejor combinación obtenida es la siguiente: La mejor aptitud obtenida fue:
Capital máximo usado: $7.251.936.768,00 El espacio máximo usado es: 5.807,12 m^3
Referencia Costo Unitario Costo Mantener Inventario Costo Preparacion 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
EstadisticaEvolucion
16/04/2013 3:01:51 p. m. 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 <= ObjEncabezado.NumeroGeneraciones; i++) { ControladorGenentico.FuncionSeleccion(varCorrida, i, ObjEncabezado.TamanoPoblacion); ControladorGenentico.FuncionReproduccion(varCorrida, i, ObjEncabezado, ListaDetalle); ControladorGenentico.FuncionMutacion(varCorrida, i, ObjEncabezado, ListaDetalle); ControladorGenentico.FuncionNuevaGeneracion(varCorrida, i, ObjEncabezado, ListaDetalle); ActualizaBarras(i); } varCorrida = "La corrida numero " + varCorrida+ " Culmino con Exito."; MessageBox.Show(varCorrida, ReutilizabeTool.LlamaMensajes("Info"), MessageBoxButtons.OK, MessageBoxIcon.Information); prbGenetico.Visible = false;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Cedi.DataAccesEntities; namespace Cedi.Business { public class ControladorRfid { public ControladorRfid() { // // TODO: Add constructor logic here // } #region Impresiones de tags RFID. /// <summary> /// IMprime un Tag Rfid /// </summary> /// <param name="">int IdBarra,string Ean13, string Descripcion,string Prefijo, int Consecutivo, string Impresora</param> /// <returns></returns> /// public static string ImprimirRFID(int IdBarra,string Referencia, int catidad, decimal precio, string CodigoBarras, string Descripcion,string Prefijo, int Consecutivo, string Impresora, int Tipo) { string varBandera = ""; string nombreImpresora = Impresora; if (nombreImpresora == "") { throw new Exception("No se ha definido el nombre de la impresora en los parámetros de configuración.\n Para definirlos vaya a Administración --> Configuración"); } //Obtiene encabezado de la impresión //int idImpresion = this.RegistraImpresion(usuario, observaciones); CImpresora objImpresora = new CImpresora(nombreImpresora); //Se calcula digito de control del ean13 //int digitoControl = objImpresora.CalcularDigitoControl("EAN13", codigo); //codigo = codigo + digitoControl.ToString(); string codigo = CodigoBarras; //DataTable dt = new DataTable(); //dt.Columns.Add("Codigo"); //dt.Columns.Add("Resultado"); //dt.Columns.Add("EPC"); string[] values = new string[3]; string codigoRFID = ""; //Objeto utilizado para obtener el codigo epc EPC objEPC = new EPC(); //Imprime y guarda la info de lo impreso try
{ //Se calcula el codigo EPC correspondiente codigoRFID = objEPC.Encode(codigo, EPC.EPCEncoding.SGTIN96, Prefijo.Length, 1, Consecutivo); objImpresora.ImprimirRFID(codigoRFID, codigo, Descripcion, Referencia, catidad, precio); Consecutivo += 1; //Guarda lo impreso en una tabla //objEPC.GetEPC(codigoRFID, codigo) OBTIENE CODIGO EPC //Actualiza valor del consecutivo tipo =1 ean13 2 ean14 varBandera = ActualizarConsecutivo(IdBarra, Consecutivo, Tipo, codigoRFID); SImpresionTagRfid ObjRegistro = new SImpresionTagRfid { Tipo = Tipo, CodigoBarras = CodigoBarras, EpcCode = objEPC.GetEPC(codigoRFID, codigo), RfidCode = codigoRFID, IdUsuario = 1, }; varBandera = InsertaRegistroImpre(ObjRegistro); } catch (Exception ex) { varBandera = "Error de ls sistema :" + ex.ToString(); } return varBandera; } /// <summary> /// Actualiza Consecutivo de impresion /// </summary> /// <param name="">int IdActu, int Consecutivo, int Tipo, string Epc</param> /// <returns></returns> /// private static string ActualizarConsecutivo(int IdActu, int Consecutivo, int Tipo, string Epc) { string varBandera = ""; varBandera = ManejadorRfid.ActualizaConsecutivo(Tipo, IdActu, Consecutivo, Epc); return varBandera; } /// <summary> /// Inserta Registro del tag impreso Impre /// </summary> /// <param name="">SImpresionTagRfid ObjInserta</param> /// <returns></returns> /// private static string InsertaRegistroImpre(SImpresionTagRfid ObjInserta) { string varBandera = ""; varBandera = ManejadorRfid.InsertaRegistroImpre(ObjInserta); return varBandera; }
/// <summary> /// Inserta Registro dd lectura rfid /// </summary> /// <param name="">SImpresionTagRfid ObjInserta</param> /// <returns></returns> /// private static string InsertaRegistroLectura(SRegistroLecturaRfid ObjInserta) { string varBandera = ""; varBandera = ManejadorRfid.InsertaRegistroLectura(ObjInserta); return varBandera; } /// <summary> /// Obtene una lista de la lectura rfid apartir del Documento variable y diferente cada vez que se abre una ventana. /// </summary> /// <param name="">No Parametro</param> /// <returns></returns> /// public static List<SRegistroLecturaRfid> ListaRegistroLectura(string varDocumento) { List<SRegistroLecturaRfid> ListaRegistroLectura = ManejadorRfid.ListaRegistroLectura(varDocumento,"",1); return ListaRegistroLectura; } /// <summary> /// Verificca si existe un registro. /// </summary> /// <param name="">No Parametro</param> /// <returns></returns> /// public static bool VerificaRegistroLectura(string varDocumento, string varEpc) { bool retorno = false; List<SRegistroLecturaRfid> ListaRegistroLectura = ManejadorRfid.ListaRegistroLectura(varDocumento, varEpc, 2); if (ListaRegistroLectura.Count > 0) { retorno = true; } return retorno; } /// <summary> /// verifica el codigo epc y las cantidades que se le asignaran. /// </summary> /// <param name="">No Parametro</param> /// <returns></returns> /// public static List<SImpresionTagRfid> ListaImpresion(string varEpc) { List<SImpresionTagRfid> ListaRegistroLectura = ManejadorRfid.ListaImpresion(varEpc); return ListaRegistroLectura; } /// <summary>
/// Inserta registro de lectura tag epc. /// </summary> /// <param name="">No Parametro</param> /// <returns></returns> /// public static string InsertaRegistroLectura(List<SRegistroLecturaRfid> 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 System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cedi.DataAccesEntities { public class ManejadorAgenetico { static ManejadorAgenetico() { } #region Documento Algoritmo Genetico. /// <summary> /// Obtiene una lista del encabezado del documento. /// </summary> /// <param name="">int vPlu.</param> /// <returns></returns> /// public static List<AGeneticoM> ListaEncabezado(int varTipo, string @IdGenetico) { CediEntitiesModel context = new CediEntitiesModel(); List<AGeneticoM> ListaEncabezado=new List<AGeneticoM>(); 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; } /// <summary> /// Obtiene una lista del detalle del documento. /// </summary> /// <param name="">string IdGenetico.</param> /// <returns></returns> /// public static List<AGeneticoD> ListaDetalle(int @Tipo, string @IdGenetico) { CediEntitiesModel context = new CediEntitiesModel(); List<AGeneticoD> 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; } /// <summary> /// Inserta un nuevo registro del encabezado del documento en el sistema. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AGeneticoM </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta registro del encabezado del documento. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AGeneticoM </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta un nuevo registro del detalle documento en el sistema. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AGeneticoM </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta registro del encabezado del documento. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AGeneticoM </param> /// <returns></returns> /// 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; } /// <summary> /// Obtiene una lista Evaluacion. /// </summary> /// <param name="">int vPlu.</param> /// <returns></returns> /// public static List<ProcInformeEvolucionResultSet0> ListaEvaluacion(int @Tipo, string @Corrida) { CediEntitiesModel context = new CediEntitiesModel(); List<ProcInformeEvolucionResultSet0> ListaEvaluacion = context.ProcInformeEvolucion(@Tipo, @Corrida).ToList(); return ListaEvaluacion; } /// <summary> /// Inserta Evaluacion para la generacion. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AEvaluacion </param> /// <returns></returns> /// 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; } /// <summary> /// Actualiza Evaluacion para la generacion. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AEvaluacion </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta los individuos generados aleatoriamente. /// </summary> /// <param name="ObjInserta">ObjInserta tipo AGeneticoM </param> /// <returns></returns> /// 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; } /// <summary> /// Obtiene una lista de combinaciones por Documento /// </summary> /// <param name="">string Documento</param> /// <returns>List<ACombinacion> </returns> /// public static List<ACombinacion> ListaDocumentosCorridas(string varDocumento) { CediEntitiesModel context = new CediEntitiesModel(); List<ACombinacion> ListaDocumentosCorridas = (from ACombinacion in context.ACombinacions where ACombinacion.Documento == varDocumento select new ACombinacion { Documento = ACombinacion.Documento, Corrida = ACombinacion.Corrida, }).Distinct().ToList(); return ListaDocumentosCorridas; } /// <summary> /// Obtiene una lista de combinaciones por generacion y corrida /// </summary> /// <param name="">string corrida, int Generacion</param> /// <returns>List<ACombinacion> </returns> /// public static List<ACombinacion> ListaCombinacionEval(string corrida) { CediEntitiesModel context = new CediEntitiesModel(); List<ACombinacion> 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; } /// <summary> /// Obtiene una lista de combinaciones por generacion y corrida /// </summary> /// <param name="">string corrida, int Generacion</param> /// <returns>List<ACombinacion> </returns> /// public static List<ACombinacion> ListaCombinacion(string corrida, int Generacion) { CediEntitiesModel context = new CediEntitiesModel(); List<ACombinacion> 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; } /// <summary> /// Obtiene una lista de seleccionados por generacion y corrida
/// </summary> /// <param name="">string corrida, int Generacion</param> /// <returns>List<ACombinacion> </returns> /// public static List<ASeleccion> ListaSeleccion(string corrida, int Generacion) { CediEntitiesModel context = new CediEntitiesModel(); List<ASeleccion> 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; } /// <summary> /// Inserta los seleccionados. /// </summary> /// <param name="ObjInserta">ObjInserta tipo ASeleccion </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta los seleccionados. /// </summary> /// <param name="ObjInserta">ObjInserta tipo ASeleccion </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta los seleccionados. /// </summary> /// <param name="ObjInserta">ObjInserta tipo ASeleccion </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta los seleccionados. /// </summary> /// <param name="ObjInserta">ObjInserta tipo ASeleccion </param> /// <returns></returns> /// 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; } /// <summary> /// Inserta los log. /// </summary> /// <param name="ObjInserta">ObjInserta tipo ASeleccion </param> /// <returns></returns> /// 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 } }
Top Related