알고리즘 (4) 어 닐 링 알고리즘

1083 단어 데이터 분석
퇴화 퇴화, 핵심 퇴, 매번 교체, 범위 축소
단계: 1. 초기 분해 2 시작 while 순환 소 둔, 현재 범위 T = T / (t) 중 t 는 순환 누적 값 이 고 T 는 초기 값 입 니 다. 매번 교체 할 때마다 3 층 마다 50 번 씩 이 층 의 최소 값 을 찾 습 니 다. 현재 값 보다 크 면 확률 적 으로 저장 합 니 다.방식 은 인접 해 의 함수 값 과 현재 해 의 함수 값 을 비교 하 는 것 이다.
코드 는 다음 과 같 습 니 다:
import math
import random

def function(x):
    return x**3-60*x**2-4*x+6


def main():
    T = 1000
    t_min = 10
    range_num = (0,100)
    t = 1
    frist_x = random.uniform(0, 100)
    while T > t_min:
        for i in range(50):
            new_x = frist_x + random.uniform(-0.5,0.5)*T
            if new_x > range_num[0] and new_x < range_num[1]:
                if function(frist_x) > function(new_x):
                    frist_x = new_x
                else:
                    rank = random.random()
                    p = math.exp((function(frist_x) - function(new_x))/T)
                    if rank < p:
                        frist_x = new_x

        t += 1
        T = T/(1+t)
    return frist_x

if __name__=='__main__':
    print({main():function(main())})

좋은 웹페이지 즐겨찾기