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

📄 psogui.java

📁 用Java实现的粒子群优化算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    fitnessCanvas.setCount(iterationCount / i + 2);
                fitnessCanvas.setBest(d1);
                fitnessCanvas.setAverage(d);
                fitnessCanvas.setVariance(d2);
                fitnessCanvas.setRedrawFlag(false);
                fitnessCanvas.repaint();
            }
            iterationCount++;
            runDoneFlag = true;
            try
            {
                Thread.sleep(5L);
            }
            catch(InterruptedException _ex) { }
        }
        bSetParameter.setEnabled(true);
        bRun.setEnabled(true);
        bPause.setEnabled(false);
        bStop.setEnabled(false);
        bExit.setEnabled(true);
        bPrint.setEnabled(false);
    }

    private void psoPause()
    {
        if(runner != null && runner.isAlive())
            if(pauseFlag)
            {
                pauseFlag = false;
                runner.resume();
            } else
            {
                pauseFlag = true;
                runner.suspend();
            }
        bSetParameter.setEnabled(false);
        bRun.setEnabled(false);
        bPause.setEnabled(true);
        bStop.setEnabled(true);
        bExit.setEnabled(false);
        bPrint.setEnabled(false);
    }

    private void psoStop()
    {
        if(runner != null && runner.isAlive())
            runner.stop();
        runDoneFlag = true;
        bSetParameter.setEnabled(true);
        bRun.setEnabled(true);
        bPause.setEnabled(false);
        bStop.setEnabled(false);
        bExit.setEnabled(true);
        bPrint.setEnabled(false);
    }

    private void psoPrint()
    {
        PSOGUI psogui = this;
        PrintJob printjob = getToolkit().getPrintJob(psogui, "Particle Swarm", null);
        if(printjob != null)
        {
            Graphics g = printjob.getGraphics();
            if(g != null)
            {
                printAll(g);
                g.dispose();
            }
            printjob.end();
        }
    }

    public void setPSOParameters()
    {
        psoPara.setInitialWeight(Double.valueOf(initialWeight).doubleValue());
        psoPara.setPopulationSize(Integer.valueOf(populationSize).intValue());
        psoPara.setLeftInitialRange(Double.valueOf(leftInitialRange).doubleValue());
        psoPara.setRightInitialRange(Double.valueOf(rightInitialRange).doubleValue());
        psoPara.setMaximumPosition(Double.valueOf(positionMaximum).doubleValue());
        psoPara.setMaximumVelocity(Double.valueOf(velocityMaximum).doubleValue());
        psoPara.setXIndex(Integer.valueOf(xIndex).intValue());
        psoPara.setYIndex(Integer.valueOf(yIndex).intValue());
        psoPara.setDisplayStepSize(Integer.valueOf(displayStepSize).intValue());
        psoPara.setMaximumGeneration(Integer.valueOf(iterationMaximum).intValue());
        psoPara.setFunctionName(functionName);
        psoPara.setFunctionDimension(Integer.valueOf(functionDimension).intValue());
    }

    public void itemStateChanged(ItemEvent itemevent)
    {
        if(itemevent.getItem().equals("Display"))
            if(itemevent.getStateChange() == 2)
            {
                xIndex = defaultXIndex;
                yIndex = defaultYIndex;
                displayStepSize = defaultDisplayStepSize;
                return;
            } else
            {
                IndexDialog indexdialog = new IndexDialog(this);
                indexdialog.show();
                xIndex = indexdialog.getXIndex();
                yIndex = indexdialog.getYIndex();
                displayStepSize = indexdialog.getDisplayStepSize();
                return;
            }
        if(itemevent.getItem().equals("Range"))
            if(itemevent.getStateChange() == 2)
            {
                leftInitialRange = defaultLeftInitialRange;
                rightInitialRange = defaultRightInitialRange;
                positionMaximum = defaultPositionMaximum;
                return;
            } else
            {
                RangeDialog rangedialog = new RangeDialog(this);
                rangedialog.show();
                leftInitialRange = rangedialog.getLeftInitialRange();
                rightInitialRange = rangedialog.getRightInitialRange();
                positionMaximum = rangedialog.getMaximumPosition();
                return;
            }
        if(itemevent.getItem().equals("max Velocity"))
            if(itemevent.getStateChange() == 2)
            {
                velocityMaximum = defaultVelocityMaximum;
                return;
            } else
            {
                MaximumVelocityDialog maximumvelocitydialog = new MaximumVelocityDialog(this);
                maximumvelocitydialog.show();
                velocityMaximum = maximumvelocitydialog.getMaximumVelocity();
                return;
            }
        functionName = cFunctionName.getSelectedItem();
        if(functionName.equals("Bohachevsky"))
        {
            functionDimension = "2";
            return;
        }
        if(functionName.equals("Colville"))
        {
            functionDimension = "4";
            return;
        }
        if(functionName.equals("GoldsteinP"))
        {
            functionDimension = "2";
            return;
        }
        if(functionName.equals("Easom"))
        {
            functionDimension = "2";
            return;
        }
        if(functionName.equals("Floudas"))
        {
            functionDimension = "5";
            return;
        }
        if(functionName.equals("Beale"))
        {
            functionDimension = "2";
            return;
        }
        if(functionName.equals("Matyas"))
        {
            functionDimension = "2";
            return;
        }
        if(functionName.equals("Zettl"))
        {
            functionDimension = "2";
            return;
        } else
        {
            FunctionDimensionDialog functiondimensiondialog = new FunctionDimensionDialog(this);
            functiondimensiondialog.show();
            functionDimension = functiondimensiondialog.getFunctionDimension();
            return;
        }
    }

    public void windowClosing(WindowEvent windowevent)
    {
        dispose();
    }

    public void windowOpened(WindowEvent windowevent)
    {
    }

    public void windowIconified(WindowEvent windowevent)
    {
    }

    public void windowDeiconified(WindowEvent windowevent)
    {
    }

    public void windowClosed(WindowEvent windowevent)
    {
    }

    public void windowActivated(WindowEvent windowevent)
    {
        int i = Integer.valueOf(displayStepSize).intValue();
        if(iterationCount > i && iterationCount % i != 0 || (runDoneFlag = true))
        {
            fitnessCanvas.setRedrawFlag(true);
            fitnessCanvas.repaint();
        }
    }

    public void windowDeactivated(WindowEvent windowevent)
    {
    }

    private Thread runner;
    private boolean pauseFlag;
    private boolean runDoneFlag;
    private int iterationCount;
    private PSOParameters psoPara;
    private PSOAlgorithm psoAl;
    private String populationSize;
    private String initialWeight;
    private String defaultVelocityMaximum;
    private String velocityMaximum;
    private String defaultPositionMaximum;
    private String positionMaximum;
    private String iterationMaximum;
    private String defaultXIndex;
    private String xIndex;
    private String defaultYIndex;
    private String yIndex;
    private String defaultDisplayStepSize;
    private String displayStepSize;
    private String defaultFunctionName;
    private String functionName;
    private String defaultFunctionDimension;
    private String functionDimension;
    private String defaultLeftInitialRange;
    private String leftInitialRange;
    private String defaultRightInitialRange;
    private String rightInitialRange;
    private TextField tfInitialWeight;
    private TextField tfPopulationSize;
    private TextField tfIterationMaximum;
    private Choice cFunctionName;
    private Checkbox cbDisplay;
    private Checkbox cbRange;
    private Checkbox cbMaximumVelocity;
    private Button bHelp;
    private Button bSetParameter;
    private Button bRun;
    private Button bPause;
    private Button bStop;
    private Button bPrint;
    private Button bExit;
    private PSOMovementCanvas movementCanvas;
    private FitnessCanvas fitnessCanvas;
    private TextField tfIteration;
    private TextField tfBestFitness;
    private TextField tfAverageFitness;
    private TextField tfVarianceFitness;
    private PSOHelpFrame psoHelp;
}

⌨️ 快捷键说明

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