Logo
Distributed Genetic Programming Framework
print print

File org.dgpf.gp.netautomaton.base.NetDefinition.java

Here you can find all the information about the file org.dgpf.gp.netautomaton.base.NetDefinition.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2006 Thomas Weise
 *
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2006-01-03 11:10:05
 * Original Filename: org.dgpf.netautomaton.base.NetDefinition.java
 * Version          : 2.2.2
 * Last modification: 2006-06-08
 * Last modified by : Thomas Weise
 *
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */


package org.dgpf.gp.netautomaton.base;

import org.dgpf.gp.automaton.base.Program;
import org.dgpf.gp.automaton.search.ExpressionHandler;
import org.dgpf.gp.automaton.search.InstructionHandler;
import org.dgpf.gp.automaton.search.ProgramDefinition;
import org.dgpf.gp.automaton.search.SequenceFactory;
import org.dgpf.search.api.FitnessFunction;
import org.dgpf.search.api.SearchContext;
import org.dgpf.search.api.SearchUtils;
import org.dgpf.search.api.utils.WeightedSet;
import org.sfc.events.IEventListener;


/**
 * This class holds the data defining how evolution will take place for
 * networked automatons.
 *
 * @see ProgramDefinition
 * @author Thomas Weise
 */

public class NetDefinition extends ProgramDefinition
  {
/**
 * The serial version uid.
 */

  private static  final long  serialVersionUID  = 1;
  
/**
 * The count of automatons to be simulated. This must be at least 4.
 */

  private         final int     m_automaton_count ;
/**
 * The maximum allowed length of a message. This must be at least 1.
 */

  private         final int     m_max_msg_len     ;
/**
 * The probability that a transmission gets lost without no special cause
 * like collision.
 */

  private         final double  m_lose_prob ;

/**
 * Create a new program definition.
 * @param p_definition  The search definition to use as blueprint for the
 *                      internally stored data.
 */

  public  NetDefinition(final NetDefinition p_definition)
    {
    super(p_definition);
    this.m_automaton_count = p_definition.m_automaton_count;
    this.m_max_msg_len     = p_definition.m_max_msg_len;
    this.m_lose_prob       = p_definition.m_lose_prob;
    }
  
/**
 * Create a new program definition.
 * @param p_functions   The fitness functions to be applied in this
 *                      evolution.
 *
 * @param p_instructions  The additionaly provided instruction handlers.
 *                        Set to <code>null</code> if not used.
 * @param p_automaton_count The count of automatons to be simulated.
 *                          This must be at least 4.
 * @param p_max_msg_len     The maximum allowed length of a message.
 *                          This must be at least 1.
 * @param p_lose_prob       The probability that a transmission gets lost
 *                          without no special cause like collision.
 * @param p_expressions   The additionaly provided expression handlers.
 *                        Set to <code>null</code> if not used.
 * @param p_sequences     The fixed sequence factories.
 *                        Set to <code>null</code> if not used.
 * @param p_min_mem_size  The minimum memory size of a program. This value
 *                        will at least be 1.
 */

  public NetDefinition(final int                              p_min_mem_size,
                       final int                              p_automaton_count,
                       final int                              p_max_msg_len,
                             double                           p_lose_prob,
                       final FitnessFunction<Program,?>[]     p_functions,
                       final WeightedSet<InstructionHandler>  p_instructions,
                       final  WeightedSet<ExpressionHandler>  p_expressions,
                       final WeightedSet<SequenceFactory>     p_sequences)
    {
    super(p_min_mem_size, p_functions,        
          (((p_instructions != null) && (p_instructions.size() > 0)) ?
             p_instructions : NetUtilities.BASIC_INSTRUCTION_SET),
          (((p_expressions != null) && (p_expressions.size() > 0)) ?
             p_expressions : NetUtilities.BASIC_EXPRESSION_SET),
          (((p_sequences != null) && (p_sequences.size() > 0)) ?
             p_sequences : NetUtilities.BASIC_SEQUENCE_FACTORIES));
    
    

    this.m_automaton_count = ((p_automaton_count > 4) ? p_automaton_count
                                                      : 4);
    this.m_max_msg_len     = ((p_max_msg_len     > 1) ? p_max_msg_len
                                                      : 1);
    p_lose_prob            = SearchUtils.format_positive(p_lose_prob);
    this.m_lose_prob       = ((p_lose_prob <= 1.0d) ? p_lose_prob : 0.0d);
    }

/**
 * Create a new definition for an evolution.
 * @param p_functions             The fitness functions to be applied in
 *                                this evolution.
 * @param p_min_mem_size  The minimum memory size of a program. This value
 *                        will at least be 1.
 * @param p_automaton_count The count of automatons to be simulated.
 *                          This must be at least 4.
 * @param p_max_msg_len     The maximum allowed length of a message.
 *                          This must be at least 1.
 * @param p_lose_prob       The probability that a transmission gets lost
 *                          without no special cause like collision.
 */

  public  NetDefinition
              (final int                          p_min_mem_size,
               final int                          p_automaton_count,
               final int                          p_max_msg_len,
               final double                       p_lose_prob,
               final FitnessFunction<Program,?>[] p_functions)
    {
    this(p_min_mem_size, p_automaton_count, p_max_msg_len, p_lose_prob,
         p_functions, null, null, null);
    }

/**
 * Obtain the count of network automatons to simulate.
 * @return  The count of network automatons to simulate.
 */

  public  final int get_automaton_count ()
    {
    return this.m_automaton_count;
    }

/**
 * Obtain the maximum length of a message that can be exchanged by network
 * automatons.
 * @return The maximum length of a message that can be exchanged by network
 *         automatons.
 */

  public  final int get_max_msg_len ()
    {
    return this.m_max_msg_len;
    }

/**
 * Obtain the probability that a transmission gets lost without no special
 * cause like collision.
 * @return  The probability that a transmission gets lost without no special
 *          cause like collision.
 */

  public  final double  get_lose_prob ()
    {
    return this.m_lose_prob;
    }
  
/**
 * Using this method, a search definition works as factory for search
 * contexts. This implementation returns an <code>NetContext</code>-
 * instance.
 * 
 * @param p_events  The event listener to be used to propagate
 *                      error events to, if needed.
 * 
 * @return A new search context.
 */

  @Override
  public SearchContext<Program> create_context
                                          (final IEventListener p_events)
    {
    return new NetContext(this, p_events);
    }


  }

File Information:

file name:NetDefinition.java
package:org.dgpf.gp.netautomaton.base
qualified name:org.dgpf.gp.netautomaton.base.NetDefinition.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/dgpf/gp/netautomaton/base/NetDefinition.java
size:7.772 KB (7959 B)
uploaded: 2015-07-22 04:10:55 GMT+0000
last update: 2006-06-08 12:52:40 GMT+0000
last access: 2017-11-23 07:33:03 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2017-11-23 07:33:03 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo