• Jueves 28 de Marzo de 2024, 12:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - alexisrlm

Páginas: [1]
1
Delphi / [Código Fuente] Calculo del Dia de la Semana y Dia Juliano en Delphi [01/01/4713 a.C. hasta 01/01/4713 d.C.]
« en: Miércoles 9 de Febrero de 2011, 00:32 »
Hecho en Borland Delphi es para el calculo del dia de semana y dia juliano.

Rango de fechas:
[01/01/4713 a.C. hasta 01/01/4713 d.C.]

Me tope con un problema con la clase "TDateTime" de Delphi que solo admite fechas desde 1900 para arriba pero antes de esta fecha nada...entonces hice este programa con un rango de -4713 antes de Cristo hasta 4713 despues de Cristo inclusive calcula el dia de la semana.



Lo programe en el Borland Developer Studio 2006 adjunto los archivos fuente y el ejecutable en el zip en caso que tengas un version antigua aqui el codigo fuente de la Unit1.

//*******************************************************
unit Unit1;

interface

uses
  Windows Messages SysUtils Variants Classes Graphics Controls Forms
  Dialogs StdCtrls ComCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Edit2: TEdit;
    UpDown2: TUpDown;
    Edit3: TEdit;
    UpDown3: TUpDown;
    ComboBox1: TComboBox;
    Edit4: TEdit;
    Edit5: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label7: TLabel;
    Edit6: TEdit;
    procedure FormShow(Sender: Tobject);
    procedure Button1Click(Sender: Tobject);
    procedure Button2Click(Sender: Tobject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 //**
 //* Universal Date :
 //*
 //* programa de conversion de fechas gregorianas a julianas
 //* incluido el nombre del dia de la semana
 //* a partir de 01/01/4713 a.C. hasta una fecha actual o futura (d.C)
 //*
 //* version 1.00 15/06/05
 //*
 //**

procedure TForm1.Button1Click(Sender: Tobject);
var
   diamesano : integer;
   ano1mes1:integer;
   era:String;
   abcdediajulianod2e2f2g2h2i2l2 : real;
   diasemana:integer;
   Nomdiasemana NomMes:String;
begin

     dia:=UpDown1.Position;
     mes:=UpDown2.Position;
     ano:=UpDown3.Position;
     if (ComboBox1.ItemIndex=0) then era:=\'dc\';
     if (ComboBox1.ItemIndex=1) then era:=\'ac\';

     if (era = \'ac\') then
     begin
          ano := ano * (-1) + 1;
     end;

     if (mes < 3) then
     begin
          ano1 := ano - 1;
          mes1 := mes + 12;
     end
     else
     begin
          ano1 := ano;
          mes1 := mes;
     end;

     if ((ano > 1582) or (mes > 10) and (ano = 1582) or (dia >= 15) and (mes = 10) and (Ano = 1582)) then
     begin
          A := trunc((Ano1 / 100) - trunc(Ano1 / 100) mod 1);
          B := trunc((A / 4) - trunc(A / 4) mod 1);
          C := trunc(2 - A + B);
     end;

     if ((Ano < 1582) or (Mes < 10) and (Ano = 1582) or (Dia <= 4) and (Mes = 10) and (Ano = 1582)) then
     begin
          C := 0;
     end;

     D := trunc((365.25 * (Ano1 + 4716)) - trunc(365.25 * (Ano1 + 4716)) mod 1);
     E := trunc((30.6001 * (Mes1 + 1)) - trunc(30.6001 * (Mes1 + 1)) mod 1);

     DiaJuliano := (D + E + Dia + C - 1524);

     DiaSemana := trunc(DiaJuliano) mod 7;

     if (DiaSemana = 0) then NomDiaSemana := \'Lunes\';
     if (DiaSemana = 1) then NomDiaSemana := \'Martes\';
     if (DiaSemana = 2) then NomDiaSemana := \'Miercoles\';
     if (DiaSemana = 3) then NomDiaSemana := \'Jueves\';
     if (DiaSemana = 4) then NomDiaSemana := \'Viernes\';
     if (DiaSemana = 5) then NomDiaSemana := \'Sabado\';
     if (DiaSemana = 6) then NomDiaSemana := \'Domingo\';

     Edit5.Text:=NomDiaSemana;
     Edit6.Text:=floattostr(diajuliano);

     //**************************************************

     if (DiaJuliano < 2299161) then
     begin
          D2 := DiaJuliano;
     end;

     if (DiaJuliano > 2299160) then
     begin
          E2 := trunc(((DiaJuliano - 1867216.25) / 36524.25) - trunc((DiaJuliano - 1867216.25) / 36524.25) mod 1);
          D2 := (DiaJuliano + 1 + E2 - (trunc(E2 / 4) - trunc(E2 / 4) mod 1));
     end;

     F2 := (D2 + 1524);
     G2 := trunc(((F2 - 122.1) / 365.25) - trunc((F2 - 122.1) / 365.25) mod 1);
     H2 := trunc((G2 * 365.25) - trunc(G2 * 365.25) mod 1);
     I2 := trunc(((F2 - H2) / 30.6001) - trunc((F2 - H2) / 30.6001) mod 1);

     Dia := round(F2 - H2 - trunc((I2 * 30.6001) - trunc(I2 * 30.6001) mod 1));

     if (I2 < 14) then Mes := trunc(I2 - 1);
     if (I2 > 13) then Mes := trunc(I2 - 13);
     if (Mes > 2) then L2 := G2 - 4716;
     if (Mes < 3) then L2 := G2 - 4715;

     if (L2 > 0)  then Ano := trunc(L2);
     if (L2 < 1)  then Ano := trunc(L2 * (-1) + 1);

     if (L2 > 0) then Era := \'d.C.\';
     if (L2 < 1) then Era := \'a.C.\';

     if (Mes = 1) then NomMes := \'Enero\';
     if (Mes = 2) then NomMes := \'Febrero\';
     if (Mes = 3) then NomMes := \'Marzo\';
     if (Mes = 4) then NomMes := \'Abril\';
     if (Mes = 5) then NomMes := \'Mayo\';
     if (Mes = 6) then NomMes := \'Junio\';
     if (Mes = 7) then NomMes := \'Julio\';
     if (Mes = 8) then NomMes := \'Agosto\';
     if (Mes = 9) then NomMes := \'Septiembre\';
     if (Mes = 10) then NomMes := \'Octubre\';
     if (Mes = 11) then NomMes := \'Noviembre\';
     if (Mes = 12) then NomMes := \'Diciembre\';

     Edit4.Text:=floattostr(dia)+\' de \'+NomMes+\' de \'+floattostr(ano)+\' \'+era;

end;

procedure TForm1.Button2Click(Sender: Tobject);
begin
     Close;
end;

procedure TForm1.FormShow(Sender: Tobject);
var
   YearMonthDayHourMinSecMsec : word;
   Present:TDateTime;
begin
     Present:=now;
     DecodeDate(PresentYearMonthDay);
     UpDown1.Position:=Day;
     UpDown2.Position:=Month;
     UpDown3.Position:=Year;
end;

end.
//*******************************************************

Espero os sirva Saludos
Alexis León.

P.D. La misma logica del programa tambien lo hice para Java con algunas diferencias en la nomenclatura propias del lenjuage Java.

Autor: Alexis León

2
Java / [Código Fuente] Calculo de dia Juliano desde (01/01/4713 a.C.)
« en: Miércoles 14 de Junio de 2006, 20:04 »
Estos 02 programas convierten un dia del calendario Gregoriano a dia Juliano desde 01/01/4713 a.C. hasta nuestros dias y dias futuros.(los programas estan zipeados en Udate.zip, descomprimirlos y ubicarlos en esta ruta C:\Udate)

El programa "Udate.java" es en modo consola
Para ejecutarlo desde consola, el formato de entrada es dia mes año era.
Por ejem. dia=14 mes=7 año=2006 era=dc (dc ó ac)

C:\Udate\java Udate 14 7 2006 dc



El programa "UdateGui2" es en modo grafico
Para ejecutarlo desde consola o simbolo del sistema:

C:\Udate\java UdateGui2



P.D. adjunto en el archivo zipeado el codigo fuente de los programas.

Saludos Amigos.

Autor: Alexis Leon

http://alexisleon.up.md

3
Java / [Código Fuente] Red Neuronal - xor example
« en: Viernes 21 de Octubre de 2005, 01:18 »
La presente es un ejemplo de una Red Neuronal Artificial, que entrena una neurona para solucionar el "xor", gracias a Jeff Heaton http://www.jeffheaton.com , quien dio este codigo con licencia GPL GNU.

Dado el XOR con la respectiva salida luego del entrenamiento:
   a b  Output
   0 0    0
   1 0    1
   0 1    1
   1 1    0

El Zip contiene 3 archivos.

Network.java : es la clase que contiene el motor de entrenamiento.

XorExample.java : Es la interfaz grafica.

TestNeuralNetwork.java : Es la interfaz de consola.

Prob� los archivos de la siguiente manera:
Ubicacion de los archivos descomprimidos:
c:\Neural Network\Network.java
c:\Neural Network\TestNeuralNetwork.java
c:\Neural Network\XorExample.java

Compilacion de los archivos con JDK version j2sdk1.4.2_09
c:\Neural Network\javac *.java

Ejecucion del programa:
c:\Neural Network\java XorExample


c:\Neural Network\java TestNeuralNetwork


-Caso que no compile posiblemente haya que definir las rutas del Java copiar el siguente codigo a vuestro "Autoexec.bat" (es necesario reiniciar el sistema)
----------------------------------------------
@echo off

SET JAVAPATH=C:\j2sdk1.4.2_09\
SET PATH=.;%JAVAPATH%\bin;%PATH%
SET CLASSPATH=.\;%JAVAPATH%\lib;%CLASSPATH%
----------------------------------------------
 
-En la linea SET JAVAPATH=C:\j2sdk1.4.2_09\
define la ruta del JSK de java, caso si teneis otra version del JDK solo la cambias por la ruta de la carpeta que contiene el JDK que teneis Ejm C:\j2sdk1.5\

Amigos espero haber sido lo mas minucioso posible para la correcta ejecucion de este peque�o programa para los que recien se encaminan en el mundo la RNA.

P.D. Si desean un interfaz para modelamiento y entrenamiento de redes neuronales pueden visitar:

Joone - Java Object Oriented Neural Engine
www.jooneworld.com
Por supuesto es Open Source.

Saludos.

Autor: Alexis L.

4
Inteligencia Artificial / Red Neuronal Para Xor - En Java
« en: Lunes 10 de Octubre de 2005, 04:03 »
Hola amigos, les presento una "Feedforward Backpropagation Neural Network" de Jeff Heaton http://www.jeffheaton.com para los que se inician en el mundo de las RNA, claro esta este es un ejemplo practico del entrenamiento de las entradas del XOR "a,b" y su correspondiente salida "Ouput".

a b Output
-----------
0 0 0
0 1 1
1 0 1
1 1 0

* La clase Network.java tiene liciencia Limited GNU public, license (LGPL).
Clase Network.java (Motor de aprendizaje)
Clase XorExample.java (Ejecutando modo interfaz)
Clase TestNeuralNetwork.java (ejecutando modo consola)

Imagen modo interfaz:

Imagen modo consola:


Saludos. :hola:

P.D. Las pruebas las realize con el JDK version j2sdk1.4.2_09 de Sun. ejecutadas desde la consola, claro uds. lo pueden ejecutar con un IDE como el JCreator u el Eclipse. :comp:

Páginas: [1]