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

📄 main_frame.java

📁 Genetic Programming。GP算法在方程逼近求解上的应用。
💻 JAVA
字号:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Main_Frame extends JFrame implements ActionListener, Observer{
	
		JButton butt1=new JButton("启动GP");
		JButton butt2=new JButton("停止GP");
		JButton butt3=new JButton("最小二乘法");
		JButton butt5=new JButton("设置最小二乘法阶数");
		JButton butt4=new JButton("设置参数");
        Min_Polynomial_Way math;
	    
	    Config cf=new Config();//Config是JDIALOG
	    Math_Dialog dl=new Math_Dialog();
	    Container c;
	    JTextArea a1=new JTextArea();
		JTextArea a2=new JTextArea();
	    
	    public Main_Frame()
	    {   
	    	cf.pack();
	    	cf.setLocation(200,200);
	    	cf.setModal(true);
	    	butt1.setActionCommand("1");
	    	butt2.setActionCommand("2");
	    	butt3.setActionCommand("3");
	    	butt4.setActionCommand("4");
	    	butt5.setActionCommand("5");
	    	butt1.addActionListener(this);
	    	butt2.addActionListener(this);
	    	butt3.addActionListener(this);
	    	butt4.addActionListener(this);
	    	butt5.addActionListener(this);
	     
	    	
	    	}
	    
	public static void main(String[]args)
	{
				 
		Main_Frame f2=new Main_Frame();
		f2.cf.xy_axis.setBackground(Color.white);
		JPanel p=new JPanel();
		p.setLayout(new GridLayout(1,2));	
		p.add(f2.cf.xy_axis,BorderLayout.CENTER);
		//p.add(ptemp);
		JPanel p2=new JPanel();
		p2.setLayout(new GridLayout(3,1));
		JPanel p3=new JPanel();
		p3.setLayout(new GridLayout(6,1));
		p3.add(f2.cf.c3);
		p3.add(f2.butt1);
		p3.add(f2.butt2);
		p3.add(f2.butt3);
		p3.add(f2.butt5);
		p3.add(f2.butt4);
		p2.add(p3);
		JPanel p4=new JPanel();
		p4.setLayout(new BorderLayout());
		p4.add(new JLabel("最佳个体"),BorderLayout.NORTH);
		p4.add(new JScrollPane(f2.a1));
		p2.add(p4);
		JPanel p5=new JPanel();
		p5.setLayout(new BorderLayout());
		p5.add(new JLabel("函数表达式 "),BorderLayout.NORTH);
		p5.add(new JScrollPane(f2.a2));
		
		p2.add(p5);
		
		p.add(p2);
		JPanel p6=new JPanel();
	
		Container cp2=f2.getContentPane();
		cp2.add(p);
		f2.cf.xy_axis.setTrace(0,((f2.cf.gp).fitnessCases).data);
		f2.setLocation(100,200);
		f2.setSize(850,500);
		f2.show();

		
		
		
		}
		
	  public void actionPerformed(ActionEvent e)
	  {
	    if(e.getActionCommand().equals("1"))
	    {  
	       butt1.setEnabled(false);
	       butt3.setEnabled(false);
	       butt4.setEnabled(false);
	       butt5.setEnabled(false);
	       cf.c3.setEnabled(false);
	       cf.gp.addObserver(this);//必须在这里注册,否则注册观察者是根据对象,而非引用的
	       cf.gp.start();
	    	
	    	}
	    else if(e.getActionCommand().equals("2"))
	    {
	       butt1.setEnabled(true);
	       butt3.setEnabled(true);
	       butt4.setEnabled(true);
	       butt5.setEnabled(true);
	       cf.c3.setEnabled(true);
	       cf.gp.thread.stop();
	    	}
	  	else if(e.getActionCommand().equals("3"))
	    {
	    	RealPoint []p=Original_Function_Point_Set.read(cf.rawText);
	    	 math=new Min_Polynomial_Way(p,dl.exp);
	    	
	    	
	    	
	    	
	    	p=math.Processing();
	    	String s=math.Expression;
	    	
	    	cf.xy_axis.setTrace(2,p);
	    	a2.setText(s);
	    	
	    	}
	  	else if(e.getActionCommand().equals("4"))
	    {
	      	 cf.setVisible(true);
	    	}
	    	
	    else if(e.getActionCommand().equals("5"))
	    {
	    	dl.setVisible(true);
	    	
	    	}
	  	}	
	  	
	   public void update(Observable object, Object  argument) {
	   	
	   	if(argument instanceof Best_Tree)
	   	{           Best_Tree winner=(Best_Tree)argument;
	   	             
	   	           /* for(int i=0;i<winner.data.length;i++)
	   	            {
	   	            	System.out.println(winner.data[i].x+""+winner.data[i].y);
	   	            	
	   	            	}*/
	   	   			cf.xy_axis.setTrace(1,winner.data);
			        a1.setText("目前GP发现的最佳个体是\n" +
					"代数:" +
					winner.GenerationNumber + ".\n" +
					"它的调整适应值为: " + winner.tree.standardizedFitness);
					
					a2.setText("其函数表达式为::\n\n" + 
					winner.tree.program.toString(0));
	   		
	   		
	   		
	   		
	   		}
	   	 else if(argument instanceof GP_State)
	   	{   
	   	    int temp=((GP_State)argument).getState();
	   		switch(temp)
	   		{
	   			case 0:break;
	   			case 1:break;
	   			case 2:
	   			{
	   	   butt1.setEnabled(true);
	       butt3.setEnabled(true);
	       butt4.setEnabled(true);
	   			break;}
	   			}
	   		
	   		}
	   	
	   	}
      
	
	}




⌨️ 快捷键说明

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