亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? swingapplet.java

?? 用java寫的一個(gè)強(qiáng)化學(xué)習(xí)程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
//<APPLET CODE = "SwingApplet.class" WIDTH = 700 HEIGHT = 400 ></applet>

// load for early releases
//import com.sun.java.swing.*;

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

public class SwingApplet extends JApplet implements ActionListener,Runnable{
	static final int BW=300, BH=300, BX=8, BY=8, NUM_WALLS=20,
		SAMP_W = 100, SAMP_H = 100;
	static final int DEF_EPOCHS = 50000;
	static final long DELAY=500;
	static int MAXX=400, MAXY=400;
	
	CatAndMouseGame game;
	CatAndMouseWorld trainWorld, playWorld; // seperate world from playing world
	RLController rlc;
	RLearner rl;
		
	JTabbedPane tabbedPane;
	Container instructions, playPanel, trainPanel, worldPanel;
	
	// world setting components
	JTextField rows, cols, obst;
	sampleWorlds samples;
	boolean[][] selectedWalls;
	ButtonGroup worldSelGroup;
	boolean sampleWorld=true, designWorld=false;
	
	// instructions components
	JLabel instructLabel, usageLabel;
	final String INSTRUCT_MESSAGE = "<html><p>This applet demonstrates how reinforcement <p>learning can be used to train an agent to play <p>a simple game.  In this case the game is Cat and <p>Mouse- the mouse tries to get to the cheese <p>and back to it's hole, the cat tries to catch the mouse.",
		USAGE_MESSAGE = "<html><p>You can train the agent by selecting the Train tab.  At <p>any time you can select the Play tab to see how <p>well the agent is performing!  Of course, the more <p>training, the better the chance the mouse <p>has of surviving :)";

	// train panel components
	public static final String START="S", CONT_CHECK="C";
	final String SETTINGS_TEXT = "These settings adjust some of the internal workings of the reinforcement learning algorithm.",
		SETTINGS_TEXT2 = "Please see the web pages for more details on what the parameters do.";
	JTextField alpha, gamma, epsilon, epochs, penalty, reward;
	JButton startTraining, stopTraining;
	JRadioButton softmax, greedy, sarsa, qlearn;
	JProgressBar progress;
	JLabel learnEpochsDone;	
	
	// play panel components
	JButton startbutt, stopbutt, pausebutt;
	boardPanel bp;
	public int mousescore=0, catscore =0;
	JLabel catscorelabel, mousescorelabel;
	final String MS_TEXT = "Mouse Score:", CS_TEXT = "Cat Score:";
	JSlider speed, smoothSlider;
	Image catImg, mouseImg;
	chartPanel graphPanel;
	JLabel winPerc;
			
	boardObject cat, mouse, cheese, back, hole, wall;

					
	public SwingApplet() {
		getRootPane().putClientProperty("defeatSystemEventQueueCheck",Boolean.TRUE);
		
	}
	
	public void init() {
		// load images
		catImg = getImage(getCodeBase(), "cat.gif");
		mouseImg = getImage(getCodeBase(), "mouse.gif");
		Image wallImg = getImage(getCodeBase(), "wall.gif");
		Image cheeseImg = getImage(getCodeBase(), "cheese.gif");
		Image floorImg = getImage(getCodeBase(), "floor.gif");
		
/*		Image catImg = getImage(ClassLoader.getSystemResource("cat.gif"));
		Image mouseImg = getImage(ClassLoader.getSystemResource("mouse.gif"));
		Image wallImg = getImage(ClassLoader.getSystemResource("wall.gif"));
		Image cheeseImg = getImage(ClassLoader.getSystemResource("cheese.gif"));*/

		// set up board objects
		cat = new boardObject(catImg);
		mouse = new boardObject(mouseImg);
		cheese = new boardObject(cheeseImg);
		back = new boardObject(floorImg);
		hole = new boardObject(Color.orange);
		wall = new boardObject(wallImg);
		
		// setup content panes
		tabbedPane = new JTabbedPane();
		
		//instructions = makeInstructions();
		worldPanel = makeWorldPanel();
		playPanel = makePlayPanel();
		trainPanel = makeTrainPanel();
		
		tabbedPane.addTab("World", worldPanel);
		tabbedPane.addTab("Play", playPanel);
		//tabbedPane.addTab("Instructions", instructions);
		tabbedPane.addTab("Train", trainPanel);
		tabbedPane.setSelectedIndex(0);

		// disable panes until world created
		tabbedPane.setEnabledAt(1,false);
		tabbedPane.setEnabledAt(2,false);
		
		// set up controls
		//setContentPane(new JPanel());
		//getContentPane().add(tabbedPane);
		
		getContentPane().add(tabbedPane);
	}

	public void worldInit(int xdim, int ydim, int numwalls) { 
		trainWorld = new CatAndMouseWorld(xdim, ydim,numwalls);
		gameInit(xdim,ydim);
	}
	public void worldInit(boolean[][] givenWalls) {
		int xdim = givenWalls.length, ydim = givenWalls[0].length;
		trainWorld = new CatAndMouseWorld(xdim, ydim,givenWalls);
		gameInit(xdim,ydim);		
	}
	private void gameInit(int xdim, int ydim) {
		// disable this pane
		tabbedPane.setEnabledAt(0,false);
		
		playWorld = new CatAndMouseWorld(xdim, ydim,trainWorld.walls);

		bp.setDimensions(xdim, ydim);
		
		rlc = new RLController(this, trainWorld, DELAY);
		rl = rlc.learner;
		rlc.start();
		
		game = new CatAndMouseGame(this, DELAY, playWorld, rl.getPolicy());
		game.start();

		// set text fields on panels
		penalty.setText(Integer.toString(trainWorld.deathPenalty));
		reward.setText(Integer.toString(trainWorld.cheeseReward));
		alpha.setText(Double.toString(rl.getAlpha()));
		gamma.setText(Double.toString(rl.getGamma()));
		epsilon.setText(Double.toString(rl.getEpsilon()));

		// enable other panes
		tabbedPane.setEnabledAt(1,true);
		tabbedPane.setEnabledAt(2,true);
		
		// switch active pane
		tabbedPane.setSelectedIndex(1);

		// set first position on board
		updateBoard();
	}
	
	// this method is triggered by SwingUtilities.invokeLater in other threads
	public void run() { updateBoard(); }
	
	/************ general functions ****************/
	public void updateBoard() {
		// update score panels
		mousescorelabel.setText(MS_TEXT+" "+Integer.toString(mousescore));
		catscorelabel.setText(CS_TEXT+" "+Integer.toString(catscore));
		if (game.newInfo) {
			updateScore();
			game.newInfo = false;
		}
		
		// update progress info
		progress.setValue(rlc.epochsdone);
		learnEpochsDone.setText(Integer.toString(rlc.totaldone));
		if (rlc.newInfo) endTraining();
		
		// update game board
		bp.clearBoard();

		// draw walls
		boolean[][] w = game.getWalls(); 
		for (int i=0; i<w.length; i++) {
			for (int j=0; j<w[0].length; j++) {
				if (w[i][j]) bp.setSquare(wall, i, j);
			}
		}

		// draw objects (cat over mouse over cheese)
		bp.setSquare(cheese, game.getCheese());
		bp.setSquare(mouse, game.getMouse());
		bp.setSquare(cat, game.getCat());
		//bp.setSquare(hole, game.getHole());
					
		// display text representation
		//System.out.println(bp);
		bp.repaint();
	}

	void doTraining() {
		// begin training
		int episodes = Integer.parseInt(epochs.getText());
		double aval = Double.parseDouble(alpha.getText());
		double gval = Double.parseDouble(gamma.getText());
		double eval = Double.parseDouble(epsilon.getText());
		int cval = Integer.parseInt(reward.getText());
		int dval = Integer.parseInt(penalty.getText());
				
		rl.setAlpha(aval);
		rl.setGamma(gval);
		rl.setEpsilon(eval);
				
		// disable controls
		startTraining.setEnabled(false);
		epochs.setEnabled(false);
		reward.setEnabled(false);
		penalty.setEnabled(false);
		alpha.setEnabled(false);
		gamma.setEnabled(false);
		epsilon.setEnabled(false);
		softmax.setEnabled(false);
		greedy.setEnabled(false);
		sarsa.setEnabled(false);
		qlearn.setEnabled(false);
				
		// fix progress bar
		progress.setMinimum(0);
		progress.setMaximum(episodes);
		progress.setValue(0);
				
		// enable stop button
		stopTraining.setEnabled(true);
				
		// start training
		trainWorld.cheeseReward = cval;
		trainWorld.deathPenalty = dval;
		rlc.setEpisodes(episodes);
	}

	void endTraining() {
		// stop training
		rlc.stopLearner();
		
		// enable buttons
		startTraining.setEnabled(true);
		epochs.setEnabled(true);
		reward.setEnabled(true);
		penalty.setEnabled(true);
		alpha.setEnabled(true);
		gamma.setEnabled(true);
		epsilon.setEnabled(true);
		softmax.setEnabled(true);
		greedy.setEnabled(true);
		sarsa.setEnabled(true);
		qlearn.setEnabled(true);

		// disable stop button
		stopTraining.setEnabled(false);
	}

	void updateScore() {
		double newScore = Math.round(1000*((double)mousescore)/(catscore + mousescore))/10;
		winPerc.setText(Double.toString(newScore)+"%");
		graphPanel.updateScores();
		graphPanel.repaint();
		game.gameActive = true;		
	}	
	/************ general functions ****************/

	/********** Methods to construct panels *************/
	Container makeWorldPanel() {
		JPanel worldPane = new JPanel();
		worldPane.setLayout(new BorderLayout());

		worldSelGroup = new ButtonGroup();
		
		worldPane.add(chooseWorld(), BorderLayout.CENTER);
		//worldPane.add(customWorld(), BorderLayout.EAST);
		JButton startbutt = new JButton("Click here to start!");
		startbutt.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// selected world type, choose action
				if (sampleWorld) {
					worldInit(selectedWalls);
				} else if (designWorld) {
					// custom designed world
				
				} else {
					// random world
					worldInit(Integer.parseInt(cols.getText()),
						Integer.parseInt(rows.getText()),
						Integer.parseInt(obst.getText()));
				}
			}
		});
		worldPane.add(startbutt, BorderLayout.SOUTH);
		return worldPane;
	}
	
	Container customWorld() {
		JPanel pane = new JPanel();
		pane.setLayout(new BorderLayout());
		
		JRadioButton random = new JRadioButton("Random World");
		random.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// enable obstacles field
				obst.setEnabled(true);
				designWorld=false;
				sampleWorld=false;
			}
		});
		worldSelGroup.add(random);
		pane.add(random, BorderLayout.NORTH);
		
		/*JRadioButton custom = new JRadioButton("Custom Design");
		custom.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// enable obstacles field
				obst.setEnabled(false);
				designWorld=true;
				sampleWorld=false;
			}
		});*/
		
		// add controls to set dimensions
		JPanel labelpane = new JPanel();
		labelpane.setLayout(new GridLayout(0,2));

		//worldSelGroup.add(custom);
		
		//JPanel controls = new JPanel();
		//controls.setLayout(new GridLayout(0,1));
		rows = new JTextField(Integer.toString(BY), 20);
		cols = new JTextField(Integer.toString(BX), 20);
		obst = new JTextField(Integer.toString(NUM_WALLS), 20);
		
		labelpane.add(new JLabel("Rows:",JLabel.RIGHT));
		labelpane.add(rows);
		labelpane.add(new JLabel("Columns:",JLabel.RIGHT));
		labelpane.add(cols);
		labelpane.add(new JLabel("Obstacles:",JLabel.RIGHT));
		labelpane.add(obst);
		
		//labelpane.setBorder(BorderFactory.createTitledBorder("Custom World"));
		//labelpane.add(random);
		//labelpane.add(custom);

		pane.add(labelpane, BorderLayout.CENTER);
		//pane.add(controls, BorderLayout.EAST);
		//pane.add(labelpane);
		//pane.add(controls);
		
		return pane;	
	}
	
	Container chooseWorld() {
		JPanel pane = new JPanel();
		pane.setLayout(new GridLayout(0,3));

		// grab each sample
		samples = new sampleWorlds();
		for (int i=0; i<samples.numSamples(); i++) {
			JPanel thisPanel = new JPanel();
			thisPanel.setLayout(new BorderLayout());
			
			// set first as selected
			if (i==0) selectedWalls = samples.getWalls(i);
			
			JRadioButton b = new JRadioButton(samples.getTitle(i), (i==0));
			b.setHorizontalAlignment(SwingConstants.LEFT);
			b.setActionCommand(Integer.toString(i));
			b.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					int index = Integer.parseInt(e.getActionCommand());
					selectedWalls = samples.getWalls(index);
					sampleWorld=true;
				}
			});
			
			boolean[][] w = samples.getWalls(i);
			
			// create boardPanel object for this world
			boardPanel pic = new boardPanel(back, w.length, w[0].length,SAMP_W, SAMP_H);
			// add walls to panel
			for (int x=0; x<w.length; x++)
				for (int y=0; y<w.length; y++)
					if (w[x][y]) pic.setSquare(wall, x, y);
			
			worldSelGroup.add(b); // add to button group
			pic.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
			
			thisPanel.add(pic, BorderLayout.CENTER);
			thisPanel.add(b, BorderLayout.NORTH); // add to pane
			thisPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
			
			pane.add(thisPanel);
		}

		// add random world option
		pane.add(customWorld());
		pane.setBorder(BorderFactory.createTitledBorder("Choose World"));
		return pane;
	}
	
	Container makeInstructions() {
		JPanel pane = new JPanel();
		pane.setLayout(new GridLayout(2,1));
		
		instructLabel = new JLabel(INSTRUCT_MESSAGE);
		usageLabel = new JLabel(USAGE_MESSAGE);
		

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿高跟呻吟高潮一区| 日韩欧美亚洲另类制服综合在线 | 26uuu成人网一区二区三区| 日韩欧美国产一二三区| 欧美精彩视频一区二区三区| 伊人色综合久久天天| 水野朝阳av一区二区三区| 久久97超碰色| 91麻豆产精品久久久久久 | 日韩高清在线观看| 国产精品自拍毛片| 欧洲中文字幕精品| 欧美成人福利视频| 亚洲日韩欧美一区二区在线| 蜜臀av国产精品久久久久 | 亚洲一区电影777| 狠狠色综合播放一区二区| 99久久精品情趣| 欧美一区二区视频在线观看| 日本一区二区三区在线不卡| 日韩黄色小视频| 成人黄色小视频在线观看| 欧美久久久久免费| 国产精品毛片久久久久久| 日韩国产精品久久久| 成人av一区二区三区| 日韩午夜中文字幕| 亚洲免费毛片网站| 国产久卡久卡久卡久卡视频精品| 欧美在线一二三四区| 国产日韩欧美精品综合| 免费成人在线观看视频| 在线观看视频一区二区欧美日韩| 26uuu精品一区二区三区四区在线| 亚洲精品视频在线观看网站| 国产中文一区二区三区| 欧美日韩午夜影院| 综合自拍亚洲综合图不卡区| 国产主播一区二区三区| 欧美精品99久久久**| 亚洲免费av网站| 国产·精品毛片| 精品国产露脸精彩对白| 亚洲国产精品一区二区久久 | 国产精品麻豆视频| 国产综合色精品一区二区三区| 3d动漫精品啪啪| 亚洲激情中文1区| 成人黄色免费短视频| 国产三级精品在线| 久久99精品国产.久久久久 | 精品系列免费在线观看| 欧洲精品一区二区三区在线观看| 国产精品亲子伦对白| 激情五月激情综合网| 日韩你懂的在线观看| 日韩中文字幕区一区有砖一区 | 午夜精品久久久久久久 | 一级做a爱片久久| 94色蜜桃网一区二区三区| 中文字幕av一区二区三区高 | 亚洲欧美综合在线精品| 国产福利91精品| 久久久久久久久久久久久夜| 久久er精品视频| 欧美成人激情免费网| 久久99精品久久久| 日韩精品一区二区三区视频在线观看| 日本不卡在线视频| 7777精品伊人久久久大香线蕉的 | 欧美久久久一区| 五月天精品一区二区三区| 欧美日韩成人综合在线一区二区| 亚洲成人一二三| 91超碰这里只有精品国产| 视频一区二区三区在线| 欧美精品一二三区| 青青草国产成人99久久| 精品久久久久久久人人人人传媒| 精品亚洲国产成人av制服丝袜| 久久综合九色综合久久久精品综合 | 国产ts人妖一区二区| 国产精品美女一区二区三区| 成人精品视频一区二区三区| 国产精品久久精品日日| 91在线视频网址| 亚洲一区二区视频| 欧美精选一区二区| 久久不见久久见免费视频7| 国产婷婷一区二区| 成人中文字幕电影| 一区二区三区鲁丝不卡| 欧美久久久影院| 久久91精品久久久久久秒播| 久久婷婷综合激情| 成人av中文字幕| 亚洲一区二区在线免费看| 欧美一区国产二区| 国产精品538一区二区在线| 国产精品剧情在线亚洲| 91行情网站电视在线观看高清版| 午夜欧美视频在线观看 | 国产精品一区2区| 中文字幕一区二区不卡| 在线视频国内自拍亚洲视频| 青青草一区二区三区| 国产欧美日韩综合精品一区二区| 91麻豆免费在线观看| 日本欧美一区二区三区乱码| 国产亚洲精品aa| 色婷婷久久一区二区三区麻豆| 日韩中文欧美在线| 久久久久久久久久电影| 色猫猫国产区一区二在线视频| 午夜免费久久看| 国产欧美精品一区| 欧美日韩国产bt| 国产精品一卡二卡在线观看| 亚洲激情校园春色| 日韩精品一区二区三区蜜臀| 成人动漫av在线| 日韩精品久久理论片| 国产精品美女久久久久久久久| 欧美色电影在线| 国产成人午夜精品5599| 丝袜国产日韩另类美女| 国产婷婷色一区二区三区在线| 欧美日韩国产首页在线观看| 高清国产一区二区| 性做久久久久久久免费看| 国产午夜精品久久久久久久| 欧美美女bb生活片| 成人在线一区二区三区| 日本欧美韩国一区三区| 亚洲免费资源在线播放| 久久久av毛片精品| 欧美伦理电影网| 99久久99久久精品国产片果冻| 久久精品国产亚洲5555| 亚洲一二三区视频在线观看| 欧美激情资源网| 日韩欧美中文字幕一区| 色久综合一二码| 国产成人在线看| 久久精品国产99国产精品| 亚洲午夜精品17c| 国产精品另类一区| 欧美xxxxxxxx| 欧美日韩国产免费| 91日韩在线专区| 国产精品一二三区在线| 日韩综合小视频| 亚洲一区二区三区自拍| 国产精品二区一区二区aⅴ污介绍| 欧美mv和日韩mv国产网站| 欧美日韩午夜在线视频| 日本高清无吗v一区| 成人夜色视频网站在线观看| 久久福利资源站| 视频一区视频二区在线观看| 亚洲一线二线三线视频| 亚洲欧洲色图综合| 日本一区二区视频在线| 久久久综合九色合综国产精品| 4438x成人网最大色成网站| 在线精品视频免费播放| 色婷婷狠狠综合| 99精品视频在线播放观看| 成人高清视频在线观看| 国产成人在线视频网址| 国内外成人在线| 日韩高清一区在线| 青青草成人在线观看| 日产国产高清一区二区三区| 亚洲成人av中文| 天天综合天天综合色| 五月婷婷另类国产| 五月天亚洲精品| 婷婷久久综合九色综合绿巨人| 亚洲午夜国产一区99re久久| 一级特黄大欧美久久久| 亚洲国产三级在线| 日日夜夜免费精品| 青草av.久久免费一区| 久久精品国内一区二区三区| 久久成人免费网| 韩国毛片一区二区三区| 国产精品一区在线观看你懂的| 国产在线精品免费av| 国产一区二区网址| 福利电影一区二区三区| 成人av电影观看| 色美美综合视频| 欧美日本韩国一区| 欧美va日韩va| 欧美国产日韩一二三区| 自拍偷拍国产精品| 亚洲国产精品久久一线不卡| 日韩高清在线不卡| 国产做a爰片久久毛片|