Реализовать алгоритм случайного поиска в Java - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь реализовать простой "алгоритм случайного поиска" в Java

вот кусок кода:

// выполнить алгоритм

    double bestSolution; //INITIAL SOLUTION!
    Vector bestVector=null;

    for (int iter=0; iter<maxIterations; iter++) {
        //generate random vector-solution
        Vector v = Vector.generateRandomVector(problemSize, minOfSearchSpace, maxOfSearchSpace);
        double currentObjValue = objectiveFunctionValue(v);
        // if a better solution is found
        if (currentObjValue < bestSolution); { 
            bestVector = v;
            bestSolution = currentObjValue;
        }
        System.out.println("Iteration: "+(iter+1)+" Best solution: "+bestSolution);
    } // end for

    System.out.println("\n\nBest solution: "+bestVector.toString()+" Objective Value: "+bestSolution);

Моя проблема: каким-то образом мне нужно инициализировать исходное решение "double bestSolution". какое начальное значение я должен дать? обратите внимание, что для определенной целевой функции такие значения, как «0», затрудняют сходимость.

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Мне кажется естественным использовать

double bestSolution = Double.MAX_VALUE

, поскольку, по-видимому, ваше первое предположение будет наилучшим, независимо от того, что это такое.

или, может быть, даже

double bestSolution = Double.POSITIVE_INFINITY
0 голосов
/ 07 июля 2011

Проверьте, находитесь ли вы на первой итерации (iter == 0), и инициализируйте bestSolution с вычисленным решением, если это первая итерация, иначе сравните его с предыдущим bestSolution.

...