Tsp fitness has been changed and moSA.h has been updated
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@813 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
796b0cbb8e
commit
e0b82a27d1
6 changed files with 29 additions and 24 deletions
|
|
@ -46,7 +46,7 @@ void PartRouteEval :: operator () (Route & __route)
|
|||
|
||||
for (unsigned int i = (unsigned int) (__route.size () * from) ; i < (unsigned int ) (__route.size () * to) ; i ++)
|
||||
{
|
||||
len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ;
|
||||
len += Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ;
|
||||
}
|
||||
|
||||
__route.fitness (len) ;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,11 @@
|
|||
#define route_h
|
||||
|
||||
#include <eoVector.h>
|
||||
#include <eoScalarFitness.h>
|
||||
|
||||
typedef eoVector <float, unsigned int> Route ; // [Fitness (- length), Gene (city)]
|
||||
// A float that has to be minimized.
|
||||
typedef eoScalarFitness< float, std::greater<float> > tspFitness ;
|
||||
|
||||
typedef eoVector <tspFitness, unsigned int> Route ; // [Fitness (length), Gene (city)]
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -40,11 +40,11 @@
|
|||
void RouteEval :: operator () (Route & __route)
|
||||
{
|
||||
|
||||
float len = 0 ;
|
||||
float len = 0.0 ;
|
||||
|
||||
for (unsigned int i = 0 ; i < Graph :: size () ; i ++)
|
||||
{
|
||||
len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ;
|
||||
len += Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ;
|
||||
}
|
||||
|
||||
__route.fitness (len) ;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
#include "two_opt_incr_eval.h"
|
||||
#include "graph.h"
|
||||
|
||||
float TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route)
|
||||
tspFitness TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route)
|
||||
{
|
||||
// From
|
||||
unsigned int v1 = __route [__move.first], v1_next = __route [__move.first + 1] ;
|
||||
|
|
@ -46,8 +46,8 @@ float TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __rout
|
|||
unsigned int v2 = __route [__move.second], v2_next = __route [__move.second + 1] ;
|
||||
|
||||
return __route.fitness ()
|
||||
- Graph :: distance (v1, v2)
|
||||
- Graph :: distance (v1_next, v2_next)
|
||||
+ Graph :: distance (v1, v1_next)
|
||||
+ Graph :: distance (v2, v2_next) ;
|
||||
+ Graph :: distance (v1, v2)
|
||||
+ Graph :: distance (v1_next, v2_next)
|
||||
- Graph :: distance (v1, v1_next)
|
||||
- Graph :: distance (v2, v2_next) ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,10 +42,9 @@
|
|||
|
||||
class TwoOptIncrEval : public moMoveIncrEval <TwoOpt>
|
||||
{
|
||||
|
||||
public :
|
||||
|
||||
float operator () (const TwoOpt & __move, const Route & __route) ;
|
||||
tspFitness operator () (const TwoOpt & __move, const Route & __route) ;
|
||||
|
||||
} ;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue