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

📄 qlsimulator.java

📁 Reinforcement Learning
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileInputStream;import java.io.ObjectInputStream;import java.text.DecimalFormat;import java.util.Vector;import java.util.zip.GZIPInputStream;import javax.swing.BorderFactory;import javax.swing.DebugGraphics;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSeparator;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.WindowConstants;import javax.swing.border.TitledBorder;public class QLSimulator extends javax.swing.JFrame 						 implements ActionListener{	private JPanel jPanel;	private JButton jLoadButton;	private JSeparator jSeparator1;	private JButton jInitializeButton;	private JButton jStepButton;	private JButton jCycleButton;	private JFileChooser fc;	private JLabel jLabelSqSize;	private JCheckBox jDecayLRCheckBox;	private JTextField jDelayTextField;	private JLabel jDelayLabel;	private JLabel jConvErrorLabel;	private JTextField jConverErrorTextField;	private JCheckBox jPolicyCheckBox;	private JCheckBox jValuesCheckBox;	private JButton jUpdateButton;	private JButton jRefreshButton;	private JLabel jStatusLabel;	private JTextField jFileNameTextField;	private JTextField jCyclesTextField;	private JTextField sqSizeTextField;	private JTextField jLearnRateTextField; 	private JTextField pjogTextField;	private JLabel JLabelPJOG;	private JLabel jLabelLearningRate;	//	private Algorithms alg = null;//this is commented for q learning customization		private Maze myMaze = null;	private QLearning ql;	private boolean ShowValue = true;	private boolean ShowPolicy = true;	private boolean Animate = true;		DecimalFormat df = new DecimalFormat("0.0");    private JScrollPane jScrollPane;    	private String mazeStatus = "Load Maze First...";	private String algorithmStatus = "";    private JTextField jEpsilonTextField;    private JLabel jLabelEpsilon;    private JCheckBox jAnimateCheckBox;    private JButton jEpisodeButton;		{		//Set Look & Feel		try {			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");		} catch(Exception e) {			e.printStackTrace();		}	}		/**	 * Auto-generated main method to display this JFrame	 */	public static void main(String[] args) {		QLSimulator inst = new QLSimulator();		inst.setVisible(true);	}		public QLSimulator() {		super("RL-MDP:Simulation");		initGUI();			}		private void initGUI() {		try {		    this.setSize(1000, 800);			this.setExtendedState(MAXIMIZED_BOTH);			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);			{				jPanel = new JPanel();				this.getContentPane().add(jPanel, BorderLayout.CENTER);				jPanel.setLayout(null);				jPanel.setBackground(new java.awt.Color(235, 241, 238));				jPanel.setPreferredSize(new java.awt.Dimension(900, 700));			}						{				jLoadButton = new JButton();				jPanel.add(jLoadButton);				jLoadButton.setText("LoadMaze...");				jLoadButton.setBounds(25, 58, 110, 28);				jLoadButton.setActionCommand("LoadMaze");				jLoadButton.addActionListener(this);			}			{				JLabelPJOG = new JLabel();				jPanel.add(JLabelPJOG);				JLabelPJOG.setText("PJOG");				JLabelPJOG.setBounds(20, 105, 70, 21);				JLabelPJOG.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				pjogTextField = new JTextField();				jPanel.add(pjogTextField);				pjogTextField.setText("0.3");				pjogTextField.setBounds(95, 104, 40, 20);				pjogTextField.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jLabelEpsilon = new JLabel();				jPanel.add(jLabelEpsilon);				jLabelEpsilon.setText("Epsilon");				jLabelEpsilon.setBounds(20, 126, 70, 21);				jLabelEpsilon.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jEpsilonTextField = new JTextField();				jPanel.add(jEpsilonTextField);				jEpsilonTextField.setText("0.1");				jEpsilonTextField.setBounds(95, 125, 40, 20);				jEpsilonTextField.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jConvErrorLabel = new JLabel();				jPanel.add(jConvErrorLabel);				jConvErrorLabel.setText("Precision");				jConvErrorLabel.setBounds(20, 147, 70, 21);				jConvErrorLabel.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jConverErrorTextField = new JTextField();				jPanel.add(jConverErrorTextField);				jConverErrorTextField.setText("0.001");				jConverErrorTextField.setBounds(95, 146, 40, 20);				jConverErrorTextField.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jLabelLearningRate = new JLabel();				jPanel.add(jLabelLearningRate);				jLabelLearningRate.setText("Learning Rate");				jLabelLearningRate.setBounds(20, 168, 70, 21);				jLabelLearningRate.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jLearnRateTextField = new JTextField();				jPanel.add(jLearnRateTextField);				jLearnRateTextField.setText("0.7");				jLearnRateTextField.setBounds(95, 167, 40, 20);				jLearnRateTextField.setHorizontalAlignment(SwingConstants.RIGHT);			}            {                jDecayLRCheckBox = new JCheckBox();                jPanel.add(jDecayLRCheckBox);                jDecayLRCheckBox.setText("Decaying LR");                jDecayLRCheckBox.setBounds(36, 195, 95, 17);                jDecayLRCheckBox.setOpaque(false);                jDecayLRCheckBox.setSelected(true);                jDecayLRCheckBox.addActionListener(this);            }			{			    jInitializeButton = new JButton();				jPanel.add(jInitializeButton);				jInitializeButton.setText("Initialize");				jInitializeButton.setBounds(25, 223, 110, 28);				jInitializeButton.addActionListener(this);				jInitializeButton.setActionCommand("Initialize");			}			{				jUpdateButton = new JButton();				jPanel.add(jUpdateButton);				jUpdateButton.setText("Update");				jUpdateButton.setBounds(25, 258, 110, 28);				jUpdateButton.setActionCommand("Update");				jUpdateButton.addActionListener(this);			}			{				jStepButton = new JButton();				jPanel.add(jStepButton);				jStepButton.setText("Step");				jStepButton.setBounds(25, 314, 110, 28);				jStepButton.addActionListener(this);				jStepButton.setActionCommand("Step");			}			{				jEpisodeButton = new JButton();				jPanel.add(jEpisodeButton);				jEpisodeButton.setText("Episode");				jEpisodeButton.setBounds(25, 350, 110, 28);				jEpisodeButton.addActionListener(this);				jEpisodeButton.setActionCommand("Episode");			}			{			    jCyclesTextField = new JTextField();			    jPanel.add(jCyclesTextField);			    jCyclesTextField.setText("1000");			    jCyclesTextField.setBounds(25, 387, 35, 26);			}			{				jCycleButton = new JButton();				jPanel.add(jCycleButton);				jCycleButton.setText("Cycles");				jCycleButton.setBounds(65, 386, 70, 28);				jCycleButton.addActionListener(this);				jCycleButton.setActionCommand("Cycles");			}			{				jLabelSqSize = new JLabel();				jPanel.add(jLabelSqSize);				jLabelSqSize.setText("Square Size");				jLabelSqSize.setBounds(20, 445, 70, 21);				jLabelSqSize.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				sqSizeTextField = new JTextField();				jPanel.add(sqSizeTextField);				sqSizeTextField.setText("80");				sqSizeTextField.setBounds(96, 446, 40, 20);				sqSizeTextField.setHorizontalAlignment(SwingConstants.RIGHT);				sqSizeTextField.addActionListener(this);			}			{				jDelayLabel = new JLabel();				jPanel.add(jDelayLabel);				jDelayLabel.setText("Delay(in ms)");				jDelayLabel.setBounds(22, 470, 70, 21);				jDelayLabel.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jDelayTextField = new JTextField();				jPanel.add(jDelayTextField);				jDelayTextField.setText("30");				jDelayTextField.setBounds(96, 472, 40, 20);				jDelayTextField.setHorizontalAlignment(SwingConstants.RIGHT);			}			{				jRefreshButton = new JButton();				jPanel.add(jRefreshButton);				jRefreshButton.setText("Refresh");				jRefreshButton.setBounds(26, 500, 110, 28);				jRefreshButton.setActionCommand("Refresh");				jRefreshButton.addActionListener(this);			}			{				jValuesCheckBox = new JCheckBox();				jPanel.add(jValuesCheckBox);				jValuesCheckBox.setText("Show Values");				jValuesCheckBox.setBounds(35, 553, 93, 17);				jValuesCheckBox.setOpaque(false);				jValuesCheckBox.setSelected(true);				jValuesCheckBox.addActionListener(this);			}			{				jPolicyCheckBox = new JCheckBox();				jPanel.add(jPolicyCheckBox);				jPolicyCheckBox.setText("Show Policy");				jPolicyCheckBox.setBounds(35, 573, 85, 17);				jPolicyCheckBox.setOpaque(false);				jPolicyCheckBox.setSelected(true);				jPolicyCheckBox.addActionListener(this);			}			{				jAnimateCheckBox = new JCheckBox();				jPanel.add(jAnimateCheckBox);				jAnimateCheckBox.setText("Animate");				jAnimateCheckBox.setBounds(35, 593, 85, 17);				jAnimateCheckBox.setOpaque(false);				jAnimateCheckBox.setSelected(true);				jAnimateCheckBox.addActionListener(this);			}									{				jSeparator1 = new JSeparator();				jPanel.add(jSeparator1);				jSeparator1.setBounds(161, 2, 4, 400);				jSeparator1.setBorder(BorderFactory.createTitledBorder(						null,						"",						TitledBorder.LEADING,						TitledBorder.TOP,						new java.awt.Font("MS Sans Serif", 0, 11),						new java.awt.Color(0, 0, 0)));			}			{				jStatusLabel = new JLabel();				jPanel.add(jStatusLabel);				jStatusLabel.setText("Load Maze First... | Q-learning");				jStatusLabel.setBounds(182, 14, 770, 34);				jStatusLabel.setBackground(new java.awt.Color(192,192,192));				jStatusLabel.setBorder(BorderFactory.createTitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, new java.awt.Font("MS Sans Serif",0,11), new java.awt.Color(0,0,0)));				jStatusLabel.setFont(new java.awt.Font("Georgia",1,12));				jStatusLabel.setDebugGraphicsOptions(DebugGraphics.NONE_OPTION);				jStatusLabel.setOpaque(true);				jStatusLabel.setHorizontalAlignment(SwingConstants.CENTER);				jStatusLabel.setPreferredSize(new java.awt.Dimension(984, 35));			}		} catch (Exception e) {			e.printStackTrace();		}	}		public void actionPerformed(ActionEvent evt)	{

⌨️ 快捷键说明

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