遺傳算法java版本_第1頁
遺傳算法java版本_第2頁
遺傳算法java版本_第3頁
遺傳算法java版本_第4頁
遺傳算法java版本_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;class

2、 Best (public int generations; /最佳適應(yīng)值public String str;/最佳染色體public double fitness; /最佳適應(yīng)值public class SGAFrame extends JFrame (private JTextArea textArea;private String str =;private Best best = null;/最佳染色體private String ipop = new String10;/染色體private int gernation = 0;染色體public static final int G

3、ENE = 5; /基因數(shù)/* Launch the application* param args*/public static void main(String args) (try SGAFrame frame = new SGAFrame(); frame.setVisible(true);catch (Exception e) e.printStackTrace();/*/public SGAFrame() (super();this.ipop = inialPops();getContentPane().setLayout(null);setBounds(100, 100, 461

4、, 277);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JLabel label = new JLabel();label.setText(X 的區(qū)間:);label.setBounds(23, 10, 88, 15);getContentPane().add(label);final JLabel label_1 = new JLabel();label_1.setText(0,1);label_1.setBounds(92, 10, 84, 15);getContentPane().add(label_1);final JBu

5、tton button = new JButton();button.addActionListener(new ActionListener() (public void actionPerformed(final ActionEvent e) ( SGAFrame s = new SGAFrame();str = str + cess() + n;textArea.setText(str););button.setText(求最大值);button.setBounds(323, 27, 99, 23);getContentPane().add(button);final JLab

6、el label_2 = new JLabel();label_2.setText(利用標(biāo)準(zhǔn)遺傳算法求解函數(shù)f(x)=xA2的最大值:);label_2.setBounds(23, 31, 318, 15);getContentPane().add(label_2);final JPanel panel = new JPanel(); panel.setLayout(new BorderLayout();panel.setBounds(23, 65, 399, 164); getContentPane().add(panel);final JScrollPane scrollPane = ne

7、w JScrollPane(); panel.add(scrollPane, BorderLayout.CENTER);textArea = new JTextArea();scrollPane.setViewportView(textArea);/*初始化一條染色體(用二進制字符串表示)* return 一條染色體*/private String inialPop() (String res =;for (int i = 0; i 0.5) res += 0; else res += 1;return res;/*初始化一組染色體* return染色體組*/private String in

8、ialPops() String ipop = new String10;for (int i = 0; i 10; i+) ipopi = inialPop();return ipop;/*將染色體轉(zhuǎn)換成x的值* param str 染色體* return染色體的適應(yīng)值*/private double calculatefitnessvalue(String str) (int b = Integer.parseInt(str, 2);double x =b;double fitness =x*x;return fitness;/*計算群體上每個個體的適應(yīng)度值;*按由個體適應(yīng)度值所決定的某個

9、規(guī)則選擇將進入下一代的個體;*/private void select() (double evals = new double10; / 所有染色體適應(yīng)值double p = new double10;/ 各染色體選擇概率double q = new double10;/ 累計概率double F = 0;/累計適應(yīng)值總和for (int i = 0; i best.fitness)( / 記錄最優(yōu)個體best.fitness = evalsi;best.generations = gernation;best.str = ipopi;F = F + evalsi; /所有染色體適應(yīng)值總和f

10、or (int i = 0; i 10; i+) (pi = evalsi / F;if (i = 0)qi = pi;else (qi = qi - 1 + pi;for (int i = 0; i 10; i+) (double r = Math.random();if (r = q0) (ipopi = ipop0;else (for (int j = 1; j 10; j+) (if (r qj)(ipopi = ipopj;break;/*交叉操作*交叉率為25%,平均為25%的染色體進行交叉*/private void cross() (String temp1, temp2;fo

11、r (int i = 0; i 10; i+) (if (Math.random() 0.25) (double r = Math.random();int pos = (int) (Math.round(r * 1000) % GENE;if (pos = 0) (pos = 1;temp1 = ipopi.substring(0, pos)+ ipop(i + 1) % 10.substring(pos);temp2 = ipop(i + 1) % 10.substring(0, pos)+ ipopi.substring(pos); ipopi = temp1;ipop(i + 1) /

12、 10 = temp2;/*基因變異操作* */private void mutation() (for (int i = 0; i = 10) chromosomeNum = 9;String temp;if (ipopchromosomeNum.charAt(mutationNum - 1) = 0) (if (mutationNum = 1) (temp = 1 + ipopchromosomeNum.substring(mutationNum);else (if (mutationNum != GENE) (temp = ipopchromosomeNum.substring(0, m

13、utationNum -1) + 1+ ipopchromosomeNum.substring(mutationNum);else (temp = ipopchromosomeNum.substring(0, mutationNum -1) + 1;else (if (mutationNum = 1) (temp = 0 + ipopchromosomeNum.substring(mutationNum);else (if (mutationNum != GENE) (temp = ipopchromosomeNum.substring(0, mutationNum -1) + 0+ ipopchromosomeNum.substring(mutationNum);else (temp = ipopchromosomeNum.substring(0, mutation

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論