2009-05-05 2 views
1

그 날 13 층을보고 난 후에 나는 그런 시뮬레이터를 쓰는 것에 사로 잡혀있다.휴먼 시뮬레이터 설계에 대한 참고 자료. (13 층을 생각해라)

필자는 남성 및 여성 하위 클래스가있는 인간 기본 클래스로 여러 시뮬레이션을 작성했습니다. 그들은 runYear라는 루틴을 가지고 있으며 상호 작용합니다. 그들은 데이트하고, 일하고, 죽고, 아이를 낳고, 슬퍼하고, 자살하거나, 이혼하는 등의 일을합니다.

그것은 수천년 동안 계속되며 종자 매개 변수에 따라 매우 커지거나 사라집니다.

내 질문은 : 나는 이걸로 할 수있는 일을 실제로 극복했고, 이것을 기초부터 다시 쓰려고 노력하고 있지만, 앞으로 나아갈 기초를 갖고 싶다. 누구든지 나를 지적 할 수있는 좋은 책이나 기사가 있습니까? 내가 이것을 어떻게 디자인 할 필요가 있는지, 내가 포함시켜야 할 핵심 토대를 더 잘 이해할 수 있도록 도와 줄 수 있습니까?

기술적 인 관점에서

:

  1. 내가이 정보를 저장하는 객체 지향 데이터베이스를 사용하여보고해야합니까?
  2. 나는 이것을 C#으로 작성하려고 계획했다. (위로하기 위해) LISP를 배우는 것이 더 좋을까?
  3. 는 사람이 같은에서 실행 된 다른 오픈 소스 시뮬레이터 내가 어쩌면 몇 가지 아이디어가

에서이 다른 아이디어/제안은 굉장 할 것 얻을 수 있습니다.

에릭

+0

내가 궁금한 점 중 하나는 애트리뷰트의 직렬화가 될 수있는 특정 유형의 DNA를 구현하는 것이 었습니다. 그 반대의 경우도 애트리뷰트를 애들로 전송할 수있었습니다. – efbenson

+0

유용한 응답을하기에 충분한 정보가 없다고 생각합니다. 당신이 할 수있는 일을 어떻게 극복 했습니까? 현재의 병목 현상/문제는 플랫폼을 전환하여 해결하고자하는 것입니까? –

+0

죄송합니다. 아마 단계적으로 말하면서 실수로 단계별로 단계적으로 진행할 것입니다. 은 시뮬레이터 작성법에 대해 알지 못했던 기본 시뮬레이터의 한계를 밀었습니다. 시뮬레이터 작성에 대한 리소스를 찾고 실제로 복잡한 시스템을 설계합니다. – efbenson

답변

2

이런 종류의 시뮬레이터에 대한 가장 복잡한 점은 그것을 구현하는 방법이 아니라, 당신의 창조물을 모델링하는 방법과 서로 및 환경과의 상호 작용입니다.

가장 편한 도구를 사용하십시오. 필자는 처음에는 모든 종류의 데이터베이스를 사용하지 않을 것입니다. 프로그래밍 언어에서 사용하는 데이터 구조를 사용하고 지속성이 필요할 때 일반 파일에 데이터 구조를 쓰고 읽을 수 있습니다.

다음은 이러한 종류의 시뮬레이션에 대한 링크입니다. 그들 대부분은 인간 수준이 아니고 조금 더 낮은 수준에서 곤충, 박테리아, DNA를 생각합니다.

기존 시스템에 대한 예를 몇 :

1

첫째, 당신은 세계 수준을 만드는 시작해야합니다. 귀하의 세계 계급은 세상이 할 수있는 모든 것을 포괄합니다. 중력, 공기,지면, 벽 등을 통합하고자 할 것입니다. 누군가가 당신의 세계를 떠나 자신의 일을 추억에 남기길 원치 않으므로 하늘에 한계를 부여하는 것으로 시작하고 싶을 것입니다 어딘가에.

일단 월드 설정을 얻은 후에는 자신 만의 추상적 인 인간 클래스를 만드십시오. 이 수업에는 기본적인 인간 능력이 있습니다. 키, 체중, 나이 등을 지정할 수 있습니다.

거기에서 Human 클래스를 상속하고 각각 특수 속성이있는 Woman 및 Man 클래스를 만듭니다. Woman 클래스는 BreastSize, CookingSkill, SexualPrownessLevel 등을 가질 수 있습니다. Man 클래스는 대개 누가 대머리인지 추적하는 데 주로 사용됩니다.

거기에서 아시아, 인도 등 소수 민족 계급으로 나눌 수 있습니다. 각 민족 계급마다 고유 한 특성이 있습니다.

일단 방해가되면 재미있는 작업을 시작할 수 있습니다. 당신은 질병, 종교, 돈, 범죄, 빈곤, 기아, 홍수, 토네이도 등과 같은 그들의 삶에 혼란을 가져올 수있는 객체를 만들 수 있습니다.

+0

일곱 번째 날에 휴가를 보내는 것을 잊지 마십시오. ;) – wasker

+2

사실 그는 먼저 빛이 있다는 것을 잊었다. 둘째, 그는 현실적인 상속을 깨뜨릴지라도 "public class Meek : Earth {...}"를 원할 수 있습니다. –

+0

좋아, 나는 이것이 완전히 어리석은 반응이라는 것을 알고있다. 그러나 나는 그것을 벗어났다. –

1

나는 첫 번째 단계는 먼저 문제를 설명 할 수 있다고 생각합니다. 기술적 인 방법.

저는 이것을 System-of-Systems 문제로 생각합니다. 그것을 위해서는 SysML을보십시오. 그렇게하면 높은 수준에서 시작한 다음 시스템이 발전함에 따라 충실도를 더 높일 수 있습니다.

0

당신은 (목록에 링크가 마지막에있다) discrete event simulation 프레임 워크에 보일 것입니다. 파이썬을 위해서만 SimPy을 알지만, 다른 것들은 오픈 소스와 상업적입니다. 기본 프레임 워크도 매우 간단하므로 "프로그래밍 연습"이 쉬워야합니다.

관련 문제