diff --git a/src/eva2/server/go/problems/FLensProblem.java b/src/eva2/server/go/problems/FLensProblem.java index cae1d8bd..aa2fb031 100644 --- a/src/eva2/server/go/problems/FLensProblem.java +++ b/src/eva2/server/go/problems/FLensProblem.java @@ -28,28 +28,36 @@ import eva2.server.go.strategies.InterfaceOptimizer; import eva2.server.modules.GOParameters; import eva2.tools.math.RNG; -class MyLensViewer extends JPanel { +class MyLensViewer extends JPanel implements InterfaceSolutionViewer { /** * */ private static final long serialVersionUID = 7945150208043416139L; - private double[] m_BestVariables; - private double m_BestFitness; + Population indiesToPaint=new Population(); +// private double[] m_BestVariables; +// private double m_BestFitness; private int m_Height, m_Width; FLensProblem m_LensProblem; public MyLensViewer (FLensProblem f) { - this.m_LensProblem = f; + initView(f); Dimension d = new Dimension (280, 220); this.setPreferredSize(d); this.setMinimumSize(d); - resetBest(); + resetView(); } - public void resetBest() { - this.m_BestFitness = Double.POSITIVE_INFINITY; - this.m_BestVariables = new double[10]; + public void initView(AbstractOptimizationProblem prob) { + this.m_LensProblem = (FLensProblem)prob; + } + + public void resetView() { +// this.m_BestFitness = Double.POSITIVE_INFINITY; +// this.m_BestVariables = new double[10]; + ESIndividualDoubleData dummy = new ESIndividualDoubleData(); + dummy.SetFitness(new double[]{Double.POSITIVE_INFINITY}); + indiesToPaint = new Population(); } public void paint(Graphics g) { @@ -106,52 +114,84 @@ class MyLensViewer extends JPanel { g2D.drawLine(centerLens, this.m_Height/2+(int)this.m_LensProblem.m_Radius*10, centerLens, this.m_Height/2 -(int)this.m_LensProblem.m_Radius*10); g2D.drawLine(centerScreen, this.m_Height/2+(int)this.m_LensProblem.m_Radius*10+10, centerScreen, this.m_Height/2 -(int)this.m_LensProblem.m_Radius*10-10); g2D.setStroke(ds); +// System.out.println("indies to paint: " + indiesToPaint.size()); + paintLens(m_LensProblem.m_ProblemDimension, m_Height, m_LensProblem.m_Radius, mag, centerLens, centerScreen, segment, g2D); + // Now put everything on the screen + g.drawImage(bufferedImage, 0, 0, this); + } + + private void paintLens(int dim, int height, double radius, int mag, int centerLens, int centerScreen, int segment, Graphics2D g2D) { + for (int i=0; i curFit) { - this.m_BestVariables = best.getDoubleData(); - this.m_BestFitness = curFit; - this.paint(this.getGraphics()); - } - } + public void updateView(Population pop, boolean showAllIfPossible) { + if (showAllIfPossible) { +// indiesToPaint=pop; + for (int i=0; i