/* * This file is part of JGAP. * * JGAP offers a dual license model containing the LGPL as well as the MPL. * * For licensing information please see the file license.txt included with JGAP * or have a look at the top of class org.jgap.Chromosome which representatively * includes the JGAP license policy applicable for any file delivered with JGAP. */ package org.jgap.distr.grid.wan; import org.homedns.dade.jcgrid.message.*; import org.jgap.distr.*; import org.jgap.distr.grid.gp.*; import org.jgap.gp.IGPProgram; import org.jgap.gp.GPFitnessFunction; import org.jgap.util.*; /** * WAN Utilities. * * @author Klaus Meffert * @since 3.3.4 */ public class WANUtils { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.2 $"; public WANUtils() { } public static String outputRequestInformation(ReceivedPacket a_packet) { GridMessageWorkRequest greq = (GridMessageWorkRequest) a_packet.getData(); JGAPRequestGP req = (JGAPRequestGP) greq.getWorkRequest(); MasterInfo worker = req.getRequesterInfo(); String postfix = req.getID(); String descr = req.getDescription(); if (descr != null && descr.length() > 0) { postfix += "(" + descr + ")"; } int popSize = req.getConfiguration().getPopulationSize(); String popSizeS = "pop:" + popSize; postfix += ", " + popSizeS; return outputInformation(worker, postfix); } public static String outputRequestInformation(RequestInformation a_info) { MasterInfo worker = a_info.requesterInfo; String postfix = a_info.getID(); String descr = a_info.getDescription(); if (descr != null && descr.length() > 0) { postfix += "(" + descr + ")"; } String reqDate; if (a_info.getRequestDate() == null) { reqDate = "unkn. date"; } else { reqDate = DateKit.dateToString(a_info.getRequestDate(), DateKit.DATEFORMAT_FULL_1); } String title = a_info.getTitle(); if (title == null) { title = "no title"; } int popSize = a_info.getPopSize(); String popSizeS = "pop:" + popSize; String s = worker.m_IPAddress + ":" + worker.m_name + " / " + postfix + " / " + title + " / " + reqDate + " / " + popSizeS; return s; } public static String outputResultInformation(ReceivedPacket a_packet) { JGAPResultGP res = (JGAPResultGP) a_packet.getData(); MasterInfo worker = res.getWorkerInfo(); String fitness = getFitnessString(res); String postfix = ""; String descr = res.getDescription(); if (descr != null && descr.length() > 0) { postfix += " (" + descr + ")"; } String dur; long duration = res.getDurationComputation(); if (duration > 1) { dur = " / " + (long) (duration / 1000) + "sec."; } else { dur = ""; } return outputInformation(worker, res.getID()) + fitness + dur + postfix; } public static String outputResultInformation(ResultInformation a_info) { MasterInfo worker = a_info.workerInfo; String fitness = NumberKit.niceDecimalNumber(a_info.m_fittest, 2); String postfix = ""; String respDate; if (a_info.getResponseDate() == null) { respDate = "unkn. date"; } else { respDate = DateKit.dateToString(a_info.getResponseDate(), DateKit.DATEFORMAT_FULL_1); } String descr = a_info.getDescription(); if (descr != null && descr.length() > 0) { postfix += " (" + descr + ")"; } String dur; long duration = a_info.getDurationComputation(); if (duration > 1) { dur = (long) (duration / 1000) + "sec."; } else { dur = "unkn. duration"; } String title = a_info.getTitle(); if (title == null) { title = "no title"; } String ID = a_info.getID(); int popSize = a_info.getPopSize(); String popSizeS = "pop:" + popSize; postfix += ", " + popSizeS; String s = worker.m_IPAddress + ":" + worker.m_name + " / " + ID + "/ " + fitness + " / " + title + " / " + respDate + " / " + popSizeS + " / " + dur + postfix; return s; } public static String getFitnessString(JGAPResultGP res) { String fitness = " / fitness: "; if (res.getFittest() != null) { fitness = fitness + res.getFittest().getFitnessValue(); } else { if (res.getPopulation() != null) { if (res.getPopulation().getGPProgram(0) != null) { fitness = fitness + NumberKit.niceDecimalNumber( res.getPopulation().getGPProgram(0).getFitnessValue(), 2); } else { fitness += "N/A"; } } else { fitness += "N/A"; } } return fitness; } public static String outputInformation(MasterInfo worker, String postFix) { String s = worker.m_IPAddress + ":" + worker.m_name + " / " + postFix; return s; } public static IGPProgram getFittest(JGAPResultGP a_res) { if (a_res == null) { return null; } if (a_res.getFittest() != null) { return a_res.getFittest(); } if (a_res.getPopulation() == null) { return null; } return a_res.getPopulation().determineFittestProgram(); } public static double getFitnessValue(IGPProgram a_prog) { if (a_prog == null) { return GPFitnessFunction.NO_FITNESS_VALUE; } return a_prog.getFitnessValue(); } }