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

📄 fitnesscanvas.java

📁 用Java实现的粒子群优化算法
💻 JAVA
字号:
// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   FitnessCanvas.java

package ci.ec;

import java.awt.*;
import java.io.PrintStream;
import java.util.Vector;

// Referenced classes of package ci.ec:
//            FitnessDrawData

public class FitnessCanvas extends Canvas
{

    public FitnessCanvas(Color color, int i, int j)
    {
        redrawFlag = true;
        setBackground(color);
        setSize(i, j);
        width = i;
        height = j;
        count = 1;
        dataSet = new Vector();
    }

    public void paint(Graphics g)
    {
        if(count == 1)
        {
            g.drawString("fitness", 12, 10);
            g.setColor(Color.black);
            g.drawLine(0, height - 10, width, height - 10);
            g.drawLine(10, 0, 10, height);
            previousX = 10;
            bestOld = bestCurrent;
            averageOld = averageCurrent;
            varianceOld = varianceCurrent;
            dataSet.removeAllElements();
            dataSet.addElement(new FitnessDrawData(bestOld, averageOld, varianceOld, previousX));
            return;
        }
        if(redrawFlag)
        {
            redraw(g);
            return;
        } else
        {
            setCurrentX();
            g.setColor(Color.red);
            g.drawLine(previousX, bestOld, currentX, bestCurrent);
            g.setColor(Color.blue);
            g.drawLine(previousX, averageOld, currentX, averageCurrent);
            g.setColor(Color.black);
            g.drawLine(previousX, varianceOld, currentX, varianceCurrent);
            previousX = currentX;
            bestOld = bestCurrent;
            averageOld = averageCurrent;
            varianceOld = varianceCurrent;
            dataSet.addElement(new FitnessDrawData(bestOld, averageOld, varianceOld, previousX));
            return;
        }
    }

    public void update(Graphics g)
    {
        if(count == 1)
        {
            super.update(g);
            return;
        } else
        {
            paint(g);
            return;
        }
    }

    public void redraw(Graphics g)
    {
        g.drawString("fitness", 12, 10);
        g.setColor(Color.black);
        g.drawLine(0, height - 10, width, height - 10);
        g.drawLine(10, 0, 10, height);
        for(int i = 1; i < count; i++)
        {
            g.setColor(Color.red);
            g.drawLine(((FitnessDrawData)dataSet.elementAt(i - 1)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i - 1)).getBestFitness(), ((FitnessDrawData)dataSet.elementAt(i)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i)).getBestFitness());
            g.setColor(Color.blue);
            g.drawLine(((FitnessDrawData)dataSet.elementAt(i - 1)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i - 1)).getAverageFitness(), ((FitnessDrawData)dataSet.elementAt(i)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i)).getAverageFitness());
            g.setColor(Color.black);
            g.drawLine(((FitnessDrawData)dataSet.elementAt(i - 1)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i - 1)).getVarianceFitness(), ((FitnessDrawData)dataSet.elementAt(i)).getXIndex(), ((FitnessDrawData)dataSet.elementAt(i)).getVarianceFitness());
        }

    }

    public void setCurrentX()
    {
        if(maximumValueX != 0)
        {
            currentX = ((count - 1) * (width - 10)) / maximumValueX + 10;
            return;
        } else
        {
            System.out.println("divided by zero\n");
            return;
        }
    }

    public void setBest(double d)
    {
        bestCurrent = (int)((d * (double)(height - 10)) / maximumValueY);
        bestCurrent = height - 10 - bestCurrent;
    }

    public void setAverage(double d)
    {
        averageCurrent = (int)((d * (double)(height - 10)) / maximumValueY);
        averageCurrent = height - 10 - averageCurrent;
    }

    public void setVariance(double d)
    {
        varianceCurrent = (int)((d * (double)(height - 10)) / maximumValueY);
        varianceCurrent = height - 10 - varianceCurrent;
    }

    public void setMaximumValueX(int i)
    {
        maximumValueX = i;
    }

    public void setMaximumValueY(double d)
    {
        maximumValueY = d;
    }

    public void setCount(int i)
    {
        count = i;
    }

    public void setRedrawFlag(boolean flag)
    {
        redrawFlag = flag;
    }

    private Vector dataSet;
    private boolean redrawFlag;
    private final int offset = 10;
    private double maximumValueY;
    private int maximumValueX;
    private int currentX;
    private int previousX;
    private int height;
    private int width;
    private int bestOld;
    private int bestCurrent;
    private int varianceOld;
    private int varianceCurrent;
    private int averageOld;
    private int averageCurrent;
    private int count;
}

⌨️ 快捷键说明

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