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

📄 efloycommand.java

📁 一个swarm的小程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	}

	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 + -