Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Agentes Distribuidos y Fractales usando DSS/VPL

La semana pasada escribí una aplicación de base para agentes distribuidos usando DSS/VPL, agentes que intercambian mensajes arbitrarios e implementan un balanceo de carga rudimentario. Pueden leer los detalles en:

Agentes Distribuidos usando DSS/VPL
Distributed Agents using DSS/VPL

Ayer, extendí el ejemplo con un nuevo proyecto, Fractal:

Pueden bajarlo desde mi Skydrive.

Tiene dos DSS Service Components, uno es el Calculator: calcula un sector del fractal de Mandelbrot. El otro componente es el Renderer, que tiene un formulario para controlar y mostrar los resultados del cálculo. El mensaje que transporta la información del sector a calcular es:

public class SectorInfo : MessagePayload { public double RealMinimum { get; set; } public double ImgMinimum { get; set; } public double Delta { get; set; } public int FromX { get; set; } public int FromY { get; set; } public int Width { get; set; } public int Height { get; set; } public int MaxIterations { get; set; } public int MaxValue { get; set; } }

Otra clase es el mensaje que retorna el cálculo:

public class Sector : MessagePayload { public int FromX { get; set; } public int FromY { get; set; } public int Width { get; set; } public int Height { get; set; } public int[] Values { get; set; } }

El Calculator divide el sector a calcular, si lo considera demasiado grade. Podría calcularlo en un solo paso, pero me parece interesante esta solución, para repartir el trabajo entre varios nodos:

 

private void Calculate(AgentMessage msg) { LogInfo("Entering Calculator with Action: " + msg.Action); SectorInfo sectorInfo = (SectorInfo) msg.Payload; LogInfo(String.Format("X {0} Y {1} Width {2} Height {3}", sectorInfo.FromX, sectorInfo.FromY, sectorInfo.Width, sectorInfo.Height)); if (sectorInfo.Width > 100 && sectorInfo.Height > 100) SplitSector(sectorInfo); else CalculateSector(sectorInfo); }

Como en el ejemplo de la semana pasada, podemos ejecutar este ejemplo desde un diagrama VPL, que se llama FractalVpl1:

Acá hay un solo Renderer, y dos agentes Calculator. Si lanzamos este programa VPL, aparece una ventana. Esta es su apariencia (luego de presionar el botón Calculate):

Podemos arrastrar el mouse para seleccionar una nueva región, o usar los botones de Zoom In y Zoom Out. El botón de Reset vuelve a la posición y colores iniciales. El botón Reset Colors vuelve a los colores iniciales, que pueden ser cambiados al azar con el botón New Colors.

Hay otro programa VPL, llamado FractalVpl2, que puede ser usado para ejecutar el mismo ejemplo de forma distribuida. Tiene un diagrama con dos AgentHosts:

y dos nodos:

Debemos compilar el ejemplo VPL y pedir de ejecutar sus nodos en forma distribuida, usando el rundeployer.cmd (para más detalles, ver mi anterior post, mencionado al principio).

Estos son algunos de los gráficos que produce el sistema:

 

(Este post es una traducción del original en "Anglish":

Distributed Agents and Fractals using DSS/VPL

)

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com

Published Mon, Jun 23 2008 18:11 by lopez

Comments

# Recursos de Microsoft Robotics Developer Studio@ Wednesday, September 10, 2008 8:17 AM

En estos días, estuve dando varias charlas sobre Microsoft Robotics Developer Studio (MRDS), quisiera

Angel "Java" Lopez

# Recursos de Microsoft Robotics Developer Studio | Buanzolandia@ Wednesday, September 10, 2008 7:11 PM

Pingback from  Recursos de Microsoft Robotics Developer Studio | Buanzolandia

Recursos de Microsoft Robotics Developer Studio | Buanzolandia

# Microsoft Robotics in enterprise application « Angel “Java” Lopez on Blog@ Wednesday, September 24, 2008 3:22 AM

Pingback from  Microsoft Robotics in enterprise application « Angel “Java” Lopez on Blog

Microsoft Robotics in enterprise application « Angel “Java” Lopez on Blog

# Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog@ Wednesday, September 24, 2008 3:27 AM

Pingback from  Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog

Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog

# Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog@ Wednesday, September 24, 2008 3:28 AM

Pingback from  Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog

Microsoft Robotics in enterprise applications « Angel “Java” Lopez on Blog

# Canales y GoRoutines en AjSharp (Parte 1)@ Tuesday, December 29, 2009 3:41 AM

Hace dos años ya, estuve explorando Microsoft Robotics, y su librería CCR (Concurrency and Coordination

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: