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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gajava.txt

?? 這是一個應用遺傳算法解決的函數優化問題
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
    private static Random random = new Random();
    
    public Randomizer(int lower, int upper){
        if(upper <= lower){
            throw new IllegalStateException("Upper is smaller than lower!");
        }
        this.lower = lower;
        this.upper = upper;
    }
    public Double nextDouble(){
        return Double.valueOf(lower + (upper - lower) * random.nextDouble());
    }
    
    public Integer nextInteger(){
        return Integer.valueOf(lower +random.nextInt(upper - lower));
    }
    
    public char[] nextBitArray(int length){
        if(length <= 0){
            throw new IllegalStateException("Length is less than ZERO!");
        }
        char[] temp = new char[length];
        for(int i = 0; i < length ; i++){
            temp[i] = random.nextBoolean() ? '1' : '0';
        }
        return temp;
    }
}

染色體:
package edu.zsu.zouang.inheritence;

import java.util.Arrays;

import edu.zsu.zouang.util.Randomizer;

public class Chromosome implements Cloneable{
    private double fitness = -1; //代表未計算適應函數
    
    private double select = -1; // 選擇概率
    
    private char[] chromo; //染色體串
    
    private Randomizer random;
    
    private int lower;
    
    private int upper;
    
    public Chromosome(int lower, int upper, int length){
        this.lower = lower;
        this.upper = upper;
        random = new Randomizer(lower, upper);
        chromo = random.nextBitArray(length);
    }

    /** *//**
     * 克隆一個染色體
     */
    public Chromosome clone(){
        Chromosome c = new Chromosome(lower,upper,chromo.length);
        char[] temp = new char[c.chromo.length];
        System.arraycopy(chromo, 0, temp, 0, chromo.length);
        c.setChromo(temp);
        return c;
    }
    public char[] getChromo() {
        return chromo;
    }

    public void setChromo(char[] chromo) {
        this.chromo = chromo;
    }

    public double getFitness() {
        return fitness;
    }

    public void setFitness(double fitness) {
        this.fitness = fitness;
    }

    public double getSelect() {
        return select;
    }

    public void setSelect(double select) {
        this.select = select;
    }
    
    
}

適應函數接口:
package edu.zsu.zouang.inheritence;

public interface FitnessCalculate {
    public double calculate(char[] chromosome);
}

本函數的適應函數,既然是求最大值,干脆用求解的函數來做適應函數
package edu.zsu.zouang.inheritence;

/** *//**
 * 計算xyz*sin(xyz)最大值的遺傳函數適應值
 * 2007-4-25
 * @author Zou Ang
 * Contact <a href ="mailto:richardeee@gmail.com">Zou Ang</a>
 */
public class FunctionFitness implements FitnessCalculate {

    
    public double calculate(char[] chromosome) {
        /**//*
         * x、y、z都用8位來編碼,即x,y,z都屬于[0,255]
         */
        double x = 0;
        double y = 0;
        double z = 0;
        for(int i = 0; i < 8; i++){
            int j = i + 8;
            int k = i + 16;
            x = x + Math.pow(2, 7 - i) * (Integer.valueOf(chromosome[i]) - 48);
            y = y + Math.pow(2, 7 - i) * (Integer.valueOf(chromosome[j]) - 48);
            z = z + Math.pow(2, 7 - i) * (Integer.valueOf(chromosome[k]) - 48);
        }
        return x * y * z * Math.sin(x*y*z);
    }

}
種群詳細信息類:
package edu.zsu.zouang.inheritence;

public class GenerationDetail {
    private double averageFitness = 0.0;
    
    private double maxFitness = 0.0;
    
    private double minFitness = 0.0;

    public double getAverageFitness() {
        return averageFitness;
    }

    public void setAverageFitness(double averageFitness) {
        this.averageFitness = averageFitness;
    }

    public double getMaxFitness() {
        return maxFitness;
    }

    public void setMaxFitness(double maxFitness) {
        this.maxFitness = maxFitness;
    }

    public double getMinFitness() {
        return minFitness;
    }

    public void setMinFitness(double minFitness) {
        this.minFitness = minFitness;
    }
    
    
}

最后是主類:
package edu.zsu.zouang.inheritence;

import java.util.ArrayList;
import java.util.List;

import edu.zsu.zouang.util.Randomizer;

public class GeneticAlgorithm {
    
    private int generation; //進化代數
    
    private int population; //種群數量
    
    private double crossoverPossibility; //繁殖概率
    
    private double mutationPossibility; //變異概率
    
    private FitnessCalculate calculator = new FunctionFitness(); //適應函數計算
    
    private List<Chromosome> clist = new ArrayList<Chromosome>();
    
    private Randomizer random1; //隨機數生成器1,用于生成變異位和交配位
    
    private Randomizer random2 = new Randomizer(0,1); //隨機數生成器2,用于生成0-1之間的概率
    
    private GenerationDetail detail = new GenerationDetail();
    
    public GeneticAlgorithm(int population, double sp, double cp, double mp,int length){
        this.population = population;
        this.crossoverPossibility = cp;
        this.mutationPossibility = mp;
        random1 = new Randomizer(0,length - 1);
        generatePopulation(0,255,length); //用24位表示一組x,y,z的值
    }
    
    /** *//**
     * 生成初始種群
     * @param lower
     * @param upper
     * @param length
     */
    private void generatePopulation(int lower, int upper, int length){
        //隨機生成染色體
        for(int i = 0; i < population; i ++){
            clist.add(new Chromosome(lower,upper,length));
        }
        //計算染色體的適應值
        evaluate();
    }
    
    /** *//**
     * 計算群體的適應值
     */
    private void evaluate(){
        double sum = 0.0;
        double min = Double.MAX_VALUE;
        double max = Double.MIN_VALUE;
        for(Chromosome c : clist){
            double fitness = calculator.calculate(c.getChromo());
            if(fitness > max){
                max = fitness;
            }
            if(fitness < min){
                min = fitness;
            }
            c.setFitness(fitness);
            sum += fitness;
        }
        detail.setMaxFitness(max);
        detail.setMinFitness(min);
        detail.setAverageFitness(sum/population);
        for(Chromosome c : clist){
            c.setSelect((c.getFitness())/sum);    //設置選擇概率
        }
    }
    
    /** *//**
     * 在后代中選擇新種群
     */
    private void selectPopulation(){
        List<Chromosome> tempList = new ArrayList<Chromosome>();
        for(Chromosome c : clist){
            long expectation = Math.round(c.getSelect() * population);
            for(int i = 0; i < expectation; i ++){
                tempList.add(c.clone());
            }
        }
        //如果選擇種群數量大于種群規定數量,則淘汰適應值最小的染色體
        while(tempList.size() > population){
            int location = 0;
            double min = tempList.get(0).getFitness();
            for(int i = 0 ; i < tempList.size(); i ++){
                if(tempList.get(i).getFitness() < min){
                    location = i;
                }
            }
            tempList.remove(location);
        }
        //如果選擇種群數量小于種群規定數量,則加入適應值最大的染色體
        while(tempList.size() < population){
            int location = 0;
            double max = tempList.get(0).getFitness();
            for(int i = 0; i < tempList.size(); i++){
                if(tempList.get(i).getFitness() > max){
                    location = i;
                }
            }
            tempList.add(tempList.get(location).clone());
        }
        clist = tempList;
    }
    
    /** *//**
     * 交配兩個染色體
     * @param c1
     * @param c2
     * @param location
     */
    private void crossover(Chromosome c1, Chromosome c2){
        if(c1.getChromo().length != c2.getChromo().length){
            throw new IllegalStateException("染色體長度不同!");
        }
        //交換染色體上的基因
        //隨機確定交配位
        int location = random1.nextInteger();
        for(int i = location ; i < c1.getChromo().length; i ++){
            char temp;
            temp = c1.getChromo()[i];
            c1.getChromo()[i] = c2.getChromo()[i];
            c2.getChromo()[i] = temp;
        }
    }
    
    /** *//**
     * 交配整個種群,完成一次進化
     *
     */
    public void crossoverPopulation(){
        for(int j = 0; j < population; j ++){
            for(int i = 0; i < population - 1; i++){
                double temp = random2.nextDouble();
                if(temp < crossoverPossibility){//在交配概率之內
                    crossover(clist.get(i), clist.get(i + 1));
                }
            }
            double mutation = random2.nextDouble();
            if(mutation < mutationPossibility){//在變異概率之內
                mutation(clist.get(j));
            }
        }
        //重新計算群體適應值
        evaluate();
        //重新選擇種群
        selectPopulation();
        generation ++;
    }
    
    //隨機變異一位
    private void mutation(Chromosome ch){
        int location = random1.nextInteger();
        char c = ch.getChromo()[location];
        if(c == '1'){
            ch.getChromo()[location] = '0';
        }else{
            ch.getChromo()[location] = '1';
        }
    }
    
    public void printDetail(){
        System.out.println("/*****************************************");
        System.out.println("*           -----遺傳算法報告-----                 ");
        System.out.println("*  當前是第" + generation + "代");
        System.out.println("*  當前種群平均適應值為: " + detail.getAverageFitness());
        System.out.println("*  其中最大適應值為:" + detail.getMaxFitness());
        System.out.println("*  其中最小適應值為:" + detail.getMinFitness());
        System.out.println("*******************************************/");
    }
    
    public static void main(String[] args){
        //種群數量:30
        //選擇概率:0.0
        //交配概率:0.9
        //變異概率: 0.01
        GeneticAlgorithm ga = new GeneticAlgorithm(30,0.0,0.9,0.01,24);
        for(int i = 0; i < 5; i ++){
            ga.crossoverPopulation();
        }
        ga.printDetail();
        for(int j = 0; j < 25; j++){
            ga.crossoverPopulation();
        }
        ga.printDetail();
        for(int k = 0; k < 1000; k++){
            ga.crossoverPopulation();
        }
        ga.printDetail();
    }
}

輸出的結果是
/** *//*****************************************
*           -----遺傳算法報告-----                 
*  當前是第5代
*  當前種群平均適應值為: 7592451.0488077225
*  其中最大適應值為:9031331.437029611
* 對應最大適應值的染色體為:111011101101010010111000
*  其中最小適應值為:-1.2521097155031694E7
* 其中對應最小適應值的染色體為111011101101010011111011
*******************************************/
/** *//*****************************************
*           -----遺傳算法報告-----                 
*  當前是第30代
*  當前種群平均適應值為: 8785113.746617064
*  其中最大適應值為:9836674.727850026
* 對應最大適應值的染色體為:111111101101010010111000
*  其中最小適應值為:-1.1676031572464054E7
* 其中對應最小適應值的染色體為111011101101010011111000
*******************************************/
/** *//*****************************************
*           -----遺傳算法報告-----                 
*  當前是第1030代
*  當前種群平均適應值為: 8763072.724911185
*  其中最大適應值為:9836674.727850026
* 對應最大適應值的染色體為:111111101101010010111000
*  其中最小適應值為:-9580464.117842415
* 其中對應最小適應值的染色體為111101101101010010111000
*******************************************/



遺傳算法的JAVA實現4 
2008-06-19 01:20:33 本文已公布到博客頻道校園·教育分類 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Population {
private ArrayList m_chromosomes = new ArrayList();
private Chromosome m_fittestChromosome=null;
private

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久色中文字幕| 国产精品久久二区二区| 国产电影精品久久禁18| 亚洲午夜免费视频| 国产欧美日韩在线观看| 91精品国产色综合久久ai换脸| 成人激情动漫在线观看| 美洲天堂一区二卡三卡四卡视频| 成人欧美一区二区三区视频网页| 日韩久久久久久| 欧美影视一区在线| 成人av先锋影音| 国产综合久久久久久久久久久久| 亚洲一区视频在线观看视频| 中文字幕第一区| 精品久久99ma| 亚洲国产精品成人综合色在线婷婷 | 国产精品不卡一区| 欧美成人三级在线| 欧美久久久久久久久久| 色一情一伦一子一伦一区| 国产成人午夜片在线观看高清观看| 亚洲伊人色欲综合网| 国产精品萝li| 日本一区二区三区免费乱视频| 日韩欧美在线1卡| 91精品欧美一区二区三区综合在| 色综合久久久久| 99久精品国产| 波多野结衣91| 99热在这里有精品免费| 成人一级黄色片| 高清beeg欧美| 国产成人av福利| 风间由美中文字幕在线看视频国产欧美| 麻豆成人91精品二区三区| 蜜桃在线一区二区三区| 日韩精品91亚洲二区在线观看 | 精品一区二区三区久久| 奇米影视在线99精品| 日韩福利视频网| 日本成人超碰在线观看| 日本v片在线高清不卡在线观看| 首页国产欧美久久| 免费国产亚洲视频| 精品一区二区三区在线视频| 精彩视频一区二区三区| 国产一区二区三区四区五区美女 | 日本道精品一区二区三区| 99re这里只有精品首页| 91成人免费在线| 欧美日韩三级一区二区| 91麻豆精品国产91久久久久久 | 亚洲图片欧美一区| 视频一区二区中文字幕| 蜜臀精品久久久久久蜜臀 | 国产视频一区二区在线观看| 国产日产欧美一区二区视频| 国产精品欧美综合在线| 亚洲激情欧美激情| 婷婷久久综合九色综合绿巨人| 秋霞影院一区二区| 国产精品白丝jk白祙喷水网站| 国产99一区视频免费| 97精品久久久午夜一区二区三区| 欧美性猛交一区二区三区精品| 884aa四虎影成人精品一区| 精品免费视频.| 国产精品福利在线播放| 一区二区三区丝袜| 久久99精品久久久久婷婷| 顶级嫩模精品视频在线看| 在线日韩国产精品| 日韩精品最新网址| 国产精品理论片| 视频一区免费在线观看| 欧美一区二区久久久| 国产性做久久久久久| 一级中文字幕一区二区| 蜜桃久久久久久| 99久久精品免费看国产 | 国产欧美日韩三级| 亚洲国产综合在线| 国产乱人伦偷精品视频免下载| av电影在线不卡| 欧美一二三四区在线| 国产精品免费免费| 秋霞影院一区二区| 99r国产精品| 久久综合久久综合久久| 一区二区三区小说| 国产乱国产乱300精品| 欧美午夜精品一区二区蜜桃| 久久精品一区蜜桃臀影院| 亚洲va韩国va欧美va| 懂色av一区二区三区免费观看| 6080午夜不卡| 亚洲人午夜精品天堂一二香蕉| 久久99这里只有精品| 91福利在线观看| 国产欧美精品在线观看| 日产国产高清一区二区三区| 91毛片在线观看| 国产视频911| 麻豆91精品视频| 欧美日韩国产一区二区三区地区| 国产精品视频麻豆| 国产自产视频一区二区三区| 欧美精品亚洲一区二区在线播放| 中文字幕永久在线不卡| 国产精品中文字幕日韩精品 | 欧美网站大全在线观看| 欧美高清在线一区| 久久成人羞羞网站| 在线不卡中文字幕| 亚洲一本大道在线| 99精品视频在线免费观看| 国产视频一区二区在线| 久久国产麻豆精品| 在线综合+亚洲+欧美中文字幕| 一区二区三区高清| 一本色道亚洲精品aⅴ| 亚洲国产精华液网站w| 国产麻豆91精品| 精品88久久久久88久久久| 蜜桃av一区二区在线观看| 3d成人h动漫网站入口| 亚洲国产精品综合小说图片区| 91亚洲国产成人精品一区二区三| 国产精品你懂的在线| 国产91高潮流白浆在线麻豆| 久久久久久久久久美女| 国产精品一卡二| 国产视频一区二区三区在线观看| 国内偷窥港台综合视频在线播放| 日韩免费视频一区二区| 另类小说欧美激情| 欧美tk丨vk视频| 激情综合一区二区三区| 欧美不卡一区二区| 国产在线观看免费一区| 久久亚洲二区三区| 丰满白嫩尤物一区二区| 国产精品久久久久影视| 91丨porny丨蝌蚪视频| 又紧又大又爽精品一区二区| 欧美性做爰猛烈叫床潮| 亚洲成人动漫在线免费观看| 91精品久久久久久蜜臀| 美女网站一区二区| 2019国产精品| 成人在线视频首页| 亚洲欧美日韩国产另类专区| 欧美亚洲国产一区在线观看网站| 午夜成人在线视频| 精品久久久久久久久久久久包黑料| 激情综合色综合久久| 国产亚洲欧美色| 91麻豆国产在线观看| 亚洲1区2区3区4区| 2023国产精品| 97久久精品人人澡人人爽| 午夜激情久久久| 2023国产精品| 色婷婷av一区二区三区大白胸 | 亚洲国产精品二十页| 91蝌蚪porny九色| 天天色图综合网| 久久精品亚洲精品国产欧美 | 久88久久88久久久| 中文字幕第一页久久| 欧美日韩久久一区| 国产精品一级二级三级| 亚洲男同性视频| 日韩久久久精品| 一本色道**综合亚洲精品蜜桃冫| 青青草一区二区三区| 国产精品美女久久福利网站| 欧美日韩国产色站一区二区三区| 国内国产精品久久| 亚洲免费观看在线视频| 日韩一区二区三区视频在线 | 日韩一卡二卡三卡四卡| 不卡视频一二三四| 丝袜亚洲另类欧美| 国产精品亲子伦对白| 日韩欧美一级精品久久| 97久久超碰精品国产| 黄色小说综合网站| 亚洲电影视频在线| 国产精品免费免费| 欧美不卡一区二区三区四区| 色爱区综合激月婷婷| 国产精品性做久久久久久| 三级久久三级久久久| 亚洲欧美日韩中文播放 | 成人18视频日本| 精品一区二区三区在线播放| 亚洲一区二区在线免费观看视频| 久久精品视频在线看|