Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java实现随机搜索算法_Java_Algorithm_Search_Random_Implementation - Fatal编程技术网

用java实现随机搜索算法

用java实现随机搜索算法,java,algorithm,search,random,implementation,Java,Algorithm,Search,Random,Implementation,我试图用Java实现一个简单的“随机搜索算法” 下面是一段代码: //执行算法 double bestSolution; //INITIAL SOLUTION! Vector bestVector=null; for (int iter=0; iter<maxIterations; iter++) { //generate random vector-solution Vector v = Vector.generateRandom

我试图用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//初始解决方案!
向量bestVector=null;

对于(int-iter=0;iter,我觉得使用

double bestSolution = Double.MAX_VALUE
因为你的第一个猜测可能是目前为止最好的,不管是什么

甚至可能

double bestSolution = Double.POSITIVE_INFINITY

对我来说,使用它似乎很自然

double bestSolution = Double.MAX_VALUE
因为你的第一个猜测可能是目前为止最好的,不管是什么

甚至可能

double bestSolution = Double.POSITIVE_INFINITY

检查您是否在第一次迭代(
iter==0
),如果是第一次迭代,则使用计算的解决方案初始化最佳解决方案,否则将其与之前的最佳解决方案进行比较。

检查您是否在第一次迭代(
iter==0
),并使用计算出的解初始化最佳解(如果是第一次迭代),否则将其与之前的最佳解进行比较。

这是一个非常合理的想法,但请考虑以下示例:使用该初始值的min x^2算法将永远不会收敛我不知道您在代码中的何处使用
最佳解的值作为种子用于生成下一个向量。我肯定缺少一些东西,
generateRandomVector()
是否以某种方式使用了
bestSolution
?据我所知,您只是在生成随机候选,因此初始值不应影响结果。这就是exacty random search所做的。使用generateRandomVector()创建随机解在预先指定的搜索空间中,并与前一个最佳解决方案进行比较。在这种情况下,无论您最初选择的
bestSolution
是什么,解决方案的收敛速度都不会更快。这是一个非常合理的想法,但请考虑以下示例:使用该初始值,算法将永远不会收敛。我不知道您在代码中的位置正在使用
bestSolution
的值作为生成下一个向量的种子。我一定是遗漏了什么,是不是
generateRandomVector()
以某种方式使用
最佳解决方案
?据我所知,您只是在生成随机候选方案,因此初始值不应影响结果。exacty random search就是这样做的。使用GeneratorDomainVector()创建随机解在预先指定的搜索空间中,并与前一个最佳解决方案进行比较。在这种情况下,无论您最初选择的
bestSolution
是什么,该解决方案都不会更快收敛。