📄 efloycommand.java
字号:
}
void FillFloyNumbers(Choice choice) {
int i;
for (i=0;i<floys.length;i++) {
choice.addItem(""+(i+1));
}
choice.select("1");
}
void SortFloys() {
int i,j;
boolean swap;
int e;
Efloy etemp;
for (i=0;i < floys.length-1;i++) {
swap = false;
for (j=floys.length-2;j>=i;j--) {
e = floys[j].fitness - floys[j+1].fitness;
if (e < 0) {
etemp = floys[j];
floys[j] = floys[j+1];
floys[j+1] = etemp;
swap = true;
}
}
if (swap == false) {
break;
}
}
}
private int GetFloyNumber(int fid) {
int i, num;
num = -1;
for (i=0;i<Efloys.Efloys.length;i++)
{
if (Efloys.Efloys[i].id == fid)
num= i;
}
return num;
}
int GetSelectedFloy(Choice floynum) {
String fnum;
int fid, num;
fid = -1;
fnum = readString(floynum, "1");
if (fnum.equals("Stranger"))
fid = 0;
else
fid = Integer.parseInt(fnum);
if (fid > -1)
num = GetFloyNumber(fid);
else
num = -1;
return num;
}
private void UpdateControls(Choice floynum) {
String fnum;
int fid, num;
fnum = readString(floynum, "1");
if (fnum.equals("Stranger"))
fid = 0;
else
fid = Integer.parseInt(fnum);
num = GetFloyNumber(fid);
VarChoices[0].select(Float.toString((float) floys[num].MaxSpeed));
VarChoices[1].select(Float.toString((float) floys[num].BounceSpeed));
VarChoices[2].select(Float.toString((float) floys[num].ApproachAcceleration));
VarChoices[3].select(Float.toString((float) floys[num].CenterAcceleration));
VarChoices[4].select(Float.toString((float) floys[num].CollisionDistance));
SecChoices[0].select(Float.toString((float) floys[num].DistBrotherFactor));
SecChoices[1].select(Float.toString((float) floys[num].DistStrangerFactor));
SecChoices[2].select(Float.toString((float) floys[num].DistLocalFactor));
SecChoices[3].select(Float.toString((float) floys[num].CollisionBrotherFactor));
SecChoices[4].select(Float.toString((float) floys[num].CollisionStrangerFactor));
SecChoices[5].select(Float.toString((float) floys[num].CollisionLocalFactor));
FixChoices[0].select(floys[num].GetTypeName());
FixChoices[1].select(floys[num].GetColorName());
FixChoices[2].select(Float.toString((int) floys[num].NumberOfNeighbors));
FixChoices[3].select(Float.toString((int) floys[num].MutationFactor));
FixChoices[4].select(Integer.toString((int) floys[num].CrossoverFactor));
FixChoices[5].select(Integer.toString((int) floys[num].energy));
FixChoices[6].select(Integer.toString((int) floys[num].safety));
FixChoices[7].select(Integer.toString((int) floys[num].cooperation));
FixChoices[8].select(Integer.toString((int) floys[num].fitness));
EnvChoices[0].select(Integer.toString((int) floys[num].PopulationSize));
EnvChoices[1].select(Integer.toString((int) floys[num].sleep));
EnvChoices[2].select(Float.toString((float) floys[num].EnergyFactor));
EnvChoices[3].select(Float.toString((float) floys[num].SafetyFactor));
EnvChoices[4].select(Float.toString((float) floys[num].CooperationFactor));
EnvChoices[5].select(Float.toString((float) floys[num].MaxEnergyDose));
EnvChoices[6].select(Float.toString((float) floys[num].MaxSafetyDose));
EnvChoices[7].select(Float.toString((float) floys[num].MaxCooperationDose));
EnvChoices[8].select(Float.toString((float) floys[num].FreeWillFactor));
}
private String readString(Choice c, String d) {
String n;
try {
n = c.getSelectedItem();
}
catch (Exception e) {
n = d;
}
return n;
}
private int readInt(Choice c, int d) {
int n;
try {
n = Integer.parseInt(c.getSelectedItem());
}
catch (NumberFormatException e) {
n = d;
}
return n;
}
private float readFloat(Choice c, float d) {
float n;
try {
n = Float.valueOf(c.getSelectedItem()).floatValue();
}
catch (NumberFormatException e) {
n = d;
}
return n;
}
private Color readColor(Choice c, String d) {
String n;
Color col;
try {
n = c.getSelectedItem();
}
catch (Exception e) {
n = d;
}
col = GetColorByString(n);
return col;
}
public Color GetColorByString(String c) {
Color col;
if (c.equals("BLACK")) col = Color.black;
else if (c.equals("BLUE")) col = Color.blue;
else if (c.equals("CYAN")) col = Color.cyan;
else if (c.equals("DARKGRAY")) col = Color.darkGray;
else if (c.equals("GRAY")) col = Color.gray;
else if (c.equals("GREEN")) col = Color.green;
else if (c.equals("LIGHTGRAY")) col = Color.lightGray;
else if (c.equals("ORANGE")) col = Color.orange;
else if (c.equals("PINK")) col = Color.pink;
else if (c.equals("RED")) col = Color.red;
else if (c.equals("WHITE")) col = Color.white;
else if (c.equals("YELLOW")) col = Color.yellow;
else col = Color.green;
return col;
}
private void UpdateVariable(int num) {
Efloys.params[0].value = readFloat(VarChoices[0], floys[num].MaxSpeed);
Efloys.params[1].value = readFloat(VarChoices[1], floys[num].BounceSpeed);
Efloys.params[2].value = readFloat(VarChoices[2], floys[num].ApproachAcceleration);
Efloys.params[4].value = readFloat(VarChoices[3], floys[num].CenterAcceleration);
Efloys.params[8].value = readInt(VarChoices[4], floys[num].CollisionDistance);
}
private void UpdateSecondary(int num) {
Efloys.params[5].value = readFloat(SecChoices[0], floys[num].DistBrotherFactor);
Efloys.params[6].value = readFloat(SecChoices[1], floys[num].DistStrangerFactor);
Efloys.params[7].value = readFloat(SecChoices[2], floys[num].DistLocalFactor);
Efloys.params[9].value = readFloat(SecChoices[3], floys[num].CollisionBrotherFactor);
Efloys.params[10].value = readFloat(SecChoices[4], floys[num].CollisionStrangerFactor);
Efloys.params[11].value = readFloat(SecChoices[5], floys[num].CollisionLocalFactor);
}
private void UpdateFixed(int num) {
//Efloys.fixpars[3].value = readInt(FixChoices[0], floys[num].type);
Efloys.fixpars[3].value = FixChoices[0].getSelectedIndex();
Efloys.fixpars[4].value = FixChoices[1].getSelectedIndex();
/*
if (Efloys.fixpars[4].value == 10)
Efloys.fixpars[3].value = 1;
else
Efloys.fixpars[3].value = 0;
*/
Efloys.fixpars[5].value = readInt(FixChoices[2], floys[num].NumberOfNeighbors);
Efloys.fixpars[6].value = readFloat(FixChoices[3], floys[num].MutationFactor);
Efloys.fixpars[7].value = readFloat(FixChoices[4], floys[num].CrossoverFactor);
Efloys.fixpars[8].value = readInt(FixChoices[5], floys[num].energy);
Efloys.fixpars[9].value = readInt(FixChoices[6], floys[num].safety);
Efloys.fixpars[10].value = readInt(FixChoices[7], floys[num].cooperation);
Efloys.fixpars[11].value = readInt(FixChoices[8], floys[num].fitness);
}
private void UpdateEnviron(int num) {
Efloys.envpars[12].value = readInt(EnvChoices[0], floys[num].PopulationSize);
Efloys.envpars[3].value = readInt(EnvChoices[1], floys[num].sleep);
Efloys.envpars[5].value = readFloat(EnvChoices[2], floys[num].EnergyFactor);
Efloys.envpars[6].value = readFloat(EnvChoices[3], floys[num].SafetyFactor);
Efloys.envpars[7].value = readFloat(EnvChoices[4], floys[num].CooperationFactor);
Efloys.envpars[9].value = readFloat(EnvChoices[5], floys[num].MaxEnergyDose);
Efloys.envpars[10].value = readFloat(EnvChoices[6], floys[num].MaxSafetyDose);
Efloys.envpars[11].value = readFloat(EnvChoices[7], floys[num].MaxCooperationDose);
Efloys.envpars[8].value = readFloat(EnvChoices[8], floys[num].SurviversFactor);
Efloys.envpars[13].value = readFloat(EnvChoices[9], floys[num].FreeWillFactor);
Efloys.envpars[14].value = readFloat(EnvChoices[10], floys[num].LifeSpan);
Efloys.NF = readInt(EnvChoices[0], floys[num].PopulationSize);
Efloys.KICK = readFloat(EnvChoices[9], floys[num].FreeWillFactor);
Efloys.SLEEP = (long) readInt(EnvChoices[1], floys[num].sleep);
}
private void UpdateFloy(int num) {
int id = Efloys.Efloys[num].id;
int e = Efloys.Efloys[num].energy;
int s = Efloys.Efloys[num].safety;
int c = Efloys.Efloys[num].cooperation;
String newpars = Efloys.EncodeChrom(Efloys.params);
String newfixs = Efloys.EncodeChrom(Efloys.fixpars);
String newenvs = Efloys.EncodeChrom(Efloys.envpars);
floys[num] = new Efloy(Efloys.params, newpars, Efloys.fixpars, newfixs, Efloys.envpars, newenvs);
Efloys.Efloys[num].id = id;
Efloys.Efloys[num].energy = e;
Efloys.Efloys[num].safety = s;
Efloys.Efloys[num].cooperation = c;
Efloys.Efloys[num].GetFitness();
}
void UpdateOne(int num) {
int i;
/*
for (i=0;i<floys.length;i++) {
UpdateEnviron(i);
UpdateFloy(i);
}
*/
UpdateEnviron(0);
UpdateFloy(0);
UpdateVariable(num);
UpdateSecondary(num);
UpdateFixed(num);
UpdateFloy(num);
}
void UpdateAll() {
int i;
for (i=0;i<floys.length;i++) {
UpdateVariable(i);
UpdateSecondary(i);
UpdateFixed(i);
UpdateEnviron(i);
UpdateFloy(i);
}
}
void UpdateTitle(String title, boolean WithNumber) {
TitleLabel.setText(title);
if (WithNumber) {
Floynum.show();
FloynumLabel.show();
}
else {
Floynum.hide();
FloynumLabel.hide();
}
TitleLabel.resize(TitleLabel.preferredSize());
FloynumLabel.resize(FloynumLabel.preferredSize());
}
public boolean action(Event e, Object arg) {
int i, j, num;
if (e.target == Environ) {
UpdateTitle("环境属性", false);
cardLayout.show(InputPanel,"Environ");
}
if (e.target == Fixed) {
UpdateTitle("固定特性", true);
cardLayout.show(InputPanel,"Fixed");
}
if (e.target == Variable) {
UpdateTitle("基本特性", true);
cardLayout.show(InputPanel,"Variable");
}
if (e.target == Secondary) {
UpdateTitle("次要特性", true);
cardLayout.show(InputPanel,"Secondary");
}
if (e.target == Test) {
UpdateTitle("测试屏", false);
cardLayout.show(InputPanel,"Test");
}
if (e.target == Update) {
num = GetSelectedFloy(Floynum);
UpdateOne(num);
UpdateControls(Floynum);
if (Efloys.envpars[12].value != CurPop) {
Efloys.ResetPopulation = true;
Efloys.First = true;
}
}
if (e.target == Updateall) {
UpdateAll();
UpdateControls(Floynum);
Efloys.ResetPopulation = true;
Efloys.First = true;
}
if (e.target == Floynum) {
UpdateControls(Floynum);
}
if (e.target == Quit) {
this.hide();
this.dispose();
return true;
}
TitleLabel.resize(TitleLabel.preferredSize());
return true;
}
public boolean handleEvent(Event ev) {
if (ev.id == Event.WINDOW_DESTROY) {
this.hide();
this.dispose();
return true;
}
else
return super.handleEvent(ev);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -