📄 psogui.java
字号:
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 + -