Skip to content

국립금오공과대학교 컴퓨터공학과 / 2024학년도 2학기 / CD0086-03(어드벤처디자인) / 레벨 2 문제 4: 태피 상점의 큐 시뮬레이션

Notifications You must be signed in to change notification settings

patulus/java-saltwater_taffy_store_simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

태피 상점의 큐 시뮬레이션

일정

일시 내용
'24.10.07, 08. 레벨2 문제 소개
'24.10.21, 22. 문제분석및설계서 발표
'24.10.28, 29. 결과 보고서 발표

개요

은행이나 학교 식당 등 순차적인 서비스가 일어나는 시스템을 모델링하기 위해 보통 큐(queue)를 사용한다. 그리고 이러한 큐를 이용해 실제 동작이 어떤 방식으로 일어날지 컴퓨터 프로그램으로 시뮬레이션할 수 있다. 시뮬레이션은 다음과 같이 진행된다.

  1. 상점은 한 개의 창구만을 가지며 한 명의 점원이 한 번에 한 명의 고객만을 서비스 한다.
  2. 고객을 서비스하는 시간은 1분에서 10분 사이가 소요된다.
  3. 상점은 하루 8시간, 주 7일 업무를 한다. (상점의 하루의 일을 시뮬레이션하기 위해 480분(8시간 × 60분)을 갖는 큐 모델을 생성한다.)
  4. 시뮬레이션은 이벤트가 1분 간격으로 시작하고 정지하는 디지털 클록을 사용한다. 즉, 고객들은 분단위로 도착하여 큐에서 분단위로 합산된 시간만큼 대기하고 임의의 시간만큼 서비스된다. 매 분단위의 시뮬레이션은 3개의 이벤트인 고객의 도착시간, 고객의 서비스 시작시간, 고객의 서비스 완료시간을 체크한다.
  5. 최종적으로 이 시뮬레이션에서 주어진 시간 동안에 전체 고객의 수, 전체 서비스 시간, 평균 서비스 시간, 평균 대기시간 등의 통계 정보를 출력한다.

시뮬레이션을 위한 시스템 구성

image

위 그림에서 보인 것과 같이 태피 상점의 시뮬레이터는 5개의 모듈로 구성된다.

"Create queue" 모듈은 시뮬레이션에 사용될 큐를 생성하고 초기화한다.

"New customer" 모듈은 새로운 고객이 도착하여 고객의 정보가 큐에 삽입되어야 하는지를 결정한다.

"Server free" 모듈은 점원이 쉬고 있는 상태인지를 점검하며, 쉬고 있는 상태일 경우 큐에 고객이 존재하면 다음 고객을 서비스한다.

"Service complete" 모듈은 현 고객이 완전하게 서비스 되었는지를 결정하고, 그렇다면 그 고객에 관한 통계 정보를 수집하여 출력한다.

"Print stats" 모듈은 큐 시뮬레이션에서 일어난 전체 통계 정보를 출력한다.

□ 이벤트

새로운 고객의 도착은 "New customer" 모듈에서 처리한다. 도착 비율을 결정하기 위해 그 상점은 며칠에 걸쳐 스톱워치를 사용하여 고객의 패턴을 조사하였다. 그 상점은 새로운 고객이 평균적으로 매 4분 간격으로 도착하는 것을 발견하였다. 따라서 시뮬레이션을 위해 1에서 4사이의 난수를 발생하여 도착 비율을 모의실험하며, 만일 난수 값이 4라면 새로운 고객이 도착하였다고 가정하고, 그렇지 않으면(난수 값이 1, 2, 3) 고객이 도착되지 않았다고 가정한다.

점원이 한가한 경우(idle) 새로운 고객의 서비스를 시작할 수 있다. "Server free" 모듈에서는 매 분단위로 점원이 서비스 중인지 쉬고 있는지를 결정한다. 점원이 쉬고 있을 경우 큐에서 다음 대기 고객이 서비스될 수 있으며, 그렇지 않으면 대기 고객은 큐에 그대로 유지된다.

최종적으로 매 분의 끝에 시뮬레이터는 현 고객에 대한 서비스가 완료되었는지를 결정한다. 현 고객에 대한 처리 시간은 발생된 난수에 의해서 결정된다. 시뮬레이션은 분 단위이므로 난수로 정해진 각 고객의 서비스 시간만큼 분단위 동작이 반복되어야 트랜잭션이 완료된다. 한 고객에 대한 서비스가 완전하게 완료되었을 때 판매에 관한 통계를 수집하고 점원은 한가한 상태로 전환된다.

□ 자료구조 설계

큐 시뮬레이션을 위해 4개의 자료구조가 사용된다. 4개의 자료구조는 큐 헤드, 큐 노드, 현 고객 상태, 시뮬레이션 통계이며 세부 내용은 다음 그림과 같다.

image

○ 큐 헤드(head) : 큐에 대한 두 개 포인터인 front(삭제) 및 rear(삽입), 그리고 현재 큐에 대기 중인 고객 수를 가지는 count 변수를 포함한다.

○ 큐 노드(node) : 고객 번호와 큐에 도착한 시간과 다음 고객에 대한 포인터를 포함한다.

○ 고객 상태(custStatus) : 고객의 주문을 처리하는 동안 고객 상태정보를 유지하기 위해 고객번호, 도착시간, 서비스 시작시간, 서비스시간 등의 값을 저장한다.

○ 시뮬레이션 통계(simStats) : 시뮬레이션을 완료한 후에 전체 고객 수, 전체 서비스 시간, 평균 대기시간, 최대 큐의 크기 등에 관한 정보를 출력하기 위한 자료를 누적해 저장한다.

기본 문제

해변에 위치한 태피(taffy) 상점에서 일어나는 큐 모델을 시뮬레이션하는 프로그램을 개발하시오.

□ 입력

  • 큐 시뮬레이션 시간(분 단위) : 최대 480분(1일 시간)
  • 고객의 도착 : 1에서 4사이의 난수 값을 생성하여 4일 경우만 새로운 고객이 도착하는 것으로 가정
  • 서비스 시간 : 1에서 10사이의 난수 값 발생 (1~10분)

□ 출력 : 다음의 시뮬레이션 통계를 출력

  • 전체 통계 : 평균 큐 대기시간, 평균 서비스 시간, 전체 서비스 시간, 전체 고객 수
  • 개별 고객 : 도착시간, 시작시간, 대기시간, 서비스시간

제한요소 및 요구사항

  • 기본 메뉴를 제공한다.
  • 2개 이상의 소스파일과 1개 이상의 헤더파일을 사용한다.
  • 전역 변수 사용은 가급적 자제한다. (권장)
  • 여러 번 실행하여 통계 자료를 제공한다.

확장 문제

① 서비스 창구의 개수를 증가하면서 처리 결과의 차이를 확인한다.

② 2개 이상의 서비스 창구가 존재하는 경우 다중 스레드를 사용한다.

③ 전화 서비스를 제공한다.

④ GUI 환경을 제공한다.

채점 기준

범위 구현 기능 배점 비고
기본 기능 실행 가능 1 실행 가능, 초기 화면 출력
다중 파일 프로그램 1
입력 처리 1 입력값 생성 (고객의 도착 빈도, 서비스 시간 등의 입력 조건에 맞게 난수 발생)
시뮬레이션 진행 2 큐 데이터 구조를 활용한 시뮬레이션
출력 처리 2 통계 결과 출력
여러 번 실행 및 분석 1 여러 번 실행 후 통계 결과 분석, 화면 출력
확장 기능 창구 개수 실험 3 서비스 창구 개수에 따른 처리 결과 분석
전화 서비스 2 전화 서비스 처리 방안 설계 및 구현
GUI 프로그래밍 2
추가 기능 - 기본 기능과 확장 기능 외의 기능 추가
다중 쓰레드 - 서비스 창구가 여러 개인 경우 다중 쓰레드로 구현

About

국립금오공과대학교 컴퓨터공학과 / 2024학년도 2학기 / CD0086-03(어드벤처디자인) / 레벨 2 문제 4: 태피 상점의 큐 시뮬레이션

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages