설계하는 방법을 승인한 확률 기능에 대한 시뮬레이션 소둔 여러 개의 고유한 비용이 있나요?

StackOverflow https://stackoverflow.com/questions/1104268

문제

내가 사용하고 simulated annealing 을 해결하기 위한 NP-complete resource scheduling 문제입니다.각 후보자는 주문의 작업은 내가 계산한 여러 가지 서로 다른 비용(또는 에너지 값).몇 가지 예입니다(하지만 구체적인 내용은 아마 없는 질문):

  • global_finish_time:의 총수는 일 일정에 걸쳐 있습니다.
  • split_cost:의 일 수여하는 각 작업이 지연으로 인해 중단이 다른 작업(이것은 의미를 억제하여 중단의 작업은 한 번 시작되).
  • deadline_cost:의 합 제곱 일 수는 각각의 경계선은 연체.

전통적인 수용 확률 함수는 다음과 같습니다(Python):

def acceptance_probability(old_cost, new_cost, temperature):
    if new_cost < old_cost:
        return 1.0
    else:
        return math.exp((old_cost - new_cost) / temperature)

지금까지 내가 결합된 나의 첫번째 두 개의 비용으로 하나 추가하는 간단한 방법으로,그래서 내가 먹일 수 있는 결과로 acceptance_probability.그러나 무엇이 내가 정말 원하는 대 deadline_cost 을 항상 우선권 global_finish_time, 고 global_finish_time 을 우선 split_cost.

그래서 제 질문은 스 버:할 수 있는 방법을 디자인 합격을 확률을 사용하는 함수의 여러 에너지를 계정으로 항상 고려하는 첫 번째 에너지보다 더 중요한 두 번째,에너지 및니까?다시 말해서,내가에서 통과 old_costnew_cost 로 튜플의 여러 가지 비용이 반환 합리적인 값입니다.

편집: 며칠 후에의 실험으로 제안된 솔루션을 제가 결론을 그만 잘 작동하는 방법으로 충분히 나를 위해 마이크 Dunlavey 의 제안하더라도,이것은 다른 많은 어려움과 비용을 구성 요소는 서로 다른 단위입니다.나는 실질적으로 강제 비교하는 사과와 오렌지입니다.

그래서,어떤 노력을 넣어로"정규화하는"이 값이 있습니다.첫째, deadline_cost 가 합의,사각형,그래서 그것은 기하급수적으로 증가하는 동안 다른 구성 요소으로 선형으로 확장.주소를 이용 스퀘어 루트를 얻을 수와 비슷한 성장률이 있습니다.두 번째,내가 개발하는 기능을 계산합의 비용하지만,자동 조정하는 계수에 따라 가장 높은 비용성과 호환되지 않습니다.

예를 들면,튜플의 가장 높은 비용(A,B,C)와 입력 비용은 벡터(x,y,z),선형 조합은 BCx+Cy+z.는 방법에 상관없이,어떻게 고 z 그것을 얻는 것보다 더 중요한 것 x 의 값은 1 입니다.

이를"영상"에서 비용이 기능으로 새로운대 비용이 발견되었습니다.는 경우,예를 들어,C 가 다음 BCx 및 Cy 모두에 대한 높은 지정된(x,y,z)입력하고 그래서 차이점을 비용.높은 비용 차이는 수용을 확률이 떨어질 것으면 갑자기 온도가 낮추는 추가 단계입니다.에서 실천하지만 이것이 문제가되지 않기 때문에 최대 비용을 업데이트되는 몇 번만 시작 부분에서 변경되지 않습니다.저는 이것을 믿을 수도 있습 이론적으로 검증을 수렴하여 올바른 결과는 우리가 알고 있기 때문에 그 비용으로 수렴한 낮은 값이다.

중 하나는 여전히 나에게는 다소 혼란 때 일어나는 것이 최대 비용은 1.0 와 낮은 말 0.5.최대 벡터의(0.5,0.5,0.5)이 줄 것이라고 선형 조합 0.5*0.5*x+0.5*y+z,즉우선 순위는 다음과 같습니다 갑자기 반대입니다.나는 가정을 처리하는 가장 좋은 방법을 사용하여 최대 벡터를 규모가 모든 값을 지정된 범위,그래서는 계수할 수 있습는 항상 동일(예를 들어,100x+10y+z).그러나 시도는 아직이다.

도움이 되었습니까?

해결책

mbeckish가 옳습니다.

다른 에너지의 선형 조합을 만들고 계수를 조정할 수 있습니까?

아마도 로그 변환 할 수 있습니까?

Metropolis-Hastings를 사용하여 일부 MCMC를 수행했습니다. 이 경우 나는 특정 상태의 (비 정규화 된) 로그 우도 (우선 순위가 주어진)를 정의하고 있으며, 내가 원하는 것에 대한 나의 생각을 명확히하는 방법을 발견했습니다.

다른 팁

나는 다목적 진화 알고리즘 (MOEA)의 힌트를 받고 IT가 전환 할 것입니다. 모두 목표 중 동시에 acceptance_probability 당신이 준 기능. 이것은 표준 시뮬레이션 어닐링이 동일한 에너지 솔루션의 고원을 탐색하는 것처럼 파레토 전선을 탐색하는 효과가 있습니다.

그러나 이것은 첫 번째 것이 우선 순위를 갖는다는 아이디어를 포기합니다.

초기 온도가 높을수록 매개 변수를 조정해야 할 것입니다.

나는 다음의 선을 따라 무언가를 고려할 것입니다.

If (new deadline_cost > old deadline_cost)
  return (calculate probability)

else if (new global finish time > old global finish time)
  return (calculate probability)

else if (new split cost > old split cost)
  return (calculate probability)

else 
  return (1.0)

물론 확률을 계산하는 세 곳 각각은 다른 기능을 사용할 수 있습니다.

이에 따라 당신이 무엇을 의미는"우선 순위".예를 들어,어떤 경우 deadline_cost 으로 내려갑 0.001 하지만, global_finish_time 비용에 의해 10000?당신은 반환 1.0 기 때문에, deadline_cost 감소,그리고는 우선 아무것도 없나요?이처럼 보인 그것은 심판 판정할 수 있게 만들지 않는 한,당신을 제공할 수 있는 충분한 배경 프로젝트에 대한 정보는 다른 사람이 할 수 있는 것들이 자신의 정보를 심판 판정.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top