用java实现随机搜索算法
我试图用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
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
是什么,该解决方案都不会更快收敛。