📄 combinedmgenerator.java
字号:
/**
* Description: The description of generating operator for achieve an trail state
*
* @ Author Create/Modi Note
* Xiaofeng Xie Apr 28, 2006
* Xiaofeng Xie Jul 14, 2006
*
* @version 1.0
*/
package maosKernel.behavior.generate;
import maosKernel.represent.*;
import maosKernel.represent.landscape.*;
import maosKernel.memory.*;
import maosKernel.behavior.mutate.*;
import maosKernel.represent.encode.*;
public class CombinedMGenerator extends AbsGenerator implements ISetMAInfoEngine, ISetMSInfoEngine {
private AbsGenerator baseGenerator;
private AbsExplicitMutator[] mutators = new AbsExplicitMutator[0];
private final int ENCODE_NULL= -1;
private final int ENCODE_LOCAL= 0;
private final int ENCODE_GLOBAL= 1;
private int encodeStatus =ENCODE_NULL;
public void initGenerator(AbsGenerator constructor) {
this.baseGenerator = constructor;
}
public String getSummary() {
String sumInfo = "";
sumInfo += super.getSummary();
sumInfo += "[Primary: "+baseGenerator.getSummary();
if (mutators.length>0) {
sumInfo += "; Mutators: ";
for (int i=0; i<mutators.length; i++) {
sumInfo += mutators[i].getSummary();
if (i<mutators.length-1) sumInfo += "|";
}
}
sumInfo += "]";
return sumInfo;
}
public void initMutators(AbsExplicitMutator[] mutators) {
this.mutators = mutators;
initEncodeStatus();
}
private void initEncodeStatus() {
if (mutators.length==0) encodeStatus = ENCODE_NULL;
else if (mutators[mutators.length-1] instanceof IIndirectEncodeGlobalEngine) {
encodeStatus = ENCODE_GLOBAL;
} else {
for (int i=0; i<mutators.length; i++) {
if (!(mutators[i] instanceof IIndirectEncodeLocalEngine)) {
return;
}
}
encodeStatus = ENCODE_LOCAL;
}
}
private void postEncoding(BasicEncodeData encodeData) {
if (encodeStatus==ENCODE_NULL) return;
if (encodeStatus==ENCODE_GLOBAL) {
((IIndirectEncodeGlobalEngine)mutators[mutators.length-1]).encodeGlobal(encodeData);
return;
}
if (encodeStatus==ENCODE_LOCAL && !encodeData.isInfoRemoved()) {
for (int i=0; i<mutators.length; i++) {
((IIndirectEncodeLocalEngine)mutators[i]).encodeLocal(encodeData);
}
}
}
public void setInfo(EncodedState baseState) {
if (baseGenerator instanceof ISetMAInfoEngine) {
((ISetMAInfoEngine)baseGenerator).setInfo(baseState);
}
}
public void setInfo(IGetSocialInfoEngine baseState) {
if (baseGenerator instanceof ISetMSInfoEngine) {
((ISetMSInfoEngine)baseGenerator).setInfo(baseState);
}
}
public AbsGenerator getSubGenerator() {
return this.baseGenerator;
}
public boolean generateBehavior(EncodedState trailState) {
if(!baseGenerator.generateBehavior(trailState)) return false;
for (int i=0; i<mutators.length; i++) {
mutators[i].mutateBehavior(trailState.getSearchState());
}
postEncoding(trailState.getEncodeInfo());
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -