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

📄 geneticalgorithmgui.java

📁 一个JAVA原程序
💻 JAVA
字号:
package edu.zsu.zouang.genetic.gui;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JProgressBar;import javax.swing.JTextField;import javax.swing.SwingUtilities;import javax.swing.border.TitledBorder;import edu.zsu.zouang.genetic.GenerationDetail;import edu.zsu.zouang.genetic.GeneticAlgorithm;public class GeneticAlgorithmGUI extends javax.swing.JFrame {	/**	 * 	 */	private static final long serialVersionUID = 5978534001656130751L;	private JTextField generationText;	private JTextField populationText;	private JTextField mutationText;	private JTextField crossText;	private JLabel generationLabel;	private JLabel averageFitnessLabel;	private JLabel maxFitnessLabel;	private JLabel minFitnessLabel;	private JProgressBar progressBar;	private GeneticAlgorithm ga = null;	public GeneticAlgorithmGUI() {		super();		setDefaultCloseOperation(DISPOSE_ON_CLOSE);		setResizable(false);		setTitle("遗传算法实验");		getContentPane().setLayout(null);		setSize(500, 358);		JPanel configPanel;		configPanel = new JPanel();		configPanel.setLayout(null);		configPanel.setBounds(10, 10, 472, 148);		getContentPane().add(configPanel);		configPanel.setBorder(new TitledBorder(null, "配置信息",				TitledBorder.DEFAULT_JUSTIFICATION,				TitledBorder.DEFAULT_POSITION, null, null));		final JLabel label_5 = new JLabel();		label_5.setBounds(10, 27, 60, 20);		configPanel.add(label_5);		label_5.setText("交配概率");		final JLabel label_6 = new JLabel();		label_6.setText("变异概率");		label_6.setBounds(10, 53, 60, 20);		configPanel.add(label_6);		final JLabel label_7 = new JLabel();		label_7.setText("种群规模");		label_7.setBounds(10, 79, 60, 20);		configPanel.add(label_7);		final JLabel label_8 = new JLabel();		label_8.setText("遗传代数");		label_8.setBounds(10, 105, 60, 20);		configPanel.add(label_8);		crossText = new JTextField();		crossText.setText("0.9");		crossText.setAutoscrolls(false);		crossText.setToolTipText("种群个体之间的交配概率");		crossText.setBounds(100, 25, 186, 20);		configPanel.add(crossText);		mutationText = new JTextField();		mutationText.setText("0.01");		mutationText.setAutoscrolls(false);		mutationText.setToolTipText("种群个体的变异概率");		mutationText.setBounds(100, 54, 186, 20);		configPanel.add(mutationText);		populationText = new JTextField();		populationText.setText("300");		populationText.setAutoscrolls(false);		populationText.setToolTipText("种群个体的数量");		populationText.setBounds(100, 80, 186, 20);		configPanel.add(populationText);		generationText = new JTextField();		generationText.setText("50");		generationText.setAutoscrolls(false);		generationText.setToolTipText("进化的次数");		generationText.setBounds(100, 106, 186, 20);		configPanel.add(generationText);		final JButton startButton = new JButton();		startButton.addActionListener(new ActionListener() {			public void actionPerformed(ActionEvent e) {				String crossPossibility = crossText.getText();				String mutaionPossibility = mutationText.getText();				String population = populationText.getText();				final String generation = generationText.getText();				try {					ga = new GeneticAlgorithm(Integer.valueOf(population), 0.0,							Double.valueOf(crossPossibility), Double									.valueOf(mutaionPossibility), 24);				} catch (NumberFormatException e1) {					// TODO Auto-generated catch block					JOptionPane.showMessageDialog(getContentPane(), "数字格式不合法!","错误", JOptionPane.ERROR_MESSAGE);				}				GeneticAlgorithmThread thread = new GeneticAlgorithmThread(Integer.valueOf(generation));				new Thread(thread).start();			}		});		startButton.setText("开始");		startButton.setBounds(331, 26, 99, 23);		configPanel.add(startButton);		final JButton closeButton = new JButton();		closeButton.addActionListener(new ActionListener() {			public void actionPerformed(ActionEvent e) {				JOptionPane.showMessageDialog(getContentPane(),						GeneticAlgorithmReportGenerator.createGeneticAlgorithmReportPanel(), "遗传算法报告",						JOptionPane.PLAIN_MESSAGE);			}		});		closeButton.setText("生成报告");		closeButton.setBounds(331, 64, 99, 23);		configPanel.add(closeButton);		final JButton aboutButton = new JButton();		aboutButton.addActionListener(new ActionListener() {			public void actionPerformed(ActionEvent e) {				JOptionPane						.showMessageDialog(								getContentPane(),								"版本:\t  v1.0\n作者:\t  邹昂\n专业:\t  软件生产技术\n学号:\t  04382036",								"关于", JOptionPane.INFORMATION_MESSAGE);			}		});		aboutButton.setText("关于");		aboutButton.setBounds(331, 104, 99, 23);		configPanel.add(aboutButton);		final JPanel detailPanel = new JPanel();		detailPanel.setLayout(null);		detailPanel.setBorder(new TitledBorder(null, "详细信息",				TitledBorder.DEFAULT_JUSTIFICATION,				TitledBorder.DEFAULT_POSITION, null, null));		detailPanel.setBounds(10, 193, 472, 123);		getContentPane().add(detailPanel);		final JLabel label_2 = new JLabel();		label_2.setText("当前代数");		label_2.setBounds(10, 25, 84, 15);		detailPanel.add(label_2);		final JLabel label = new JLabel();		label.setText("平均适应值");		label.setBounds(10, 46, 84, 15);		detailPanel.add(label);		final JLabel label_1 = new JLabel();		label_1.setText("最大适应值");		label_1.setBounds(10, 67, 84, 15);		detailPanel.add(label_1);		final JLabel label_3 = new JLabel();		label_3.setText("最小适应值");		label_3.setBounds(10, 88, 84, 15);		detailPanel.add(label_3);		generationLabel = new JLabel();		generationLabel.setText("0");		generationLabel.setBounds(119, 25, 164, 15);		detailPanel.add(generationLabel);		averageFitnessLabel = new JLabel();		averageFitnessLabel.setText("0.0");		averageFitnessLabel.setBounds(119, 46, 164, 15);		detailPanel.add(averageFitnessLabel);		maxFitnessLabel = new JLabel();		maxFitnessLabel.setText("0.0");		maxFitnessLabel.setBounds(119, 67, 164, 15);		detailPanel.add(maxFitnessLabel);		minFitnessLabel = new JLabel();		minFitnessLabel.setText("0.0");		minFitnessLabel.setBounds(119, 88, 164, 15);		detailPanel.add(minFitnessLabel);		progressBar = new JProgressBar();		progressBar.setStringPainted(true);		progressBar.setOpaque(true);		progressBar.setBounds(10, 164, 472, 18);		getContentPane().add(progressBar);		getContentPane().setPreferredSize(new Dimension(500, 358));	}	public class GeneticAlgorithmThread extends Thread implements Runnable {		private int times;		public GeneticAlgorithmThread(int times) {			this.times = times;		}		@Override		public void run() {			// TODO Auto-generated method stub			super.run();			for (int i = 0; i < times; i++) {				ga.crossoverPopulation();				SwingUtilities.invokeLater(new Runnable() {					public void run() {						// TODO Auto-generated method stub						GenerationDetail detail = ga.getDetail();						generationLabel.setText(String.valueOf(detail.getGeneration()));						averageFitnessLabel.setText(String.valueOf(detail.getAverageFitness()));						maxFitnessLabel.setText(String.valueOf(detail	.getMaxFitness()));						minFitnessLabel.setText(String.valueOf(detail.getMinFitness()));						progressBar.setValue(100 * (detail.getGeneration())/ Integer.valueOf(times));					}				});			}		}	}}

⌨️ 快捷键说明

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