본문 바로가기
AI 관련/ADsP, ADP

ADSP 요약정리 - 6장 시뮬레이션 및 최적화 - 시뮬레이션

by 팀장일기 2021. 10. 9.

제 2절 시뮬레이션 

 1. 시뮬레이션이란? 

   -실제상황을 수학적으로 모델화하고 그 모델을 컴퓨터에 프로그램으로 저장한 후 일어날 수 있는 가능한 모든 상황을 입력함으로써 각각의 경우에 어떤 결과가 도출되는지 예측 

    * 시뮬레이터 : 시뮬레이션 모델에 대한 프로그램을 사용자들이 편리하게 사용하고 그 결과를시각적으로 볼 수 있도록 만든 컴퓨터 기능

   - 실제 상황을 모델링 하고 프로그램하기 위해 고급인력을 써야하므로 초기 비용이 많이 듦

    * 일단 프로그램화하면 사용자가 여러 경우를 맘대로 가정해 결과확인이 가능하기 때문에 결과적으로 비용절약이 가능하고 특히 짧은 시간에 미래에측에 효과적 

 

  가. 시뮬레이션이 정의

   - 활용분야에 따라 여러 의미로 정의 가능. 일반적으로 주어진 조건하에서 실제 상황 속에서 모의실험을 통해 정보를 얻는 수리적 실험 기법 

 

   1) 시뮬레이션 모델 구분(일반적) 

   - 정적 시뮬레이션 모델과 동적 시뮬레이션 모델 

    * 정적 : 어떤 정해진 시간 안에서 시스템이나 시간이 필요 없는 시스템 (ex. 몬테칼로) 

    * 동적 : 시간에 따른 현상 파악하기 위한 모델 

   - 결정론적 모델 

    * 랜덤 변수와 같은 확률변수를 포함하고 있지 않은 모델 

   - 연속형 모델과 이산형 모델 

    * 연속형 : 상태변수가 연속형 

    * 이산형 : 상태변수가 시간으로 분리된 점에서 순간적으로 할 때 표현 

    * 연속형과 이산형 모델이 완전히 분리될 필요없음. 

 

  나. 시뮬레이션의 장점 

   - 복잡한 현실문제는 추리적 방법으로 해결책 못 구할 수 있는데 이때 유일한 해결책 

   - 여러 대안 쉽게 비교가능

   - 현실 문제와 근접하게 만들 수 있어 이해와 사용이 편리하며 문제 해결방법에 대해 의사 결정자와 대화가 용이

   - 많은 시간이 지난 후 결과를 알 수 있는 문제를 시뮬레이션으로 단시간에 결과 예측 가능(시간단축효과), 반대로 시간확장시켜 시뮬레이션 가능 (시간확장효과) 

 

  다. 시뮬레이션의 단점 

   - 모형 개발ㅇ 많은 경험과 노력이 필요

   - 확률적 시스템을 시뮬레이션할 때 관찰한 입력 자료를 사용해 얻은 결과는 하나의 표본 값에 해당하므로 여러 개의 표본값을 구해 통계처리를 해야하며 시간이 많이 소요됨. 

   - 시뮬레이션 프로그램은 대부분 복잡하고 매우 방대해 결과가 예상과 다르게 나오거나 중간에 문제가 생겼을 때 이를 해결하는 것도 쉽지 않음. 

    * 중간에 문제발생시 과정이 명확하다면 단계별 검정으로 쉽게 문제점 찾을 수 있음. 

 

  라. 시뮬레이션 과정

   - 1단계 : 문제 정의와 모델의 필요조건 규명

    * 문제를 명확하게 구체화해 정의 : 문제에 대한 목적이 명확구체화 됐을 때 적합한 방법론을 적용해 유용한 결과를 얻은 가능성이 높음. 

    * 문제가 명확하고 구체화될수록 시뮬레이션의 활용도도 높음

   - 2단계 : 기대와 손실에 관한 평가 

    * 복잡하고 규모가 큰 시뮬레이션은 비용과 노력이 많이 소요되므로 초기 단계에서 시뮬레이션 수행이 따른 손익에 관한 타당성 평가를 하는것이 바람직 

   - 3단계 : 시뮬레이션 모델 개발의 방법 결정 

    * 모델 개발에 플로차트 (flow chart)와 같이 모델 과정의 각 단계를 적절한 기호로 표시하는 모델방식이 많이 쓰임

    * 플로차트 방식 : 시뮬레이션의 논리적 과정을 도표로 단순화하고 시각적으로 표현 가능 

    * 데이터가 모델개발뿐 아니라 모델 적합성 평가에도 활용되기 때문에 모델 개발에 필요한 데이터 수집이 특히 중요

    * 시뮬레이션 모델 개발 : 기능별 상향식 (bottom up) 개발 방식, 총괄적 하향식 (top down) 개발방식 

     - 기능별 상향식 : 기능별로 분석- 정립된 소규모 단위의 모델들을 전체 논리적 흐름에 맞춰 연결 

      - 복잡한 총체적 모델을 일괄적으로 분석하는 것 보다 훨씬 용이

      - 하위모델의 연결도 총체적인 모델의 수정이 필요할 때 쉽게 할 수 있게 신축성있게 수행 

   - 4단계 : 모델의 프로그램화 

    * 개발한 시뮬레이션 모델을 컴퓨터 프로그램으로 전환 

     - 전문 프로그램 언어는 비용과 시간절약 뿐 아니라 프로그램의 유연성과 표준화한 시뮬레이션 전문용어 등에 따른 시스템의 호환성을 높여주므로 전문 프로그램언어를 사용하는 것이 바람직

   - 5단계 : 모델이 적합성 평가 

    * 일반적으로 시뮬레이션 모델의 적합성 평가는 실험적 실행결과를 비슷한 조건에서 얻은 실제 자료와 비교해 파악가능 . 테스트 결과 검정은 실제 문제의 본질을 잘 파악하고 있는 관리자가 주로 수행 

   - 6단계 : 시뮬레이션 모델 실행 

    * 시뮬레이션 모델 프로그램 작성과 적합성 조사가 끝난 후에 수행하며 선정된 계획과 목적에 입각해야 함. 

    * 여러 실험계획에 따른 모델 실행이 이뤄지며 결과 분석에 입각해 모델 수정 가능 

    * 실질적 데이터를 얻기 위해 시스템의 실제 사용자가 참여하는 것이 바람직하며 실행 시간은 모델 정립 목적에 따라 결정 

    * 확정적 모델이면 한 차례 실행으로 가능하나 확률적 모형일 경우 다양한 매개변수가 파생되므로 필요한 결과가 도출될 때까지 여러번 실행 

   - 7단계 :시뮬레이션 실행 결과 분석 

    * 타당성 여부는 그 결과의 분석이 얼마나 현실적으로 활용될 수 있냐에 따라 결정됨. 

    * 분석결과 현실적 활용성이 높을 수록 조정의 필요성이 감소할뿐아니라 상대적으로 위험률도 낮아지며 반대의 경우 현실적 타당성과 활용성에 문제가 있다는 의미로 문제으 ㅣ심각성 정도에 따라 부분적/ 전면 재검토해 수정하거나 다른 기법 적용 고려

   - 시뮬레이션 과정은 문제의 본질, 모델의 형태, 필요한 자료 및 변수들의 수집 가능성과 상호연관성 등에 따라 실행 절차가 보다 단순화 되거나 각 단계의 실행 순서가 바뀔 수 있음. 

   - 시뮬레이션은 현실적 타당성과 활용성이 높은 결과 도출을 위해 상황에 적합하고 유연성 있게 수행 되는 것이 바람직 

    * 불규칙 특성을 반영하기 위한 데이터 수집방법 :인터뷰나 실제 관측 --> 확률분포를 가정해 모델링에 반영 

     - 발생되는 랜덤 number는 자기상관이 없어야하며 장기적으로 반복되는 패턴이 나오면 안됨(run test로 검정가능 ) 

   - 대부분 모델링은 실제와 완전 동일하게 만들지 않음 : 실제와 동일하면 모델의 복잡성이 증가해 실험 수행 시간이 증가할 뿐 아니라 정확성 측면에서 오류가능 

    * 모델을 얼마나 정교하게 할지 전체 모델에 걸처 일정 수준으로 유지해야함. 

   - 시뮬레이션은 현제 상황을 모델링 하고 예측해 개선안을 도출함. 

    * 개선안 적용하기 전에 개선 후 상황까지 시뮬레이션 해 현재와 비교 

    * 개선 결과 분석할 때는 집단 간 평균 차이를 보는 t검정 등 통계분석 적용 

   - 시뮬레이션 모델링의 핵심 : 어렵고 복잡한 일을 쉽고 단순하게 분석하는 것 

    * 확률적  내용은 이산형으로 처리 , 인과관계 표현되게 규칙 정의, 언제든 간단히 수정가능한 모델로 만들어야 함. 

   - 하나하나의 관찰에 집착하지 말고 패턴을 읽을 수 있도록 접근해야 함. 

    * 분석할 데이터가 너무 ㅡ다면 효율적으로 샘플링 해야 하는지 숙고

 

 

 

   

댓글