⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 behaviorboxhandler.java

📁 pso源程序
💻 JAVA
字号:
/**
 * Description: Provide the initialization for behaviors: R_INI, R_G, and R_T
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Nov 03, 2006
 */

package maosKernel.infoIO.parser;

import Global.basic.*;
import Global.methods.*;
import Global.util.parser.*;

import maosKernel.behavior.update.*;
import maosKernel.behavior.generate.*;
import maosKernel.behavior.mutate.*;
import maosKernel.behavior.construct.*;
import Global.define.BasicTag;
import maosKernel.represent.*;
import maosKernel.represent.landscape.*;

public class BehaviorBoxHandler {

  public AbsUpdator absUpdator;
  public AbsConstructor absConstructor;
  public AbsGenerator absGenerator;

  private KnowledgeContainer knowledgeContainer = new KnowledgeContainer();
  private KnowledgeParser knowledgeParser = new KnowledgeParser();

  private AbsLandscape virtualLandscape;

  public BehaviorBoxHandler() {
  }

  public void initLandscape(AbsLandscape virtualLandscape) {
    this.virtualLandscape = virtualLandscape;
  }

  public void parse(String contents) throws Exception {
    BasicMap[] sections = SectionParser.parseSections(contents);
    int index = -1;

    index = StringSearch.getSelectedIndex(sections, "Predefined");
    if (index!=-1) {
      String[] behaviorLines = GlobalString.getMeaningfulLines(sections[index].value);
      for (int i=0; i<behaviorLines.length; i++) {
        parseLine(behaviorLines[i]);
      }
    }
    index = StringSearch.getSelectedIndex(sections, "R_INI");
    if (index!=-1) {
      String[] behaviorLines = GlobalString.getMeaningfulLines(sections[index].value);
      absConstructor = createConstructor(behaviorLines);
    }

    index = StringSearch.getSelectedIndex(sections, "R_T");
    if (index!=-1) {
      String[] behaviorLines = GlobalString.getMeaningfulLines(sections[index].value);
      absUpdator = (AbsUpdator)parseLine(behaviorLines[0]);
    }

    index = StringSearch.getSelectedIndex(sections, "R_G");
    if (index!=-1) {
      String[] behaviorLines = GlobalString.getMeaningfulLines(sections[index].value);
      absGenerator = createGenerator(behaviorLines);
    }

  }

  private AbsInformationElement parseLine(String objLine) throws Exception {
    return knowledgeParser.parseLine(objLine, knowledgeContainer, virtualLandscape);
  }

  private AbsGenerator createGenerator(String[] behaviorNodeLines) throws Exception {
    AbsGenerator absGenerator = (AbsGenerator)parseLine(behaviorNodeLines[0]);
    if (behaviorNodeLines.length==1) return absGenerator;
    CombinedMGenerator combinedMGenerator= new CombinedMGenerator();
    combinedMGenerator.initGenerator(absGenerator);
    AbsExplicitMutator[] mutators = new AbsExplicitMutator[behaviorNodeLines.length-1];
    for (int i=1; i<behaviorNodeLines.length; i++) {

      mutators[i-1] = (AbsExplicitMutator)parseLine(behaviorNodeLines[i]);
    }
    combinedMGenerator.initMutators(mutators);
    return combinedMGenerator;
  }

  private AbsConstructor createConstructor(String[] behaviorNodeLines) throws Exception {
    AbsConstructor absConstructor = (AbsConstructor)parseLine(behaviorNodeLines[0]);
    if (behaviorNodeLines.length==1) return absConstructor;
    CombinedMConstructor combinedMConstructor= new CombinedMConstructor();
    combinedMConstructor.initConstructor(absConstructor);
    AbsExplicitMutator[] mutators = new AbsExplicitMutator[behaviorNodeLines.length-1];
    for (int i=1; i<behaviorNodeLines.length; i++) {
      mutators[i-1] = (AbsExplicitMutator)parseLine(behaviorNodeLines[i]);
    }
    combinedMConstructor.initMutators(mutators);
    return combinedMConstructor;
  }

  public String getBehaviorsString() {
    String initBehaviorInfo = "";
    initBehaviorInfo += "R_T(Updator): "+absUpdator.getSummary()+BasicTag.RETURN_TAG;
    initBehaviorInfo += "R_INI(Constructor): "+absConstructor.getSummary()+BasicTag.RETURN_TAG;
    initBehaviorInfo += "R_G(Generator): "+absGenerator.getSummary();
    return initBehaviorInfo;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -