개미 식민지 알고리즘


13

코스 프로젝트를 위해 개미 식민지 시뮬레이터에서 일하는 학생입니다. 그것에 대한 알고리즘은 개미 식민지 알고리즘입니다. 나는 다양한 형태의 알고리즘이 있지만 모든 것이 우리에게 너무 수학적으로 상세했기 때문에 우리가 가진 접근 방식을 취했습니다.

  • 개미는 식민지에서 태어나 식민지를 유지하기 위해 원천에서 음식을 모아야합니다.
  • 모든 개미는 비슷합니다.
  • 개미가 움직이는 영역은 1000x1000 그리드이므로 모든 그리드 포인트는 개미가 점유 할 수있는 유효한 포인트 역할을합니다. 이제 내가 본 모든 알고리즘은 꼭지점과 가장자리를 개별적으로 처리하는 것과 관련이 있지만 개미 움직임을 4 방향 (위, 아래, 왼쪽, 오른쪽)으로 제한하기 때문에 페로몬을 어디에 두든 상관 없습니다.
  • 위에서 언급 한 그리드 포인트는 페로몬을 저장합니다.
  • 개미는 음식을 운반하는 경우에만 페로몬을 떨어 뜨립니다.
  • 위치 (i, j)에있는 개미의 경우, 4 개의 인접 노드에있는 페로몬 양을 간단한 확률 식으로 고려하여 다음 단계에서 어디로 이동 할지를 결정합니다. 즉, 노드로 이동할 확률은 다음과 같습니다. (특정 인접 노드에서의 페로몬 양) / (4 개의 인접 노드에서의 페로몬 양의 합).
  • 개미는 방금 원래 위치로 돌아갈 수 없습니다. 음식이 있거나 식민지에있는 경우에만 가능합니다.

이제 내 관심사는 개미 FIRST가 음식이있는 위치에 도달하여 음식을 집어 올린 다음 알고리즘이 작동하는 방식으로 어디로 든 이동할 수 있다는 것입니다. 이것은 페로몬 트레일을 떠나기 때문입니다. 일단 음식이 있고 일단 개미가 아니기 때문에 첫 번째 개미이기 때문에 기존 트레일이 없습니다.

개미가 어디든 움직일 수 있다면, 식량 원에 도달 한 개미도 대부분 그것을 따라가는 경향이있을 것입니다. 심지어 식민지쪽으로 되돌아 가지 않는 경우에도 마찬가지입니다. 이것은 전체 알고리즘의 목적을 무효화합니다.

그래서 내 질문은

  • 위의 우려가 유효합니까? 아니라면 왜? 그렇다면 어떻게 처리합니까?
  • 알고리즘을 실제로 이해하려면 알고리즘에 대한 기본적인 이해를 약간 바꿔야합니까?
  • 이 경우 저와 같은 초보자가 놓칠 수있는 미묘하지만 중요한 다른 것들은 무엇입니까?

1
내가 개미 식민지를 짓고 있다면, 두 종류의 페로몬 마크가있을 것입니다 : "정기", 개미가가는 곳에 항상 떠난 "음식". 개미는 음식을 운반하는 경우 더 많은 농도의 "일반적인"페로몬으로, 그렇지 않으면 "음식"마크로 이동합니다. 또한 나는 개미를 "배고프고" "정돈"으로 만들었습니다. 배고픈 개미는 새로운 음식 소스를 찾기 위해 "식품"표시쪽으로 이동하지만 "일반"표시에서 멀어집니다. (또한 그리드를 육각형으로 만들지 만 요점은 아닙니다.)
9000

많은 변형이 있지만 대부분의 개미 식민지 알고리즘은 개미가 집으로 돌아가는 길을 기억할 수 있다고 가정합니다. IOW, 이미 방문한 노드를 알고 있습니다. 페로몬은 무작위로 여행하는 개미를 위해 등장합니다.
Dunk

시맨틱 한 게임을 한 적이 있습니까?

"나는이 알고리즘의 다양한 형태가 있지만 우리는 우리가 가지고있는 접근을했다, 그래서 너무 수학적으로 우리에게 설명했다 그 모두가 알고있다 ..." '당신이 나오지 않았어 경우에 당신이 당신이 실제로 당신이 주어진 과제를 수행하고 있습니까 알고리즘을 이해하지 못합니까?
Doval

@ Doval : 우리는 선택한 프로젝트를 수행해야합니다. 우리는 어떤 방식 으로든 필드에 구속되지 않았습니다. 이 과정은 C ++의 입문 과정입니다. 강사들은 우리가 소프트웨어 개발에 경험이 있기를 바랍니다.
트랜지스터

답변:


6

이것이 ACO의 작동 방식이 아닙니다. ACO는 개미가 그리드의 모든 지점을 가로 질러 이동 한 후에 만 ​​페로몬을 떨어 뜨립니다. 그런 다음 무언가 (아마도 총 여행 시간)를 평가 한 다음 좋은 개미에 대한 페로몬을 떨어 뜨리고 반복하십시오.

동일한 정점으로 두 번 이동하지는 않지만 일반적으로 구현 고유성을 위해 사용자 정의 할 수 있습니다.

페로몬은 움직일 때마다 떨어지지 않으며 어디에서나 움직 인 후에 떨어지며 어떤 개미가 더 좋은지 결정하기 위해 무언가를 평가 합니다. 더 나은 개미는 phereomones를 떨어 뜨립니다 (아마도 최고의 25 % 성능의 개미).


ACO는 - 나는 동의 할 수 목표는 문제 해결을위한 개미 식민지 (ACO 알고리즘을 시뮬레이션하는 것입니다 특히, pheremone에게 각 단계를 놓는 방법으로 일을 다른 알고리즘을보다 효율적으로하기위한 조치를 취할 "이 개미의 식민지가 않는 것입니다"가 아닌,하지만 반드시 실제 개미와 같은 것은 아닙니다.
Logan Pickup

1

내가 다른 사람들에게서 본 구현과 내가 직접 작성한 구현은 개미가 음식에 도달하면 항상 음식에 도달하는 경로를 따라 페로몬을 방출하도록했습니다. 즉, 개미는 무작위로 걸어 간 후 식민지에서 음식으로 행진했다. 식민지에서 음식까지 의 개미 따르는 경로 는 개미가 음식에 성공적으로 도달 한 후에 만 페로몬을 사용하여 표시됩니다 . 왕복 여행은 명시 적으로 시뮬레이션되지 않습니다. 일반적으로 현재 반복에 페로몬이 입금되기 전에 여러 개미가 코스를 운영합니다. 페로몬은 성공적인 경로를 위해 배치되고 새로운 라운드가 시작됩니다.

일반적으로, 개미가 주어진 노드로 들어올 확률은 페로몬의 양에 "선도"를 곱한 값으로 가중됩니다. 예를 들어, 선량 척도는 개미와 음식 사이의 거리의 역수와 같은 것일 수 있습니다. 이는 개미가 이전 페로몬 침착 물에 관계없이 음식을 향해 계속 움직 이도록합니다. 예를 들어, 일부 노드는 다른 노드보다 이동하기가 더 쉬운 다른 요소를 설명하기 위해 가중치를 추가 할 수 있습니다. 그리고 엔더 랜드가 지적한 바와 같이, 모든 개미가 코스를 성공적으로 완수하면 일반적으로 어떤 형태의 경로 "선택" 이 있으며, 여기서 "최상의"경로의 일부만이 페로몬 퇴적을 위해 선택됩니다. 그러나 선택하지 않아도 합리적인 경로를 찾아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.