Hi!<br><br>Me, again.<br><br>I am using PARADISEO with my own problem: PDP (same kind as (C)VRP-TW) and I have a genetic algorithm where the mutation operator has been changed with a simulated annealing. It works well but it is very... slow !<br>



<br>So I wanted to parallelize the SA. I followed the lesson 4 and my application gives me this kind of error:<br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">

<div style="margin-left: 40px;">Fatal error in MPI_Isend: Invalid rank, error stack:<br>MPI_Isend(152): MPI_Isend(buf=0x18bd1930, count=6396, MPI_PACKED, dest=2, tag=18, MPI_COMM_WORLD, request=0x18b32fc0) failed<br>

MPI_Isend(104): Invalid rank has value 2 but must be nonnegative and less than 2Terminated<br></div></blockquote><br>My schema.xml is the same as for the parallelization of the evaluation function (which works well). <br>

<br>What kind of problem can it be in my code? As a novice with MPI and PEO I don't know what to do...<br>

Can this error come from my pack/unpack functions?<br><br>My code (assuming I also wrote pack/unpack functions):<br><br> <blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">


<span style="font-family: times new roman,serif;">            <span style="font-family: courier new,monospace;">   // Evaluation function</span></span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                PDPEvalFunc plainEval;</span><br style="font-family: courier new,monospace;">


<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">               // Initializer</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                PDPInit init;</span><br style="font-family: courier new,monospace;">


<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">               // Population Initialization</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
                unsigned popSize = parser.createParam (unsigned(100), "popSize", "Population siwze", 'P',"Configuration").value ();</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                eoPop<PDP> pop (popSize, init);</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">               // Crossover</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                PDPEOCrossover cross;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">               </span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">               ////////////////// SA PART //////////////////</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                // Random move</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                PDPMORandMove randomMove;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
                // Incremental evaluation</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                PDPMOIncrEval incrementalEval;</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                // SA parameters</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                double threshold = 1;</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                double linearRatio = 0.98;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                moCoolingSchedule* coolingSchedule = new moGeometricCoolingSchedule (threshold, linearRatio);</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">
                double initialTemperature = 10;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                // Stopping criteria</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                moGenSolContinue<PDP> continu (maxIterations);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                // Simulated Annealing</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                moSA<PDPMOMove> simulated_annealing (randomMove, incrementalEval,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
                        continu, initialTemperature, *coolingSchedule, plainEval);</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
               ////////////////// GA PART //////////////////</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                eoStochTournamentSelect<PDP> selectOne (0.7);</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                eoSelectPerc<PDP> select (selectOne);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                eoEPReplacement<PDP> replace (2);</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">
             </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                eoGenContinue<PDP> genCont (maxGen);</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">

               ////////////////// PEO PART //////////////////</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                peo::init (argc, argv);</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                peoTransform<PDP> transform (cross, pCross, simulated_annealing, pMut);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                eoEasyEA<PDP> ga (genCont, plainEval, select, transform, replace);</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">
                peoWrapper pea (ga, pop);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                transform.setOwner (pea);</span><br style="font-family: courier new,monospace;">


<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                std::cerr << "Running algorithm..." << std::endl;</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                peo :: run();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                peo :: finalize();</span><br style="font-family: courier new,monospace;">


<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                if (getNodeRank () == 1)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                {</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                  // Solution</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                  PDP solution;</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">                  solution = pop.best_element ();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">                  std::cout << std::endl;</span><br style="font-family: courier new,monospace;">


<span style="font-family: courier new,monospace;">
                }</span><br style="font-family: times new roman,serif;"></blockquote>  

<br style="font-family: times new roman,serif;"><br><br>Sincerely,<br><br>-- <br>Clément Perrod<br>EPITA 2009<br><br><br>