목적 함수와 시스템 최적화

Python으로 배우는 이산 사건 시뮬레이션

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

시스템 최적화

  • 시스템 최적화

    • 최적 운영 구성 식별
  • 인간 주도 공정

    • 최소 비용(자원·시간 절감)으로 최대 산출
  • 시스템 산출에 더 큰 영향을 미치는 공정 식별

  • 몬테카를로 샘플링

    • 성과 측정 및 결과 순위 정렬
  • 목적 함수

    • 성능 목표를 설정하는 목표 함수
Python으로 배우는 이산 사건 시뮬레이션

목적 함수

  • 산출 목표를 설명하는 수학적 표현식

  • 시뮬레이션 시나리오 점수 산정

예시

  • 공정 A: 35%
  • 공정 B: 20%
  • 공정 C: 45%

합계: 100%

  • 공정 C의 가중치가 가장 높음

탐색 및 중지: 다양한 모델 구성을 실행하고 원하는 조건이 충족되면 중지

while total_duration < 24:
      model_to_run()

점수 및 순위: 가중 기준에 따라 시뮬레이션 결과를 점수 산정

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Python으로 배우는 이산 사건 시뮬레이션

접근법 1: 탐색 및 중지

  • 몬테카를로 샘플링으로 다양한 시나리오 실행
  • 비결정론적 공정의 다양한 발생으로 구성
  • 조건 충족 시 최적 시나리오 탐색 루프 중단

예시

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

탐색 및 중지 방법의 요건을 충족한 마지막 실행이 파란색 하단선으로 표시된, 일련의 순차적 공정으로 구성된 제조 활동의 반응 포락선 플롯.

Python으로 배우는 이산 사건 시뮬레이션

접근법 2: 점수 및 순위

  • 몬테카를로 샘플링으로 다양한 시나리오 실행
  • 결과 점수 산정 및 순위 정렬

예시: 제조 산업

자동차 생산 라인과 같이 다양한 순차적 작업(또는 공정)을 포함.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Python으로 배우는 이산 사건 시뮬레이션

접근법 2: 점수 및 순위

점수

"RED": 낮은 점수; "BLUE": 높은 점수 "하역 및 준비", "절단", "연마" 공정에 대해 시뮬레이션된 다양한 시나리오의 목적 함수 점수를 나타내는 산점도.

순위

시뮬레이션 실행을 점수 기준으로 순위 정렬 "하역 및 준비", "절단", "연마" 공정에 대해 시뮬레이션된 다양한 시나리오의 목적 함수 점수에 따라 순위를 매긴 플롯.

Python으로 배우는 이산 사건 시뮬레이션

성능을 제한하는 핵심 공정 식별

탐색 및 중지

일련의 순차적 공정으로 구성된 제조 활동의 반응 포락선을 나타내는 플롯. 파란색 하단선은 탐색 및 중지 방법의 요건을 충족한 마지막 실행을 나타내며, 최적 시뮬레이션에서 얻은 각 공정의 최소 소요 시간이 강조 표시되어 있음.

  • "Blue" 라인이 "중지" 기준 충족

    • 총 소요 시간 = 30분
  • "최적" 시뮬레이션 세부 결과:

    • 공정 1: 약 10분 (sum = 20 min)
    • 공정 2: 약 10분 (sum = 20 min)
    • 공정 3: 약 8분 (sum = 28 min)
    • 공정 4: 약 2분 (sum = 30 min)
  • "공정 1"이 목표 달성에 핵심적 역할

Python으로 배우는 이산 사건 시뮬레이션

성능을 제한하는 핵심 공정 식별

점수

목표: 가장 낮은 점수 = 가장 짧은 소요 시간 "하역 및 준비", "절단", "연마" 공정에 대해 시뮬레이션된 다양한 시나리오의 목적 함수 점수를 나타내는 산점도. 최적 시뮬레이션에서 얻은 각 공정의 최소 소요 시간이 강조 표시되어 있음.

순위

"공정 1"이 목표 달성에 핵심적 역할 "하역 및 준비", "절단", "연마" 공정에 대해 시뮬레이션된 다양한 시나리오의 목적 함수 점수에 따라 순위를 매긴 플롯. 최적 시뮬레이션에서 얻은 각 공정의 최소 소요 시간이 강조 표시되어 있음.

Python으로 배우는 이산 사건 시뮬레이션

연습해 봅시다!

Python으로 배우는 이산 사건 시뮬레이션

Preparing Video For Download...