Archive for 4월 18th, 2008

temporary TSP -2

금요일, 4월 18th, 2008

image

그래서 reverse tournament에 Num_Pop/2까지로 해서 95%로 돌려봤다.

population 다양성은 유지되면서 결과값은 더 좋게 나왔다. 800 조금 밑.

 

99%로 해봤다.

image

800조금 위

 

Num_Ipop*2로 하고 90% 해봤다.

image

별로

 

따로 define하고 200으로 해봤다. ipop=50, pop=1000

image

그림은 좋지만 값은 850넘는다.

 

mutation alarm(60초) 후에는 200에서 100으로 줄여봤다. 각이 더 꺾어진다. 좋아짐. 836

image

 

image

30초 60초 90초에 mutation rate과 victim max를 변경했다.

별 소용 없는 듯..

미리 팍 꺾어줘야 할 듯.

 

image

rate 4단계로 하고 max변경 안했다. 30초때 변경이 효과 있는 듯.

 

rate 6단계 max 변경 rate 변경

image

 

그럼 이제 처음에 mutate은 소 elitism은 대 에서 시작하여 mutate 올리고 elitism 내리는쪽으로 하자

mutate은 작은 걸로 시작해 +0.2까지 올라가고

선택 파라미터는 1에 가까운 데서 시작해 10% 내려가도록

image

첫번째 바꿀 때 많이 내려간 걸 볼 수 있다. 그 다음부턴 별로다. 결과도 별로

#define REVERSE_TOURNAMENT_PRESSURE 0.95
#define REV_TOR_STEP    (-(0.06/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   100
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-20)

#define TOURNAMENT_PRESSURE 0.85
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define RATE_CONTROL_CNT    6
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (0.2/RATE_CONTROL_CNT)

 

image

그래서 약간 파라미터 수정했다. 결과는 약 810으로 40쯤 좋아짐

#define REVERSE_TOURNAMENT_PRESSURE 0.94
#define REV_TOR_STEP    (-(0.06/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   120
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-20)

#define TOURNAMENT_PRESSURE 0.83
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

 

이제 반대방향 해보자 끝값이 아까의 시작값과 비슷한 수치로 했다.

image

결과는 816 비슷하다.

보다시피 처음에 떨어지는 각도가 예리하다. 후반에는 경사가 완만해진다.

 

image

802 가 나옴.

image

#define TOURNAMENT_PRESSURE 0.98
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_PRESSURE 0.88
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   50+15*RATE_CONTROL_CNT
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-15)

#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)

 

다시 worst부터 없애는 걸로

image

image

image

확률적으로 60%씩으로 아래서 쭉 훑어도 별 차이 안보임

 

랜덤으로 선택해도 별..

image

(중간에 끊어서 각이 낮아보임  steep한 것) 830대 나옴.

 

 

 

 

image

815

image

#define VICTIM_MIXED   // parent + worst

#define TOURNAMENT_PRESSURE 0.98
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_PRESSURE 0.88
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))
//#define REVERSE_TOURNAMENT_MAX_VICTIM 50+15*RATE_CONTROL_CNT
#define REVERSE_TOURNAMENT_MAX_VICTIM   400

#define MUTATION_RATE_CONTROL
#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
//#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)
#define MUTATION_SWAP_CYCLE

 

같은 걸 30도시에서 해봄

image

image

best는 아님

best는 image

20 11 13 19 17 8 18 7 23 3 0 29 24 22 28 2 27 25 1 12 21 10 9 6 16 26 4 5 14 15

 

 

결국 이쪽으로 가려고 한다

image

30에서 best가 나오는거 봤음.

#define DEFAULT_POPULATION  1000
//#define DEFAULT_GENERATION    5000
#define DEFAULT_GENERATION  -1  // unlimited
#define DEFAULT_NEW_POP     100 // new population on each generation

#define SELECTION_TOURNAMENT    /// tournament method
#define TOURNAMENT_PRESSURE 0.85
#define TOR_STEP    (-(0.05/RATE_CONTROL_CNT))
#define TOURNAMENT_STAGE    2   // 1, 2. not implemented others

#define VICTIM_REVERSE_TOURNAMENT
#define REVERSE_TOURNAMENT_PRESSURE 0.95
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_MAX_VICTIM   500
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-15)

#define CX_MIX
#define MUTATION_RATE_CONTROL
#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
//#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)
#define MUTATION_SWAP_CYCLE

 

100에서는?? 좀 다르게 해야할지도 모름.

일단 숙제 제출용으로는 프로파일 옵션 빼야하고 길이와 경로 프린트 시키고..

pollock에선 조금 다르게 세팅해서 테스트 pressure를 0.85, 0.93 로 하고 있음.