fixes #21
Switched from Ant to Maven. Usage: - Install Maven 3.x - Enter directory with pom.xml - Type mvn compile - Enjoy!
This commit is contained in:
94
CHANGELOG
Normal file
94
CHANGELOG
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
--- Changelog ---
|
||||||
|
|
||||||
|
2.05: Added ScatterSearch (real-valued), BinaryScatterSearch, and the Bayesian Optimization Algorithm (thanks
|
||||||
|
to Alexander Seitz) to the base package. Added JobList and some statistical measures. Requires to put
|
||||||
|
the JSC package on the class path for Mann-Whitney test.
|
||||||
|
|
||||||
|
2.046: Adaptions to the MatlabInterface: explicit data types are used now, added integer problem support.
|
||||||
|
Additional Integer operators: segment-wise mutation and crossover. Added an abstraction over individual
|
||||||
|
initialization methods. Added the ERPStarter class which is an example for running a csv-configured
|
||||||
|
optimization. Some bug-fixes and clean-ups.
|
||||||
|
|
||||||
|
2.045: Added MOOCMAES (de Paly); compatibility with Java 1.5 (Draeger); Revision of the statistics class
|
||||||
|
with improved pipelining of data (InterfaceAdditionalPopulationInformer); improved FunctionArea
|
||||||
|
concerning history, labels, legend and graph coloring; improved StringSelection; restructured
|
||||||
|
Terminators, additional ParetoMetricTerminator. Further bugfixes and clean-ups.
|
||||||
|
|
||||||
|
2.043: Added proper Population equality predicate.
|
||||||
|
|
||||||
|
2.042: Some bugfixes. Removing dependency on sun.beans.editors, replaced non-free jpeg-codec. There should
|
||||||
|
be no more problems on OpenJDK. Added a simple initialization range, especially for use from Matlab.
|
||||||
|
Some restructurings (RNG and Mathematics is now in eva2.tools.math). Some cleanup.
|
||||||
|
|
||||||
|
2.040: Several updates: The clustering interface has been changed for easier implementation of adaptive clustering
|
||||||
|
methods. The GradientDescentAlgorithm has been updated and some benchmark problems been made derivable.
|
||||||
|
The ClusterBasedNiching algorithm has been slightly restructured updated according to the new clustering.
|
||||||
|
An additional clustering method is included: nearest-best clustering with dynamic adaption of niche radius.
|
||||||
|
Some changes to (text) statistics: they are now printed regarding the full solution set instead of the
|
||||||
|
last population. The Population field "size" is now termed "targetSize" to avoid misunderstandigs. Populations
|
||||||
|
can be initialized using a Random Latin Hypercube sampling. Some basic console options are recognized:
|
||||||
|
EvA2 can be started without splash screen and even without GUI. If configuration file is given which was
|
||||||
|
earlier saved from the GUI, the thus defined optimization run is then processed automatically by EvA2.
|
||||||
|
|
||||||
|
2.036: New graph selection mode for statistic plots: every property may be selected independently.
|
||||||
|
A simple plot legend is produced in the graph window, which can be deactivated.
|
||||||
|
|
||||||
|
2.035: Reactivated some of the model-based functionality within the GO framework. Minor bugfixes.
|
||||||
|
|
||||||
|
2.034: Adding a generic parameter control method for optimizers, currently used by PSO to adapt inertness depending
|
||||||
|
on EvaluationTerminator or GenerationTerminator instances defining the number of function evaluations.
|
||||||
|
The new package is eva2.server.go.operators.paramcontrol.
|
||||||
|
A Population may now be ordered by a specific fitness criterion, employed, e.g., by Nelder-Mead-Simplex.
|
||||||
|
|
||||||
|
2.033: There was an interesting problem with the Matlab-Interface, which just hung up after extensive optimization
|
||||||
|
loops, yet only if Matlab was started without X-forwarding (which is necessary for qsub, e.g.).
|
||||||
|
Debugging was tedious, since the debugging using System.out. itself caused threading deadlocks. The
|
||||||
|
problem showed up to be with System.out itself. Whatever Matlab does with that stream, it does it differently
|
||||||
|
depending on the X-forwarding option. More specifically, the text written to System.out when X-forwarding
|
||||||
|
is not available seems to never show up (as opposed to being printed to the console when X-forwarding is on)
|
||||||
|
and silently fill up the JVM-memory. I havent the faintest idea why there havnt been OutOfMemory exceptions
|
||||||
|
earlier or whether and how the deadlocks have to do with it.
|
||||||
|
The ingenious solution was: dont print anything to System.out, which is now done at verbosity 0.
|
||||||
|
|
||||||
|
2.032: Some cosmetics, e.g. to AbstractEAIndividualComparator and older MOCCO classes.
|
||||||
|
|
||||||
|
2.031: Some updates to the OptimizerFactory. Review of the MatlabInterface with adding an own options structure.
|
||||||
|
Better access to the EvAClient, which now may have a RemoteStateListener added monitoring the optimization run.
|
||||||
|
|
||||||
|
2.030: Added an EnumEditor to access enums easily through the GUI, which will replace SelectedTags sometimes.
|
||||||
|
IPOP-ES and RankMuCMA mutator have been added lately (wow!).
|
||||||
|
Cleaned up the IndividualInterface and reduced the usage of InterfaceESIndividual. This
|
||||||
|
means that, e.g., that DE and PSO now also work on GAIndividualDoubleData. Because this
|
||||||
|
requires much time for transcoding, however, this is not useful by itself. Yet it could be
|
||||||
|
interesting for combined individuals composed of two data types.
|
||||||
|
Cleaned up MutateXXDefault to a single MutateDefault, too. DE may now do range checking.
|
||||||
|
The "Description" button has made space for a "Show Solution" button. The Rank-Mu-CMA was improved
|
||||||
|
to use a CMAParameterSet which is associated with populations and not static any more.
|
||||||
|
Included Nelder-Mead-Simplex and CMA-ES as post processing methods.
|
||||||
|
|
||||||
|
2.029: Tuned the 2d-graphs which now paints quicker and changes size depending on the
|
||||||
|
surrounding plot window. Added a preloader-thread to accelerate the GUI at starting time.
|
||||||
|
|
||||||
|
2.028: Tuned the Population to sort only when necessary on calls to getBestN... Added StatisticsDummy.
|
||||||
|
Slightly tuned SimpleProblemWrapper to call initProblem of simple problems if available.
|
||||||
|
|
||||||
|
2.027: Renamed SetData and SetDataLamarckian from individual data type interfaces to SetGenotype and SetPhenotype.
|
||||||
|
Repaired the GenericArrayEditor. Population measures can now be plotted in stats.
|
||||||
|
|
||||||
|
2.026: Added DiversityTerminator and KnownOptimaTerminator, slightly changed InterfaceTerminator for these
|
||||||
|
and InterfaceStatistics to provide termination message to text window.
|
||||||
|
Killed redundant method getGenerations() in Population. Population.getAllSolutions now returns a
|
||||||
|
SolutionSet combining last population with a set of possibly archived solutions.
|
||||||
|
Post processing with HC may now use variable step size mutation.
|
||||||
|
|
||||||
|
2.025: FunctionArea may now plot circles easily. The FLensProblemViewer seems to be cured.
|
||||||
|
|
||||||
|
2.024: Cleaned up AbstractGOParams, deactivated parent logging (saving memory)
|
||||||
|
|
||||||
|
2.023: Cleaned up the PF strategy
|
||||||
|
|
||||||
|
2.022: Some changes to the SimpleProblemWrapper, not of great interest. However, simple problems may now access a plot
|
||||||
|
quite easily.
|
||||||
|
|
||||||
|
|
||||||
|
--- End Changelog ---
|
@@ -1 +0,0 @@
|
|||||||
Class-Path: lib/activation.jar lib/j2ssh-common.jar lib/jmatlink.jar lib/mail.jar lib/commons-logging.jar lib/j2ssh-core.jar lib/libJMatLink.so pop3.jar lib/wsi2.jar lib/imap.jar lib/j2ssh-dameon.jar lib/log4j.jar lib/smtp.jar lib/xalan2.jar lib/j2ssh-ant.jar lib/jdom.jar lib/mailapi.jar lib/sshfactory.jar lib/libJMatLink.so lib/windows/JMatLink.dll lib/windows/SNNS_jkr.dll
|
|
52
pom.xml
Normal file
52
pom.xml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>eva2</groupId>
|
||||||
|
<artifactId>EvA2</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>EvA2</name>
|
||||||
|
<url>http://www.ra.cs.uni-tuebingen.de/software/EvA2/</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.10</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.help</groupId>
|
||||||
|
<artifactId>javahelp</artifactId>
|
||||||
|
<version>2.0.05</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<directory>${project.basedir}/build</directory>
|
||||||
|
<outputDirectory>${project.build.directory}/classes</outputDirectory>
|
||||||
|
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||||
|
<sourceDirectory>${project.basedir}/src</sourceDirectory>
|
||||||
|
<testSourceDirectory>${project.basedir}/test</testSourceDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>${project.basedir}/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>2.4</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<index>true</index>
|
||||||
|
<addMavenDescriptor>false</addMavenDescriptor>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<mainClass>eva2.client.EvAClient</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
15
resources/html/Default.html
Normal file
15
resources/html/Default.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Default page</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<EFBFBD>
|
||||||
|
<h1 align="center">HTML description file is missing</h1>
|
||||||
|
<center>
|
||||||
|
</center><br>
|
||||||
|
Unfortunately there is no additional HTML description
|
||||||
|
file to this class. Please refer to the JOptDocumentation
|
||||||
|
file or the JavaDoc for more information on this class.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
25
resources/html/EvolutionStrategies.html
Normal file
25
resources/html/EvolutionStrategies.html
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Evolution Strategy - ES</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Evolution Strategy - ES</h1>
|
||||||
|
<center>
|
||||||
|
</center><br>
|
||||||
|
An ES works on a population of real valued solutions
|
||||||
|
by repeated use of evolutionary operators like reproduction,
|
||||||
|
recombination and mutation.
|
||||||
|
λ offspring individuals are generated from μ parents
|
||||||
|
by recombination and mutation (with μ < λ).
|
||||||
|
<br>
|
||||||
|
After evaluating the fitness of the λ
|
||||||
|
offspring individuals, the comma-strategy selects the μ individuals
|
||||||
|
with the best fitness as parent population for the next generation.
|
||||||
|
On the other hand, a plus-strategy selects the best μ individuals
|
||||||
|
from the aggregation of parents and offspring individuals, so in this
|
||||||
|
case the best individual is guaranteed to survive.
|
||||||
|
In general, however, the comma-strategy is more robust and can easier
|
||||||
|
escape from local optima, which is why it is usually the standard selection.
|
||||||
|
<br>
|
||||||
|
</body>
|
||||||
|
</html>
|
30
resources/html/EvolutionStrategyIPOP.html
Normal file
30
resources/html/EvolutionStrategyIPOP.html
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Increasing Population Size ES - IPOP-ES</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Increasing Population Size ES - IPOP-ES</h1>
|
||||||
|
<center>
|
||||||
|
</center><br>
|
||||||
|
<p>
|
||||||
|
This class implements the IPOP (increased population size) restart strategy ES, which increases
|
||||||
|
the ES population size (i.e., lambda) after phases of stagnation and then restarts the optimization
|
||||||
|
by reinitializing the individuals and operators.<br>
|
||||||
|
Stagnation is for this implementation defined by a FitnessConvergenceTerminator instance
|
||||||
|
which terminates if the absolute change in fitness is below a threshold (default 10e-12) for a
|
||||||
|
certain number of generations (default: 10+floor(30*n/lambda) for problem dimension n).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If the MutateESRankMuCMA mutation operator is employed, additional criteria are used for restarts,
|
||||||
|
such as numeric conditions of the covariance matrix.
|
||||||
|
Lambda is increased multiplicatively for every restart, and typical initial values are
|
||||||
|
mu=5, lambda=10, incFact=2.
|
||||||
|
The IPOP-CMA-ES won the CEC 2005 benchmark challenge.
|
||||||
|
Refer to Auger&Hansen 05 for more details.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
A.Auger & N.Hansen. <i>A Restart CMA Evolution Strategy With Increasing Population Size</i>. CEC 2005.
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
30
resources/html/F13Problem.html
Normal file
30
resources/html/F13Problem.html
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Schwefels's (sine root) function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Schwefel's (sine root) function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/f13-tex-500.jpg" width="650" height="64" aling="center">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
Schwefel's (sine root) function is highly multimodal and has no global basin of attraction. The optimum at a fitness of f(x*)=0 lies at x*=420.9687. Schwefel's sine root is a tough challenge for any global optimizer due to the multiple distinct optima. Especially, there is a deceptive nearly optimal solution close to x=(-420.9687)<SUP>n</SUP>.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<img src="images/f13-schwefels-sine-root.jpg" width="667" height="493" border="2" align="center">
|
||||||
|
<br>
|
||||||
|
Schwefels's sine root function in 2D within the co-domain -500 <= <i>x</i> <= 500.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
More information about Ackley's function can be found at:
|
||||||
|
<p>
|
||||||
|
David. H. Ackley. <i>A connection machine for genetic hillclimbing.</i> Kluwer Academic Publishers, Boston, 1987.
|
||||||
|
<p>
|
||||||
|
Thomas Baeck. <i>Evolutionary Algorithms in Theory and Practice.</i> Oxford University Press, 1996.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
24
resources/html/F1Problem.html
Normal file
24
resources/html/F1Problem.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>f_1 : Sphere function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">The F1 hyper-parabola function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/f1tex.jpg" width="85" height="95" border="0" align="center">
|
||||||
|
</center><br>
|
||||||
|
The hyper-parabola function is a <i>n</i>-dimensional, axis-symmetric, continuously differentiable, convex function:
|
||||||
|
<p>
|
||||||
|
Because of its simplicity every optimization-algorithm should be able to find its global minimum at <i>x</i>=[0, 0, ... , 0]
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<img src="images/f1.jpg" width="480" height="360" border="2" align="middle">
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
More information about the F1 function can be found at:
|
||||||
|
<p>
|
||||||
|
|
||||||
|
Kenneth De Jong. <i>An analysis of the behaviour of a class of genetic adaptive systems.</i> Dissertation, University of Michigan, 1975. Diss. Abstr. Int. 36(10), 5140B, University Microflims No. 76-9381.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
36
resources/html/F2Problem.html
Normal file
36
resources/html/F2Problem.html
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Generalized Rosenbrock's function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Generalized Rosenbrock's function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/rosenbrocktex.jpg" width="500" height="78">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
This function is unimodal and continuous, but the global optimum is hard to find, because of independence through the term (<i>x</i>_(<i>i</i>+1) - <i>x_i</i>*<i>x_i</i>)^2 between contiguous parameters.
|
||||||
|
<p>
|
||||||
|
<img src="images/f85.jpg" border="2">
|
||||||
|
<br>
|
||||||
|
Rosenbrock's function within the domain -5 <= <i>x</i> <= 5.
|
||||||
|
<p>
|
||||||
|
The global optimum is located in a parabolic formed valley (among the curve x^2 = x_1^2), which has a flat ground.
|
||||||
|
<br>
|
||||||
|
<img src="images/f81.jpg" border="2">
|
||||||
|
<br>
|
||||||
|
The function close to its global optimum, which is: f(<i>x</i>) = f(1, 1, ... , 1) = 0.
|
||||||
|
<p>
|
||||||
|
Rosenbrock' function is not symmetric, not convex and not linear.
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
More information about Rosenbrock's function can be found at:
|
||||||
|
<p>
|
||||||
|
Kenneth De Jong. <i>An analysis of the behaviour of a class of genetic adaptive systems.</i> Dissertation, University of Michigan, 1975. Diss. Abstr. Int. 36(10), 5140B, University Microflims No. 76-9381.
|
||||||
|
<p>
|
||||||
|
Hans Paul Schwefel. <i>Evolution and optimum seeking.</i> Sixth-Generation Computer Technology Series. John Wiley & Sons, INC., 1995.
|
||||||
|
<p>
|
||||||
|
Darrell Whitley, Soraya Rana, John Dzubera, Keith E. Mathias. <i>Evaluating Evolutionary Algorithms. Artificial Intelligence</i>, 85(1-2):245-276. 1996.
|
||||||
|
<p>
|
||||||
|
Eberhard Schoeneburg, Frank Heinzmann, Sven Feddersen. <i>Genetische Algorithmen und Evolutionstrategien - Eine Einfuehrung in Theorie und Praxis der simulierten Evolution.</i> Addison-Wesley, 1994.
|
||||||
|
</body>
|
||||||
|
</html>
|
29
resources/html/F3Problem.html
Normal file
29
resources/html/F3Problem.html
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>The step function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">The Step Function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/steptex.jpg" width="350" height="120" aling="center">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
The idea of this function is the implementation of a flat plateau (slope 0)in an underlying continuous function. It's harder for optimization algortihms to find optima because minor changes of the object variables don't affect the fitness. Therefore no conclusions about the search direction can be made.
|
||||||
|
<p>
|
||||||
|
<img src="images/step5.jpg" width="480" height="360" border="2" align="center">
|
||||||
|
<p>
|
||||||
|
The step function is symmetric considering the underlying function (here: f(x,y) = f(y,x)), but between the bulk constant plateau-areas not continuously differentiable.
|
||||||
|
<p>
|
||||||
|
Its minimum-area is located in the intervals: <i>f(x)</i>=<i>f</i>([-5.12,-5), ... , [-5.12,-5))=0.
|
||||||
|
<p>
|
||||||
|
<img src="images/stepopt.jpg" width="480" height="360" border="2" align="center">
|
||||||
|
<hr>
|
||||||
|
More information about the step function can be found at:
|
||||||
|
<p>
|
||||||
|
Thomas Baeck, <i>Evolutionary Algorithms in Theory and Practice.</i> Oxford University Press, 1996.
|
||||||
|
<p>
|
||||||
|
Darrell Whitley, Soraya Rana, John Dzubera, Keith E. Mathias. <i>Evaluating Evolutionary Algorithms. Artificial Intelligence</i>, 85(1-2):245-276. 1996.
|
||||||
|
<p>
|
||||||
|
Eberhard Schoeneburg, Frank Heinzmann, Sven Feddersen. <i>Genetische Algorithmen und Evolutionstrategien - Eine Einfuehrung in Theorie und Praxis der simulierten Evolution.</i> Addison-Wesley, 1994.
|
||||||
|
</body>
|
||||||
|
</html>
|
27
resources/html/F5Problem.html
Normal file
27
resources/html/F5Problem.html
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Schwefel's double sum</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Schwefels double sum</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/f2tex.jpg" width="220" height="102" border="0" align="center">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
Schwefel's double sum is a quadratic minimization problem. Its difficulty increases by the dimension <i>n</i> in <i>O(n^2)</i>. It is used for analysis of correlating mutations.
|
||||||
|
<p>
|
||||||
|
It possesses specific symmetrical properties:<br>
|
||||||
|
|
||||||
|
<img src="images/schwefelsymmetrie.jpg" width="500" height="104" border="0" align="middle">
|
||||||
|
<p>
|
||||||
|
Its minimum is located at: <i>f(x)</i>=<i>f</i>([0, 0, ... , 0])=0
|
||||||
|
<p>
|
||||||
|
<img src="images/f2.jpg" width="480" height="360" border="2" align="middle">
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
More information about Schwefel's double sum can be found at:
|
||||||
|
<p>
|
||||||
|
Hans Paul Schwefel. <i>Evolution and optimum seeking.</i> Sixth-Generation Computer Technology Series. John Wiley & Sons, INC., 1995.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
42
resources/html/F6Problem.html
Normal file
42
resources/html/F6Problem.html
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Generalized Rastrigin's function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Generalized Rastrigin's function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/rastrigintex.jpg" width="500" height="101">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
Rastrigin's function is symmetric. It is based on the simple <i>parabola function</i> (called f1 in the EvA context), but it is multimodal because a modulation term on the basis of the cosine function is added. This evokes hills and valleys which are misleading local optima.
|
||||||
|
<p>
|
||||||
|
Values used for the following illustrations: <i>A</i>=10, <i>ω</i>=2*π, <i>n</i>=2.
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<img src="images/rastrigin20.jpg" border="2">
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Rastrigin's function within the co-domain -20>=<i>x</i>>=20
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="images/rastrigin5.jpg" border="2">
|
||||||
|
<br>
|
||||||
|
|
||||||
|
Rastrigin's function within the co-domain -5>=<i>x</i>>=5
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
Like Ackley's function a simple evolutionary algorithm would get stuck in a local optimum, while a broader searching algorithm would get out of the local optimum closer to the global optimum, which in this case is: f(<i>x</i>) = f(0, 0, ... , 0) = 0.
|
||||||
|
<p>
|
||||||
|
<img src="images/rastrigin1.jpg" border="2"><br>
|
||||||
|
Rastrigin's function close to its optimum.
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
More information about Rastrigin's function can be found at:
|
||||||
|
<p>
|
||||||
|
Darrell Whitley, Soraya Rana, John Dzubera, Keith E. Mathias. <i>Evaluating Evolutionary Algorithms. Artificial Intelligence</i>, 85(1-2):245-276. 1996.
|
||||||
|
<p>
|
||||||
|
Eberhard Schoeneburg, Frank Heinzmann, Sven Feddersen. <i>Genetische Algorithmen und Evolutionstrategien - Eine Einfuehrung in Theorie und Praxis der simulierten Evolution.</i> Addison-Wesley, 1994.
|
||||||
|
</body>
|
||||||
|
</html>
|
36
resources/html/F8Problem.html
Normal file
36
resources/html/F8Problem.html
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Ackley's function</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Ackley's function</h1>
|
||||||
|
<center>
|
||||||
|
<img src="images/ackleytex.jpg" width="500" height="58" aling="center">
|
||||||
|
</center>
|
||||||
|
<p>
|
||||||
|
Ackley's function is multimodal and symmetrical. It is based on an exponential function and modulated by a cosine function.
|
||||||
|
The outside region is almost planar as to the growing influence of the exponential function.
|
||||||
|
In the center there is a steep hole as to the influence of the cosine function.<br>
|
||||||
|
Its minimum is at: <i>f(x)</i>=<i>f</i>([0, 0, ... , 0])=0.
|
||||||
|
<p>
|
||||||
|
The difficulty for an optimization algorithm is mid-graded because a simple optimization-algorithm like <i>hill-climbing</i> would get stuck in a local minimum. The optimization algorithm has to search a broader environ to overcome the local minimum and get closer to the global optima.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<img src="images/ackley.jpg" width="480" height="360" border="2" align="center">
|
||||||
|
<br>
|
||||||
|
Ackley's function within the co-domain -20 >= <i>x</i> >= 20, <i>a</i>=20, <i>b</i>=0.2, <i>c</i>=2*π, <i>n</i>=2.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<img src="images/ackleyopt.jpg" width="480" height="360" border="2" align="center">
|
||||||
|
<br>
|
||||||
|
Ackley's function close to the optimum.
|
||||||
|
<hr>
|
||||||
|
More information about Ackley's function can be found at:
|
||||||
|
<p>
|
||||||
|
David. H. Ackley. <i>A connection machine for genetic hillclimbing.</i> Kluwer Academic Publishers, Boston, 1987.
|
||||||
|
<p>
|
||||||
|
Thomas Baeck. <i>Evolutionary Algorithms in Theory and Practice.</i> Oxford University Press, 1996.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
19
resources/html/FitnessConvergenceTerminator.html
Normal file
19
resources/html/FitnessConvergenceTerminator.html
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Fitness Convergence Terminator</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Fitness Convergence Terminator</h1>
|
||||||
|
<center>
|
||||||
|
</center><br>
|
||||||
|
The fitness convergence terminator stops the optimization, when there has been hardly
|
||||||
|
any change in the best fitness in the population (within percentual or absolute distance) for a certain
|
||||||
|
time, given in generations or fitness calls. In case of multi-objective optimization, the 2-norm of
|
||||||
|
the fitness vector is
|
||||||
|
currently used.<br>
|
||||||
|
Be aware that, if the optimization is allowed to be non-monotonic, such as for (,)-ES strategies,
|
||||||
|
and if the optimum is close to zero, it may happen that the fitness fluctuates due to numeric
|
||||||
|
issues and does not easily converge in a relative way.<br>
|
||||||
|
Check the help for the <a href="PopulationMeasureTerminator.html">PopulationMeasureTerminator</a> for additional information.
|
||||||
|
</body>
|
||||||
|
</html>
|
56
resources/html/GenericConstraint.html
Normal file
56
resources/html/GenericConstraint.html
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Generic Constraints</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 align="center">Generic Constraints</h1>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p>To represent generic constraints on real-valued functions, this class can parse
|
||||||
|
String expressions in prefix notation of the form:
|
||||||
|
<blockquote>
|
||||||
|
<expr> ::= <constant-operator> | <functional-operator> "(" <arguments> ")"<br>
|
||||||
|
<arguments> ::= <expr> | <expr> "," <arguments>
|
||||||
|
</blockquote>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Setting the <b>constraint string</b>:
|
||||||
|
Constant operators have an arity of zero. Examples are:<br>
|
||||||
|
(pi,0) (X,0) (1.0,0)<br>
|
||||||
|
|
||||||
|
Functional operators have an arity greater zero. Examples are:<br>
|
||||||
|
(sum,1) (prod,1) (abs,1) (sin,1) (pow2,1) (pow3,1) (sqrt,1) (neg,1) (cos,1) (exp,1)<br>
|
||||||
|
(+,2) (-,2) (/,2) (*,2)<br>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Additionally, any numerical strings can also be used; they are parsed to numeric constants. The literal <i>n</i>
|
||||||
|
is parsed to the current number of problem dimensions.<br>
|
||||||
|
Notice that only the <i>sum</i> and <i>prod</i> operators may receive the literal X as input, standing
|
||||||
|
for the full solution vector. Access to single solution components is possible by writing <i>x0...x9</i>
|
||||||
|
for a problem with 10 dimensions.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Thus you may write <font face="Courier">+(-(5,sum(X)),+sin(/(x0,pi)))</font>
|
||||||
|
and select 'lessEqZero' as relation to require valid solutions to fulfill 5-sum(X)+sin(x0/pi)<=0.<br>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Typical <b>relations</b> concerning constraints allow for g(x)<=0, g(x)==0, or g(x)>=0 for
|
||||||
|
constraint g. Notice that equal-to-zero constraints are converted to g(x)==0 <=> |g(x)-epsilon|<=0 for
|
||||||
|
customizable small values of epsilon.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The <b>handling method</b> defines how EvA 2 copes with the constraint. Simplest variant is an
|
||||||
|
additive penalty which is scaled by the penalty factor and then added directly to the fitness
|
||||||
|
of an individual. This will work for any optimization strategy, but results will depend on
|
||||||
|
the selection of penalty factors. Multiplicative penalty works analogously with the difference of
|
||||||
|
being multiplied with the raw fitness.<br>
|
||||||
|
In the variant called specific tag, the constraint violation is stored in an extra field of any
|
||||||
|
individual and may be regarded by the optimization strategy. However, not all strategies provide
|
||||||
|
simple mechanisms of incorporating this specific tag.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -14,12 +14,12 @@ public class EvAInfo {
|
|||||||
// public static final String fullVersion = "2.043"; // moved to EvA2.props!
|
// public static final String fullVersion = "2.043"; // moved to EvA2.props!
|
||||||
public static final String url = "http://www.cogsys.cs.uni-tuebingen.de/software/EvA2";
|
public static final String url = "http://www.cogsys.cs.uni-tuebingen.de/software/EvA2";
|
||||||
|
|
||||||
public static final String propertyFile = "resources/EvA2.props";
|
public static final String propertyFile = "META-INF/EvA2.props";
|
||||||
public static final String LGPLFile = "lgpl-3.0.txt";
|
public static final String LGPLFile = "lgpl-3.0.txt";
|
||||||
public static final String GPLFile= "gpl-3.0.txt";
|
public static final String GPLFile= "gpl-3.0.txt";
|
||||||
public static final String iconLocation = "resources/images/icon4.gif";
|
public static final String iconLocation = "images/icon4.gif";
|
||||||
|
|
||||||
public static final String splashLocation = "resources/images/EvASplashScreen.png";
|
public static final String splashLocation = "images/EvASplashScreen.png";
|
||||||
public static final String infoTitle = productName+" Information";
|
public static final String infoTitle = productName+" Information";
|
||||||
public static final String copyrightYear = "2010-2012";
|
public static final String copyrightYear = "2010-2012";
|
||||||
|
|
||||||
|
@@ -1,33 +0,0 @@
|
|||||||
package eva2.client;
|
|
||||||
|
|
||||||
import eva2.gui.ExtAction;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
import java.awt.event.WindowListener;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by IntelliJ IDEA.
|
|
||||||
* User: streiche
|
|
||||||
* Date: 12.05.2003
|
|
||||||
* Time: 18:28:54
|
|
||||||
* To change this template use Options | File Templates.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class AppExitAction extends ExtAction implements WindowListener{
|
|
||||||
public AppExitAction(String s, String toolTip, javax.swing.KeyStroke key) {
|
|
||||||
super(s, toolTip, key);
|
|
||||||
}
|
|
||||||
private void exit(){
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
public void actionPerformed(ActionEvent e) { exit(); }
|
|
||||||
public void windowOpened(WindowEvent e) { }
|
|
||||||
public void windowClosed(WindowEvent e) { }
|
|
||||||
public void windowIconified(WindowEvent e) { }
|
|
||||||
public void windowDeiconified(WindowEvent e) { }
|
|
||||||
public void windowActivated(WindowEvent e) { }
|
|
||||||
public void windowDeactivated(WindowEvent e) { }
|
|
||||||
public void windowClosing(WindowEvent e) { exit(); }
|
|
||||||
}
|
|
@@ -44,7 +44,7 @@ import javax.swing.border.TitledBorder;
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class EvAClient implements RemoteStateListener {
|
public class EvAClient extends JFrame implements RemoteStateListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generated serial version identifier.
|
* Generated serial version identifier.
|
||||||
@@ -54,7 +54,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
private boolean clientInited = false;
|
private boolean clientInited = false;
|
||||||
private JExtDesktopPaneToolBar desktopToolBar;
|
private JExtDesktopPaneToolBar desktopToolBar;
|
||||||
private JDesktopPane desktopPane;
|
private JDesktopPane desktopPane;
|
||||||
private JFrame mainFrame;
|
//private JFrame mainFrame;
|
||||||
private JPanel configurationPane;
|
private JPanel configurationPane;
|
||||||
private JSplitPane horizontalSplit;
|
private JSplitPane horizontalSplit;
|
||||||
private Runnable initRnbl = null;
|
private Runnable initRnbl = null;
|
||||||
@@ -333,33 +333,6 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a window listener to the EvA2 JFrame instance.
|
|
||||||
*
|
|
||||||
* @param l
|
|
||||||
*/
|
|
||||||
public void addWindowListener(WindowListener l) {
|
|
||||||
if (mainFrame != null) {
|
|
||||||
mainFrame.addWindowListener(l);
|
|
||||||
} else {
|
|
||||||
System.err.println("Error, no JFrame existent in "
|
|
||||||
+ this.getClass().getSimpleName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a window listener to the EvA2 JFrame instance.
|
|
||||||
*
|
|
||||||
* @param l
|
|
||||||
*/
|
|
||||||
public void removeWindowListener(WindowListener l) {
|
|
||||||
if (mainFrame != null) {
|
|
||||||
mainFrame.removeWindowListener(l);
|
|
||||||
} else {
|
|
||||||
System.err.println("Error, no JFrame existent in "
|
|
||||||
+ this.getClass().getSimpleName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set UI Font for all controls.
|
* Set UI Font for all controls.
|
||||||
@@ -406,9 +379,9 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Create main frame with GridBagLayout */
|
/* Create main frame with GridBagLayout */
|
||||||
mainFrame = new JFrame(EvAInfo.productName);
|
setTitle(EvAInfo.productName);
|
||||||
mainFrame.setLayout(new GridBagLayout());
|
setLayout(new GridBagLayout());
|
||||||
mainFrame.setMinimumSize(new Dimension(800, 600));
|
setMinimumSize(new Dimension(800, 600));
|
||||||
|
|
||||||
/* Creates the desktopPane for Plot/Text Output */
|
/* Creates the desktopPane for Plot/Text Output */
|
||||||
desktopPane = new JExtDesktopPane();
|
desktopPane = new JExtDesktopPane();
|
||||||
@@ -432,7 +405,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
BasicResourceLoader loader = BasicResourceLoader.instance();
|
BasicResourceLoader loader = BasicResourceLoader.instance();
|
||||||
byte[] bytes = loader.getBytesFromResourceLocation(EvAInfo.iconLocation, true);
|
byte[] bytes = loader.getBytesFromResourceLocation(EvAInfo.iconLocation, true);
|
||||||
// TODO: use setIconImages (for better support of multiple icons when changing programs etc.)
|
// TODO: use setIconImages (for better support of multiple icons when changing programs etc.)
|
||||||
mainFrame.setIconImage(Toolkit.getDefaultToolkit().createImage(bytes));
|
setIconImage(Toolkit.getDefaultToolkit().createImage(bytes));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(200);
|
Thread.sleep(200);
|
||||||
@@ -451,7 +424,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
}
|
}
|
||||||
createActions();
|
createActions();
|
||||||
|
|
||||||
mainFrame.setSize(800, 600);
|
setSize(800, 600);
|
||||||
|
|
||||||
/* Create a new ConfigurationPanel (left side) */
|
/* Create a new ConfigurationPanel (left side) */
|
||||||
configurationPane = new JPanel(new GridBagLayout());
|
configurationPane = new JPanel(new GridBagLayout());
|
||||||
@@ -464,7 +437,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
gbConstraints.fill = GridBagConstraints.VERTICAL;
|
gbConstraints.fill = GridBagConstraints.VERTICAL;
|
||||||
gbConstraints.gridwidth = GridBagConstraints.RELATIVE;
|
gbConstraints.gridwidth = GridBagConstraints.RELATIVE;
|
||||||
gbConstraints.gridheight = GridBagConstraints.RELATIVE;
|
gbConstraints.gridheight = GridBagConstraints.RELATIVE;
|
||||||
mainFrame.add(configurationPane, gbConstraints);
|
add(configurationPane, gbConstraints);
|
||||||
|
|
||||||
/* SplitPane for desktopPanel and loggingPanel */
|
/* SplitPane for desktopPanel and loggingPanel */
|
||||||
horizontalSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true);
|
horizontalSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true);
|
||||||
@@ -482,7 +455,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
gbConstraints.fill = GridBagConstraints.BOTH;
|
gbConstraints.fill = GridBagConstraints.BOTH;
|
||||||
gbConstraints.gridwidth = GridBagConstraints.REMAINDER;
|
gbConstraints.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
gbConstraints.gridheight = GridBagConstraints.RELATIVE;
|
gbConstraints.gridheight = GridBagConstraints.RELATIVE;
|
||||||
mainFrame.add(horizontalSplit, gbConstraints);
|
add(horizontalSplit, gbConstraints);
|
||||||
|
|
||||||
/* StatusBar of the main frame */
|
/* StatusBar of the main frame */
|
||||||
statusBar = new JPanel(new FlowLayout(FlowLayout.RIGHT));
|
statusBar = new JPanel(new FlowLayout(FlowLayout.RIGHT));
|
||||||
@@ -500,9 +473,9 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
gbConstraints.weighty = 0.0;
|
gbConstraints.weighty = 0.0;
|
||||||
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
|
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||||
gbConstraints.anchor = GridBagConstraints.PAGE_END;
|
gbConstraints.anchor = GridBagConstraints.PAGE_END;
|
||||||
mainFrame.add(statusBar, gbConstraints);
|
add(statusBar, gbConstraints);
|
||||||
|
|
||||||
mainFrame.setVisible(true);
|
setVisible(true);
|
||||||
}
|
}
|
||||||
if (useDefaultModule != null) {
|
if (useDefaultModule != null) {
|
||||||
/*
|
/*
|
||||||
@@ -517,11 +490,18 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
|
|
||||||
if (withGUI) {
|
if (withGUI) {
|
||||||
buildMenu();
|
buildMenu();
|
||||||
mainFrame.addWindowListener(new WindowAdapter() {
|
addWindowListener(new WindowAdapter() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowClosing(final WindowEvent event) {
|
public void windowClosing(final WindowEvent event) {
|
||||||
EvAClient.this.close();
|
int result = JOptionPane.showConfirmDialog(
|
||||||
|
EvAClient.this,
|
||||||
|
"Do you really want to exit EvA2?",
|
||||||
|
"Exit Application",
|
||||||
|
JOptionPane.YES_NO_OPTION);
|
||||||
|
if (result == JOptionPane.YES_OPTION) {
|
||||||
|
EvAClient.this.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -542,13 +522,13 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
configurationPane.setVisible(true);
|
configurationPane.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(mainFrame.isVisible())) {
|
if (!(this.isVisible())) {
|
||||||
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
mainFrame.setLocation((int) ((screenSize.width - mainFrame.getWidth()) / 2), (int) ((screenSize.height - mainFrame.getHeight()) / 2.5));
|
this.setLocation((int) ((screenSize.width - this.getWidth()) / 2), (int) ((screenSize.height - this.getHeight()) / 2.5));
|
||||||
mainFrame.pack();
|
this.pack();
|
||||||
mainFrame.setSize(screenSize);
|
this.setSize(screenSize);
|
||||||
mainFrame.setVisible(true);
|
this.setVisible(true);
|
||||||
mainFrame.setVisible(true);
|
this.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this message is omitted, the stupid scroll pane runs to
|
// if this message is omitted, the stupid scroll pane runs to
|
||||||
@@ -819,7 +799,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(final ActionEvent event) {
|
public void actionPerformed(final ActionEvent event) {
|
||||||
// ToDo
|
// ToDo
|
||||||
String helpHS = "resources/EvA2Help/EvA2Help.hs";
|
String helpHS = "EvA2Help/EvA2Help.hs";
|
||||||
ClassLoader cl = EvAClient.class.getClassLoader();
|
ClassLoader cl = EvAClient.class.getClassLoader();
|
||||||
JHelpContentViewer helpPane;
|
JHelpContentViewer helpPane;
|
||||||
try {
|
try {
|
||||||
@@ -846,7 +826,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
*/
|
*/
|
||||||
private void buildMenu() {
|
private void buildMenu() {
|
||||||
menuBar = new JMenuBar();
|
menuBar = new JMenuBar();
|
||||||
mainFrame.setJMenuBar(menuBar);
|
setJMenuBar(menuBar);
|
||||||
menuModule = new JExtMenu("&Module");
|
menuModule = new JExtMenu("&Module");
|
||||||
menuModule.add(actModuleLoad);
|
menuModule.add(actModuleLoad);
|
||||||
|
|
||||||
@@ -907,7 +887,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
if (selectedModule == null) { // show a dialog and ask for a module
|
if (selectedModule == null) { // show a dialog and ask for a module
|
||||||
String[] moduleNameList = comAdapter.getModuleNameList();
|
String[] moduleNameList = comAdapter.getModuleNameList();
|
||||||
if (moduleNameList == null) {
|
if (moduleNameList == null) {
|
||||||
JOptionPane.showMessageDialog(mainFrame, "No modules available on " + comAdapter.getHostName(), EvAInfo.infoTitle, 1);
|
JOptionPane.showMessageDialog(this, "No modules available on " + comAdapter.getHostName(), EvAInfo.infoTitle, 1);
|
||||||
} else {
|
} else {
|
||||||
String lastModule = null;
|
String lastModule = null;
|
||||||
|
|
||||||
@@ -923,7 +903,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
LOGGER.log(Level.INFO, "Defaulting to module: {0}", lastModule);
|
LOGGER.log(Level.INFO, "Defaulting to module: {0}", lastModule);
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedModule = (String) JOptionPane.showInputDialog(mainFrame,
|
selectedModule = (String) JOptionPane.showInputDialog(this,
|
||||||
"Which module do you want \n to load on host: " + comAdapter.getHostName() + " ?",
|
"Which module do you want \n to load on host: " + comAdapter.getHostName() + " ?",
|
||||||
"Load optimization module on host",
|
"Load optimization module on host",
|
||||||
JOptionPane.QUESTION_MESSAGE,
|
JOptionPane.QUESTION_MESSAGE,
|
||||||
@@ -1058,7 +1038,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
gbConstraints.gridwidth = 2;
|
gbConstraints.gridwidth = 2;
|
||||||
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
|
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||||
gbConstraints.anchor = GridBagConstraints.PAGE_START;
|
gbConstraints.anchor = GridBagConstraints.PAGE_START;
|
||||||
mainFrame.add(frameMaker.getToolBar(), gbConstraints);
|
add(frameMaker.getToolBar(), gbConstraints);
|
||||||
|
|
||||||
GridBagConstraints gbConstraints2 = new GridBagConstraints();
|
GridBagConstraints gbConstraints2 = new GridBagConstraints();
|
||||||
gbConstraints2.gridx = 0;
|
gbConstraints2.gridx = 0;
|
||||||
@@ -1119,7 +1099,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
if (hostNames == null || hostNames.length == 0) {
|
if (hostNames == null || hostNames.length == 0) {
|
||||||
showNoHostFoundDialog();
|
showNoHostFoundDialog();
|
||||||
} else {
|
} else {
|
||||||
String hostName = (String) JOptionPane.showInputDialog(mainFrame,
|
String hostName = (String) JOptionPane.showInputDialog(this,
|
||||||
"Which active host do you want to connect to?", "Host", JOptionPane.QUESTION_MESSAGE, null,
|
"Which active host do you want to connect to?", "Host", JOptionPane.QUESTION_MESSAGE, null,
|
||||||
hostNames, comAdapter.getHostName());
|
hostNames, comAdapter.getHostName());
|
||||||
if (hostName != null) {
|
if (hostName != null) {
|
||||||
@@ -1138,12 +1118,12 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showPleaseWaitDialog() {
|
private void showPleaseWaitDialog() {
|
||||||
JOptionPane.showMessageDialog(configurationPane, "Please wait one moment.", EvAInfo.infoTitle, 1);
|
JOptionPane.showMessageDialog(this, "Please wait one moment.", EvAInfo.infoTitle, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showAboutDialog() {
|
private void showAboutDialog() {
|
||||||
AboutDialog aboutDialog = new AboutDialog(mainFrame);
|
AboutDialog aboutDialog = new AboutDialog(this);
|
||||||
aboutDialog.setLocationRelativeTo(mainFrame);
|
aboutDialog.setLocationRelativeTo(this);
|
||||||
aboutDialog.setVisible(true);
|
aboutDialog.setVisible(true);
|
||||||
aboutDialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
|
aboutDialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
|
||||||
}
|
}
|
||||||
@@ -1156,7 +1136,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showNoHostFoundDialog() {
|
private void showNoHostFoundDialog() {
|
||||||
JOptionPane.showMessageDialog(mainFrame, "No host with running EVASERVER found. Please start one or \nadd the correct address to the properties list.", EvAInfo.infoTitle, 1);
|
JOptionPane.showMessageDialog(this, "No host with running EVASERVER found. Please start one or \nadd the correct address to the properties list.", EvAInfo.infoTitle, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectAvailableHostToKill(String[] HostNames) {
|
private void selectAvailableHostToKill(String[] HostNames) {
|
||||||
@@ -1164,7 +1144,7 @@ public class EvAClient implements RemoteStateListener {
|
|||||||
showNoHostFoundDialog();
|
showNoHostFoundDialog();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String HostName = (String) JOptionPane.showInputDialog(mainFrame,
|
String HostName = (String) JOptionPane.showInputDialog(this,
|
||||||
"Which server do you want to be killed ?", "Host", JOptionPane.QUESTION_MESSAGE, null,
|
"Which server do you want to be killed ?", "Host", JOptionPane.QUESTION_MESSAGE, null,
|
||||||
HostNames, comAdapter.getHostName());
|
HostNames, comAdapter.getHostName());
|
||||||
if (HostName == null) {
|
if (HostName == null) {
|
||||||
|
@@ -71,7 +71,7 @@ public class EvAModuleButtonPanelMaker implements RemoteStateListener, Serializa
|
|||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
runButton = ToolBoxGui.createIconifiedButton("resources/images/Play24.gif", "Start", true);
|
runButton = ToolBoxGui.createIconifiedButton("images/Play24.gif", "Start", true);
|
||||||
runButton.setToolTipText("Start the current optimization run.");
|
runButton.setToolTipText("Start the current optimization run.");
|
||||||
|
|
||||||
runButton.addActionListener(new ActionListener() {
|
runButton.addActionListener(new ActionListener() {
|
||||||
@@ -87,7 +87,7 @@ public class EvAModuleButtonPanelMaker implements RemoteStateListener, Serializa
|
|||||||
|
|
||||||
toolBar.add(runButton);
|
toolBar.add(runButton);
|
||||||
|
|
||||||
stopButton = ToolBoxGui.createIconifiedButton("resources/images/Stop24.gif", "Stop", true);
|
stopButton = ToolBoxGui.createIconifiedButton("images/Stop24.gif", "Stop", true);
|
||||||
stopButton.setToolTipText("Stop the current optimization run.");
|
stopButton.setToolTipText("Stop the current optimization run.");
|
||||||
//stopButton.setBorderPainted(false);
|
//stopButton.setBorderPainted(false);
|
||||||
stopButton.addActionListener(new ActionListener() {
|
stopButton.addActionListener(new ActionListener() {
|
||||||
@@ -106,7 +106,7 @@ public class EvAModuleButtonPanelMaker implements RemoteStateListener, Serializa
|
|||||||
stopButton.setEnabled(runningState);
|
stopButton.setEnabled(runningState);
|
||||||
toolBar.add(stopButton);
|
toolBar.add(stopButton);
|
||||||
|
|
||||||
postProcessButton = ToolBoxGui.createIconifiedButton("resources/images/History24.gif", "Post Process", true);
|
postProcessButton = ToolBoxGui.createIconifiedButton("images/History24.gif", "Post Process", true);
|
||||||
postProcessButton.setToolTipText("Start post processing according to available parameters.");
|
postProcessButton.setToolTipText("Start post processing according to available parameters.");
|
||||||
//postProcessButton.setBorderPainted(false);
|
//postProcessButton.setBorderPainted(false);
|
||||||
postProcessButton.addActionListener(new ActionListener() {
|
postProcessButton.addActionListener(new ActionListener() {
|
||||||
@@ -125,7 +125,7 @@ public class EvAModuleButtonPanelMaker implements RemoteStateListener, Serializa
|
|||||||
postProcessButton.setEnabled(runningState && moduleAdapter.hasPostProcessing());
|
postProcessButton.setEnabled(runningState && moduleAdapter.hasPostProcessing());
|
||||||
toolBar.add(postProcessButton);
|
toolBar.add(postProcessButton);
|
||||||
|
|
||||||
scheduleButton = ToolBoxGui.createIconifiedButton("resources/images/Server24.gif", "Schedule", true);
|
scheduleButton = ToolBoxGui.createIconifiedButton("images/Server24.gif", "Schedule", true);
|
||||||
scheduleButton.setToolTipText("Schedule the currently configured optimization as a job.");
|
scheduleButton.setToolTipText("Schedule the currently configured optimization as a job.");
|
||||||
//scheduleButton.setBorderPainted(false);
|
//scheduleButton.setBorderPainted(false);
|
||||||
scheduleButton.addActionListener(new ActionListener() {
|
scheduleButton.addActionListener(new ActionListener() {
|
||||||
|
@@ -104,7 +104,7 @@ public class GOEPanel extends JPanel implements ItemListener {
|
|||||||
propChangeSupport.firePropertyChange("", backupObject, genericObjectEditor.getValue());
|
propChangeSupport.firePropertyChange("", backupObject, genericObjectEditor.getValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
openButton = makeIconButton("resources/images/Open16.gif", "Open");
|
openButton = makeIconButton("images/Open16.gif", "Open");
|
||||||
openButton.setToolTipText("Load a configured object");
|
openButton.setToolTipText("Load a configured object");
|
||||||
openButton.setEnabled(true);
|
openButton.setEnabled(true);
|
||||||
openButton.addActionListener(new ActionListener() {
|
openButton.addActionListener(new ActionListener() {
|
||||||
@@ -123,7 +123,7 @@ public class GOEPanel extends JPanel implements ItemListener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
saveButton = makeIconButton("resources/images/Save16.gif", "Save");
|
saveButton = makeIconButton("images/Save16.gif", "Save");
|
||||||
saveButton.setToolTipText("Save the current configured object");
|
saveButton.setToolTipText("Save the current configured object");
|
||||||
saveButton.setEnabled(true);
|
saveButton.setEnabled(true);
|
||||||
saveButton.addActionListener(new ActionListener() {
|
saveButton.addActionListener(new ActionListener() {
|
||||||
|
@@ -174,7 +174,7 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
|
|||||||
gbc.fill = GridBagConstraints.REMAINDER;
|
gbc.fill = GridBagConstraints.REMAINDER;
|
||||||
gbc.gridx = 1;
|
gbc.gridx = 1;
|
||||||
gbc.weightx = 1;
|
gbc.weightx = 1;
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/images/Sub24.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/Sub24.gif", true);
|
||||||
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
this.m_Delete[i].addActionListener(deleteTarget);
|
this.m_Delete[i].addActionListener(deleteTarget);
|
||||||
this.m_TargetList.add(this.m_Delete[i], gbc);
|
this.m_TargetList.add(this.m_Delete[i], gbc);
|
||||||
|
@@ -198,7 +198,7 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
|
|||||||
gbc.fill = GridBagConstraints.REMAINDER;
|
gbc.fill = GridBagConstraints.REMAINDER;
|
||||||
gbc.gridx = 2;
|
gbc.gridx = 2;
|
||||||
gbc.weightx = 1;
|
gbc.weightx = 1;
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/images/Sub24.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/Sub24.gif", true);
|
||||||
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
this.m_Delete[i].addActionListener(deleteTarget);
|
this.m_Delete[i].addActionListener(deleteTarget);
|
||||||
this.m_TargetList.add(this.m_Delete[i], gbc);
|
this.m_TargetList.add(this.m_Delete[i], gbc);
|
||||||
|
@@ -71,27 +71,27 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
|
|||||||
this.m_ParameterPanel.add(this.m_Password, gbc);
|
this.m_ParameterPanel.add(this.m_Password, gbc);
|
||||||
|
|
||||||
JButton tmpB;
|
JButton tmpB;
|
||||||
tmpB = makeButtonWith("resources/images/Add24.gif", "add");
|
tmpB = makeButtonWith("images/Add24.gif", "add");
|
||||||
tmpB.addActionListener(addServer);
|
tmpB.addActionListener(addServer);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 0, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 0, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
tmpB = makeButtonWith("resources/images/Export24.gif", "Load");
|
tmpB = makeButtonWith("images/Export24.gif", "Load");
|
||||||
tmpB.addActionListener(loadServers);
|
tmpB.addActionListener(loadServers);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 1, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 1, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
tmpB = makeButtonWith("resources/images/Import24.gif", "Save");
|
tmpB = makeButtonWith("images/Import24.gif", "Save");
|
||||||
tmpB.addActionListener(saveServers);
|
tmpB.addActionListener(saveServers);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 2, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 2, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
tmpB = makeButtonWith("resources/images/Refresh24.gif", "Update Status");
|
tmpB = makeButtonWith("images/Refresh24.gif", "Update Status");
|
||||||
tmpB.addActionListener(updateServers);
|
tmpB.addActionListener(updateServers);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 3, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 3, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
tmpB = makeButtonWith("resources/images/Play24.gif", "Start Server");
|
tmpB = makeButtonWith("images/Play24.gif", "Start Server");
|
||||||
tmpB.addActionListener(startServers);
|
tmpB.addActionListener(startServers);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 4, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 4, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
tmpB = makeButtonWith("resources/images/Stop24.gif", "Stop Server");
|
tmpB = makeButtonWith("images/Stop24.gif", "Stop Server");
|
||||||
tmpB.addActionListener(killServers);
|
tmpB.addActionListener(killServers);
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 5, 1, 1);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 1, 5, 1, 1);
|
||||||
this.m_ParameterPanel.add(tmpB, gbc);
|
this.m_ParameterPanel.add(tmpB, gbc);
|
||||||
@@ -168,7 +168,7 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
|
|||||||
this.m_ServerList.add(this.m_CPUs[i], gbc);
|
this.m_ServerList.add(this.m_CPUs[i], gbc);
|
||||||
// The delete button
|
// The delete button
|
||||||
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.REMAINDER, 3, 10);
|
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.REMAINDER, 3, 10);
|
||||||
bytes = BasicResourceLoader.instance().getBytesFromResourceLocation("resources/images/Sub24.gif", true);
|
bytes = BasicResourceLoader.instance().getBytesFromResourceLocation("images/Sub24.gif", true);
|
||||||
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
this.m_Delete[i].addActionListener(deleteServer);
|
this.m_Delete[i].addActionListener(deleteServer);
|
||||||
this.m_ServerList.add(this.m_Delete[i], gbc);
|
this.m_ServerList.add(this.m_Delete[i], gbc);
|
||||||
|
@@ -52,12 +52,12 @@ public class HtmlDemo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean resourceExists() {
|
public boolean resourceExists() {
|
||||||
URL url = ClassLoader.getSystemResource("resources/"+m_name);
|
URL url = ClassLoader.getSystemResource("html/"+m_name);
|
||||||
return (url != null);
|
return (url != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean resourceExists(String mname) {
|
public static boolean resourceExists(String mname) {
|
||||||
URL url = ClassLoader.getSystemResource("resources/"+mname);
|
URL url = ClassLoader.getSystemResource("html/"+mname);
|
||||||
return (url != null);
|
return (url != null);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -66,12 +66,12 @@ public class HtmlDemo {
|
|||||||
public void show() {
|
public void show() {
|
||||||
try {
|
try {
|
||||||
URL url = null;
|
URL url = null;
|
||||||
url = this.getClass().getClassLoader().getSystemResource("resources/"+m_name);
|
url = this.getClass().getClassLoader().getSystemResource("html/"+m_name);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
m_html = new JEditorPane(url);
|
m_html = new JEditorPane(url);
|
||||||
} catch (java.io.IOException ioe) {
|
} catch (java.io.IOException ioe) {
|
||||||
url = this.getClass().getClassLoader().getSystemResource("resources/Default.html");
|
url = this.getClass().getClassLoader().getSystemResource("html/Default.html");
|
||||||
m_html = new JEditorPane(url);
|
m_html = new JEditorPane(url);
|
||||||
}
|
}
|
||||||
//m_html = new JEditorPane(htmlDescription);
|
//m_html = new JEditorPane(htmlDescription);
|
||||||
|
@@ -27,7 +27,7 @@ public class JExtDesktopPaneToolBar extends JToolBar {
|
|||||||
setFloatable(false);
|
setFloatable(false);
|
||||||
|
|
||||||
/* Add Buttons to tile the desktopPane */
|
/* Add Buttons to tile the desktopPane */
|
||||||
JButton verticalButton = ToolBoxGui.createIconifiedButton("resources/images/TileVertical16.png", "Tile vertically", false);
|
JButton verticalButton = ToolBoxGui.createIconifiedButton("images/TileVertical16.png", "Tile vertically", false);
|
||||||
verticalButton.addActionListener(new ActionListener() {
|
verticalButton.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -38,7 +38,7 @@ public class JExtDesktopPaneToolBar extends JToolBar {
|
|||||||
});
|
});
|
||||||
add(verticalButton);
|
add(verticalButton);
|
||||||
|
|
||||||
JButton horizontalButton = ToolBoxGui.createIconifiedButton("resources/images/TileHorizontal16.png", "Tile horizontally", false);
|
JButton horizontalButton = ToolBoxGui.createIconifiedButton("images/TileHorizontal16.png", "Tile horizontally", false);
|
||||||
horizontalButton.addActionListener(new ActionListener() {
|
horizontalButton.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -49,7 +49,7 @@ public class JExtDesktopPaneToolBar extends JToolBar {
|
|||||||
});
|
});
|
||||||
add(horizontalButton);
|
add(horizontalButton);
|
||||||
|
|
||||||
JButton cascadeButton = ToolBoxGui.createIconifiedButton("resources/images/Cascade16.png", "Cascade windows", false);
|
JButton cascadeButton = ToolBoxGui.createIconifiedButton("images/Cascade16.png", "Cascade windows", false);
|
||||||
cascadeButton.addActionListener(new ActionListener() {
|
cascadeButton.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -55,7 +55,7 @@ public class MOCCOChooseMOStrategy extends MOCCOPhase implements InterfaceProces
|
|||||||
gbc.fill = GridBagConstraints.BOTH;
|
gbc.fill = GridBagConstraints.BOTH;
|
||||||
gbc.weightx = 100;
|
gbc.weightx = 100;
|
||||||
tmpB = new JButton();
|
tmpB = new JButton();
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/MOCCO/MOCCO_MOEA.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/MOCCO/MOCCO_MOEA.gif", true);
|
||||||
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
tmpB.setBackground(Color.WHITE);
|
tmpB.setBackground(Color.WHITE);
|
||||||
gbc.gridy = 0;
|
gbc.gridy = 0;
|
||||||
@@ -73,7 +73,7 @@ public class MOCCOChooseMOStrategy extends MOCCOPhase implements InterfaceProces
|
|||||||
" objectives."), gbc);
|
" objectives."), gbc);
|
||||||
|
|
||||||
tmpB = new JButton();
|
tmpB = new JButton();
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/MOCCO/MOCCO_GDF.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/MOCCO/MOCCO_GDF.gif", true);
|
||||||
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
tmpB.setBackground(Color.WHITE);
|
tmpB.setBackground(Color.WHITE);
|
||||||
gbc.gridy = 1;
|
gbc.gridy = 1;
|
||||||
@@ -89,7 +89,7 @@ public class MOCCOChooseMOStrategy extends MOCCOPhase implements InterfaceProces
|
|||||||
this.m_Mocco.m_JPanelParameters.add(tmpP, BorderLayout.CENTER);
|
this.m_Mocco.m_JPanelParameters.add(tmpP, BorderLayout.CENTER);
|
||||||
|
|
||||||
tmpB = new JButton();
|
tmpB = new JButton();
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/MOCCO/MOCCO_STEP.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/MOCCO/MOCCO_STEP.gif", true);
|
||||||
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
tmpB.setBackground(Color.WHITE);
|
tmpB.setBackground(Color.WHITE);
|
||||||
gbc.gridy = 2;
|
gbc.gridy = 2;
|
||||||
@@ -106,7 +106,7 @@ public class MOCCOChooseMOStrategy extends MOCCOPhase implements InterfaceProces
|
|||||||
" into a single objectives. The individual weights are also to be given by the DM."), gbc);
|
" into a single objectives. The individual weights are also to be given by the DM."), gbc);
|
||||||
|
|
||||||
tmpB = new JButton();
|
tmpB = new JButton();
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/MOCCO/MOCCO_REFP.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/MOCCO/MOCCO_REFP.gif", true);
|
||||||
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
tmpB.setBackground(Color.WHITE);
|
tmpB.setBackground(Color.WHITE);
|
||||||
gbc.gridy = 3;
|
gbc.gridy = 3;
|
||||||
@@ -123,7 +123,7 @@ public class MOCCOChooseMOStrategy extends MOCCOPhase implements InterfaceProces
|
|||||||
" same time."), gbc);
|
" same time."), gbc);
|
||||||
|
|
||||||
tmpB = new JButton();
|
tmpB = new JButton();
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/MOCCO/MOCCO_TBCH.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/MOCCO/MOCCO_TBCH.gif", true);
|
||||||
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
tmpB.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
tmpB.setBackground(Color.WHITE);
|
tmpB.setBackground(Color.WHITE);
|
||||||
gbc.gridy = 4;
|
gbc.gridy = 4;
|
||||||
|
@@ -201,7 +201,7 @@ public class PropertyCrossoverMixerEditor extends JPanel implements PropertyEdit
|
|||||||
gbc.fill = GridBagConstraints.REMAINDER;
|
gbc.fill = GridBagConstraints.REMAINDER;
|
||||||
gbc.gridx = 2;
|
gbc.gridx = 2;
|
||||||
gbc.weightx = 1;
|
gbc.weightx = 1;
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/images/Sub24.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/Sub24.gif", true);
|
||||||
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
this.m_Delete[i].addActionListener(deleteTarget);
|
this.m_Delete[i].addActionListener(deleteTarget);
|
||||||
this.m_TargetList.add(this.m_Delete[i], gbc);
|
this.m_TargetList.add(this.m_Delete[i], gbc);
|
||||||
|
@@ -176,7 +176,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
|
|||||||
gbc.fill = GridBagConstraints.REMAINDER;
|
gbc.fill = GridBagConstraints.REMAINDER;
|
||||||
gbc.gridx = 2;
|
gbc.gridx = 2;
|
||||||
gbc.weightx = 1;
|
gbc.weightx = 1;
|
||||||
bytes = loader.getBytesFromResourceLocation("resources/images/Sub24.gif", true);
|
bytes = loader.getBytesFromResourceLocation("images/Sub24.gif", true);
|
||||||
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
|
||||||
this.m_Delete[i].addActionListener(deleteTarget);
|
this.m_Delete[i].addActionListener(deleteTarget);
|
||||||
this.m_TargetList.add(this.m_Delete[i], gbc);
|
this.m_TargetList.add(this.m_Delete[i], gbc);
|
||||||
|
@@ -20,7 +20,7 @@ import eva2.server.go.tools.FileTools;
|
|||||||
* To change this template use File | Settings | File Templates.
|
* To change this template use File | Settings | File Templates.
|
||||||
*/
|
*/
|
||||||
public class MetricD1ApproxParetoFront implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
public class MetricD1ApproxParetoFront implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
||||||
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("resources/MOPReference/T1_250.txt");
|
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
|
||||||
private String[] m_Titles;
|
private String[] m_Titles;
|
||||||
private double[][] m_Reference;
|
private double[][] m_Reference;
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@ public class MetricD1TrueParetoFront implements eva2.server.go.operators.paretof
|
|||||||
|
|
||||||
// private String base = System.getProperty("user.dir");
|
// private String base = System.getProperty("user.dir");
|
||||||
// private String FS = System.getProperty("file.separator");
|
// private String FS = System.getProperty("file.separator");
|
||||||
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("resources/MOPReference/T1_250.txt");
|
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
|
||||||
private String[] m_Titles;
|
private String[] m_Titles;
|
||||||
private double[][] m_Reference;
|
private double[][] m_Reference;
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ import java.util.ArrayList;
|
|||||||
* To change this template use File | Settings | File Templates.
|
* To change this template use File | Settings | File Templates.
|
||||||
*/
|
*/
|
||||||
public class MetricErrorRatio implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
public class MetricErrorRatio implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
||||||
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("resources/MOPReference/T1_250.txt");
|
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
|
||||||
private double m_Epsilon = 0.0001;
|
private double m_Epsilon = 0.0001;
|
||||||
private String[] m_Titles;
|
private String[] m_Titles;
|
||||||
private double[][] m_Reference;
|
private double[][] m_Reference;
|
||||||
|
@@ -19,7 +19,7 @@ import eva2.server.go.tools.FileTools;
|
|||||||
* To change this template use File | Settings | File Templates.
|
* To change this template use File | Settings | File Templates.
|
||||||
*/
|
*/
|
||||||
public class MetricMaximumParetoFrontError implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
public class MetricMaximumParetoFrontError implements eva2.server.go.operators.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
|
||||||
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("resources/MOPReference/T1_250.txt");
|
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
|
||||||
private String[] m_Titles;
|
private String[] m_Titles;
|
||||||
private double[][] m_Reference;
|
private double[][] m_Reference;
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ import eva2.server.go.tools.FileTools;
|
|||||||
*/
|
*/
|
||||||
public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io.Serializable {
|
public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io.Serializable {
|
||||||
private double[][] m_ObjectiveSpaceRange;
|
private double[][] m_ObjectiveSpaceRange;
|
||||||
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("resources/MOPReference/T1_250.txt");
|
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
|
||||||
private String[] m_Titles;
|
private String[] m_Titles;
|
||||||
private double[][] m_Reference;
|
private double[][] m_Reference;
|
||||||
private double m_ReferenceSMetric = -1;
|
private double m_ReferenceSMetric = -1;
|
||||||
|
@@ -197,7 +197,7 @@ public class TF1Problem extends AbstractMultiObjectiveOptimizationProblem implem
|
|||||||
int points = 500;
|
int points = 500;
|
||||||
String base = System.getProperty("user.dir");
|
String base = System.getProperty("user.dir");
|
||||||
String FS = System.getProperty("file.separator");
|
String FS = System.getProperty("file.separator");
|
||||||
PropertyFilePath fileOutPath = PropertyFilePath.getFilePathFromResource("resources/MOPReference"+FS+"T1_"+points+".txt");
|
PropertyFilePath fileOutPath = PropertyFilePath.getFilePathFromResource("MOPReference"+FS+"T1_"+points+".txt");
|
||||||
BufferedWriter writer = null;
|
BufferedWriter writer = null;
|
||||||
try {
|
try {
|
||||||
writer = new BufferedWriter(new FileWriter(fileOutPath.getCompleteFilePath()));
|
writer = new BufferedWriter(new FileWriter(fileOutPath.getCompleteFilePath()));
|
||||||
|
@@ -649,7 +649,7 @@ public class BasicResourceLoader implements ResourceLoader
|
|||||||
if (slInd != -1) planBResName = resourceName.substring(slInd + 1);
|
if (slInd != -1) planBResName = resourceName.substring(slInd + 1);
|
||||||
else planBResName = resourceName;
|
else planBResName = resourceName;
|
||||||
Properties userProps = new Properties();
|
Properties userProps = new Properties();
|
||||||
File propFile = new File(File.separatorChar + "resources" + File.separatorChar + planBResName);
|
File propFile = new File(File.separatorChar + planBResName);
|
||||||
if (propFile.exists()) {
|
if (propFile.exists()) {
|
||||||
try {
|
try {
|
||||||
userProps.load(new FileInputStream(propFile));
|
userProps.load(new FileInputStream(propFile));
|
||||||
|
@@ -409,7 +409,7 @@ public class ReflectPackage {
|
|||||||
System.out.println("1: " + cld.getResource("/eva2/server"));
|
System.out.println("1: " + cld.getResource("/eva2/server"));
|
||||||
System.out.println("2: " + cld.getResource("eva2/server"));
|
System.out.println("2: " + cld.getResource("eva2/server"));
|
||||||
// BasicResourceLoader rld = BasicResourceLoader.instance();
|
// BasicResourceLoader rld = BasicResourceLoader.instance();
|
||||||
// byte[] b = rld.getBytesFromResourceLocation("resources/images/Sub24.gif");
|
// byte[] b = rld.getBytesFromResourceLocation("images/Sub24.gif");
|
||||||
// System.out.println((b == null) ? "null" : b.toString());
|
// System.out.println((b == null) ? "null" : b.toString());
|
||||||
// b = rld.getBytesFromResourceLocation("src/eva2/client/EvAClient.java");
|
// b = rld.getBytesFromResourceLocation("src/eva2/client/EvAClient.java");
|
||||||
// System.out.println((b == null) ? "null" : b.toString());
|
// System.out.println((b == null) ? "null" : b.toString());
|
||||||
|
Reference in New Issue
Block a user