안녕 모두,
요전에 제 아들이 "Battleship"의 그리드 페이퍼 버전을 연주해달라고 요청했습니다. 각 사람은 길이가 5, 4, 3, 3, 2단위(폭 1단위)인 5개의 "배"를 가지고 있었습니다. "선박"은 XY 공간의 10 x 10 격자에 배치되었습니다. 각 "배"에는 고유한 (x,y) 좌표 세트가 있습니다. 예를 들어, 3개의 "배" 단위 중 하나는 좌표 (3,4), (4,4) 및 (5,4)를 가질 수 있습니다. 하나 이상의 "배"가 동일한 (x,y) 좌표를 차지할 수 없습니다. "선박"은 수직 또는 수평으로만 달릴 수 있으며 대각선 레이아웃은 허용되지 않습니다.
그런 다음 우리는 다른 사람의 "배"에 직접적인 타격을 입힌 사람을 확인하기 위해 교대로 좌표 쌍(x,y)을 호출했습니다. 우리 각자는 다른 사람의 "배"만큼 많은 "배"를 공격(또는 침몰)하기 위해 16번만 턴을 했습니다. 우리가 이것을 겪으면서 나는 다른 사람의 "배"를 명중(및/또는 침몰)할 가능성을 최대화하기 위해 단순히 좌표를 무작위로 호출하는 것보다 더 나은 접근 방식이 있어야 한다고 생각했습니다. 물론 "배"를 쳤는지 안 쳤는지 알 수 있으므로 이미 사용한 좌표(x,y)를 호출하지 않습니다.
처음에는 Custom Design 플랫폼이 올바른 방향일 것이라고 생각했지만 Y가 "Hit"(아니오/예의 경우 0/1)이고 X1 = x 및 X2 = y 좌표인 디자인을 만들면 (10단계 이산 숫자), 플랫폼은 각 X 및 Y에 대해 높은 수준과 낮은 수준만 사용하는 설계를 생성합니다. 그건 그렇고, 모형 항은 단지 x, y 및 교차 항 x*y입니다. 따라서 불행히도 Custom Design은 작동하지 않습니다.
Full Factorial DOE 플랫폼은 100회 실행(10x10 Factorial)을 원하고 각각 16회만 실행(시도)하기 때문에 작동하지 않습니다.
RSM DOE 플랫폼은 높은/낮은 수준에서만 작동하며 낮은/높은 수준에 1과 10을 입력합니다. CCD 설계 옵션은 "선박"이 배치될 10 x 10 격자 공간을 실제로 채우지 않습니다. 격자 공간을 덮기에는 너무 많은 중심 실행이 있습니다.
이에 적용할 수 있는 유일한 다른 플랫폼은 공간 채우기 디자인입니다. x와 y에 대해 동일한 low/high, 1/10 설정을 사용하고 응답으로 "Hit"(이는 바이너리, 아니오/예의 경우 0/1)를 사용하여 (x,y) 쌍이 있는 DOE 테이블을 얻을 수 있습니다. 그리드 공간을 채우는 것. 공간 채우기 디자인 방법, FFF 또는 Uniform 또는 Latin Hypercube 등에 대한 최선의 선택이 무엇인지 잘 모르겠습니다.
더 중요한 것은 DOE가 고정되어 있으며 첫 번째 실행의 결과를 기반으로 DOE가 알려진 정보를 고려하여 수정될 수 있다는 의미에서 "적응 가능"하지 않다는 것입니다. 위에서 3단위 보트 좌표를 사용하여 첫 번째 실행이 좌표(3,4)를 호출하고 히트를 친다고 가정해 보겠습니다. "선박"의 레이아웃이 수평 또는 수직임을 알고 있기 때문에 다음 호출은 DOE를 전혀 따르지 않고 (3,5), (3,3), (2,4)를 호출하는 것입니다. , 또는 (4,4) -- x 또는 y를 한 단위 증가시키고 결과가 무엇인지 확인합니다. 그리고 보트가 가라앉거나 다음 가능한 시작 좌표로 이동할 때까지 계속됩니다.
"적중" 생성을 위해 16개의 실행을 최적화할 수 있는 적응형 DOE를 생성하는 보다 과학적인 방법을 찾고 싶습니다. 정적 DOE를 해제하면 각 실행 후에 좌표가 "소진"되고 적중 여부를 알기 때문에 그렇게하지 않습니다. 각 실행은 n+1개의 후속 실행을 알립니다. 내가 아는 한, 이와 같은 것을 처리할 수 있는 DOE는 존재하지 않지만, 저도 이 분야의 전문가는 아닙니다.
"Battleship"에서 시작점을 무작위로 선택하는 것이 가장 좋은 방법입니까? 그렇게 생각하지 않지만 기본적으로 "if/then" 문이 있는 적응형 DOE를 사용하여 16번의 시도를 최적화하는 방법을 찾는 데 어려움을 겪고 있습니다. 이전 단계. 16번의 시도에서 승리할 기회를 최대화하기 위해 각 실행에 대한 선택을 최적화하는 "적응 가능한" DOE를 갖는 것이 좋습니다.
토론해주셔서 감사합니다!,
DS
추신, JMP 및 "Battleship"을 검색하면서 이것을 찾았습니다. 게시하다 ~에 의해 @Jordan_Hiller JMP를 사용하여 다양한 게임을 플레이할 수 있는 방법을 보여줍니다. @brady_brady 실제로 "Battleship"을 재생하기 위해 JSL 코드를 작성했습니다. 아주 멋져! 곧 해당 JSL을 다운로드할 예정입니다!
안녕 @Jordan_Hiller ,
블로그 링크 감사합니다 글 잘 봤습니다.
나는 일반적으로 선박이 특정 사각형에 있을 확률을 계산하는 방법에 대한 개념을 이해합니다. 이는 선박의 종류마다 다를 것입니다. 그러나 보드의 확률 상태는 각 플레이 라운드 후에 변경되기 때문에 다음 사각형에 대한 선택이 변경됩니다. 나에게 이는 히트/미스/를 고려한 재최적화된 공간 채우기 디자인에 불과합니다. 보트 크기 및 남은 주행 횟수.
블로그 포스터는 34개의 이동으로 게임에서 수행할 수 있는 알고리즘을 생성할 수 있었습니다. 이는 보트가 차지하는 사각형 수의 정확히 두 배입니다. 아마도, 17에 가깝게 승리하는 데 필요한 이동 수를 얻을 수 있는 최적의 결정 경로를 생성하는 것이 가능할 것입니다. 정확히 17은 아니지만 매우 가깝습니다.
확실히 ML/AI 접근 방식은 게임에서 승리하기 위한 알고리즘을 구축할 수 있지만, 그것은 과잉이며 내가 진정으로 추구하는 것이 아니라는 데 동의합니다. 나는 블로그 사람이 한 것과 DOE를 활용하는 것의 혼합에 더 관심이 있습니다. 분명히 게임 보드의 확률 밀도 함수는 결정을 내리는 데 중요합니다. 그러나 순수한 확률 계산에서 최적화된 공간 채우기를 기반으로 하는 계산으로 수정할 수 있습니까? DOE가 가장 높은 확률을 생성하도록 DOE에 대한 "가중치" 기능으로 보드의 확률 함수를 제공하는 것과 거의 같습니다. 가장 높은 적중 횟수를 먼저 생성한 다음 침몰에 집중하는 것이 사냥 모드로 이동하기 전에 배를 먼저 침몰시키는 데 집중하는 블로거보다 더 빠른 승리로 이어질 것 같습니다.
어쨌든, 나는 그것을 고려하고 생각하는 것이 흥미롭다는 것을 알았고 분명히 다른 사람들도 마찬가지였습니다!
감사!,
DS
재미있는 생각, 디드리히!
여기 이 주제에 대한 오래된 블로그 게시물이 있습니다. 누군가 주어진 게임 상태에 대해 그리드의 각 사각형에 배가 있을 확률을 계산하는 방법을 알아냈습니다. https://www.datagenetics.com/blog/december32011/ 그 후에는 모델이 필요하지 않으며 가장 가능성 있는 사각형만 선택하면 됩니다. 일부 기계 학습 프로젝트도 있지만 그건 너무 과한 것 같습니다!
요르단