Java Simulated Annealing from Pseudocode

Solution 1

The basic code should look like this:

public class YourClass {
  public static Solution doYourStuff(double startingTemperature, int numberOfIterations, double coolingRate) {
    double t = startingTemperature;
    Solution x = createRandomSolution();
    double ti = t;

    for (int i = 0; i < numberOfIterations; i ++) {
      double f = calculateFitness(x);
      Solution mutatedX = mutate(x);
      double newF = calculateFitness(mutatedX);
      if (newF < f) {
        double p = PR(); // no idea what you're talking about here
        if (p > UR(0, 1)) { // likewise
          // then do nothing
        } else {
          x = mutatedX;
        ti = t * coolingRate;
    return x;

  static class Solution {
    // no idea what's in here...

Now as far as wanting different versions of smallChange() method - totally doable, but you have to read up on inheritance a little bit

Solution 2

You can compare your answer to the code provided for the textbook
Artificial Intelligence a Modern Approach.

Solution 3

Also, a Java-based approach to teaching simulated annealing (with sample code) is here:

Neller, Todd. Teaching Stochastic Local Search, in I. Russell and Z. Markov, eds. Proceedings of the 18th International FLAIRS Conference (FLAIRS-2005), Clearwater Beach, Florida, May 15-17, 2005, AAAI Press, pp. 8-13.

Related resources, references, and demos are here:

Author by


Updated on June 13, 2022


  • Admin
    Admin about 2 months