TSPsolutionState.java

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje
//Stanje v prostoru reitev za problem trgovskega potnika
 
public class TSPsolutionState extends TSPstate implements SolutionSearchState {
 
  public TSPsolutionState(TSPproblem pr) {
    super(pr);
  }
 
  // successors with 2opt
  public List next() {
    List successors = new ListLinked() ;
    int newWalk[] ;
    TSPsolutionState newState ;
    int i, j, k ;
    // select two edges begining at i and j
    for (i=0 ; i < walkLen ; i++)
      for (j = i+2 ; j < walkLen ; j++) {
         newState = new TSPsolutionState(p) ;
         newState.walk = new int[p.size] ;
         for (k=0 ; k <= i ; k++)
           newState.walk[k] = walk[k] ;
         for (k=i+1 ; k <= j ; k++)
           newState.walk[k] = walk[j-(k-i-1)] ;
         for (k=j+1 ; k < walkLen ; k++)
           newState.walk[k] = walk[k] ;
         newState.walkLen = walkLen  ;
         successors.insert(newState);
      }
    return successors ;
  }
 
  public void setRandom() {
    walkLen = p.size ;
    walk = new int[p.size] ;
    int i, temp, rnd ;
    for (i=0 ; i < p.size ; i++)
       walk[i]= i ;
    for (i=p.size-1 ; i > 0 ; i--) {
      temp = walk[i];
      rnd = (int)((i+1)*Math.random()) ;
      walk[i] = walk[rnd] ;
      walk[rnd] = temp ;
    }
  }
 
  public boolean isConsistent() {
    int i, j ;
    for (i=0 ; i < walkLen ; i++) {
      if (walk[i] < 0 || walk[i] > p.size)
        return false ;
      for (j=i+1 ; j < walkLen ; j++)
        if (walk[j] == walk[i])
          return false ;
    }
    return true ;
  }
}
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja