Expanding Flow Shop Tasks Based on Recursive Functions

이 논문은 재귀 함수를 활용하여 기계 관련, 처리 시간 조정, 스케줄 실현 가능성 제어 등 다양한 확장을 단일 흐름 공장 스케줄링 문제로 통합하여 기술하고, 이를 바탕으로 새로운 문제의 공식화와 분기 한정 최적화를 시연합니다.

Boris Kupriyanov, Alexander Lazarev, Alexandr Roschin, Frank Werner

게시일 2026-03-13
📖 3 분 읽기🧠 심층 분석

Each language version is independently generated for its own context, not a direct translation.

🏭 1. 문제 상황: 혼란스러운 공장 (Flow Shop Problem)

상상해 보세요. 거대한 공장에 **n 개의 제품 (요리 재료)**이 들어와서 **m 개의 기계 (요리 스테이션)**를 거쳐 나가는 상황이 있습니다.

  • 기본 규칙: 모든 제품은 같은 순서로 기계 1 번 → 2 번 → 3 번을 거쳐야 합니다.
  • 목표: 모든 제품이 가장 빨리 완성되도록 순서를 정하는 것입니다.

기존의 공장 계획은 너무 단순했습니다. "재료 A 는 기계 1 에서 5 분, 기계 2 에서 3 분"처럼 고정된 시간만 고려했습니다. 하지만 실제 현실은 훨씬 복잡합니다.

🧠 2. 해결책: "스마트한 요리사" (재귀 함수)

저자들은 이 복잡한 현실을 해결하기 위해 **'스마트한 요리사 (재귀 함수)'**를 도입했습니다. 이 요리사는 단순히 시간을 계산하는 게 아니라, 상황에 따라 스스로 판단하고 계산 방식을 바꿀 수 있습니다.

이 요리사는 다음과 같은 세 가지 역할을 수행합니다.

🛠️ 역할 1: 기계별 특수 능력 (Machine Functions)

각 기계마다 고유의 성질이 있습니다. 이 요리사는 기계의 종류를 보고 행동을 바꿉니다.

  • 일반 기계: 그냥 요리만 합니다.
  • 초기 설정 기계 (Initial Setup): 첫 번째 요리를 시작할 때만 '준비 시간'이 걸립니다. (예: 오븐을 예열하는 시간)
  • 주기적 점검 기계 (Periodic Adjustment): 요리 3 개를 만들 때마다 '칼을 갈거나' '기계를 청소'하는 시간이 추가됩니다.
  • 순서 의존 기계 (Sequence-Dependent): 다음 요리의 종류에 따라 준비 시간이 달라집니다. (예: 토마토 소스 다음에 크림 소스를 만들면 설거지가 더 오래 걸림)

비유: 마치 요리사가 "오늘은 오븐을 예열해야 해 (첫 번째 요리)", "3 개 요리할 때마다 칼을 갈아야 해"라고 스스로 규칙을 적용하는 것과 같습니다.

⏱️ 역할 2: 시간 조정 (Constraint Adjustment)

요리사가 요리를 하다가 중단되거나 지연되는 상황을 고려합니다.

  • 점심 시간/휴식: 기계가 특정 시간 (예: 오후 1 시) 에 멈추고 30 분 쉬면, 그 이후 작업은 모두 30 분 뒤로 밀립니다.
  • 기다림: 재료가 준비되지 않아 기계가 비어있으면, 다음 작업은 재료가 도착할 때까지 기다립니다.

비유: 요리사가 "점심시간이니까 12 시부터 12 시 30 분까지는 아무것도 안 해"라고 스스로 시간을 조정하는 것입니다.

🚫 역할 3: 안전 검사 (Feasibility Check)

요리사가 요리를 끝냈을 때, **"이게 가능한 일인가?"**를 확인합니다.

  • 기한 (Deadline): "이 요리는 5 시까지 나와야 해!"라고 정해져 있는데, 6 시에 나올 것 같으면 **"불가능 (♯)"**이라고 표시합니다.
  • 이 검사를 통과하지 못하면 그 계획은 처음부터 다시 짜야 합니다.

🏗️ 3. 이 방법의 핵심: 레이어 (Layer) 구조

이 논문이 제안한 가장 멋진 점은 이 모든 기능을 하나의 레시피 (함수) 에 계층적으로 쌓을 수 있다는 것입니다.

  1. 1 층 (기초): 기계가 요리를 하는 기본 시간 계산.
  2. 2 층 (조정): 휴식 시간이나 초기 설정 시간을 더하거나 빼는 작업.
  3. 3 층 (검사): 기한을 넘지 않았는지 확인하는 작업.

이처럼 레고 블록처럼 각 기능을 쌓아 올리면, 아주 복잡한 공장 상황 (휴식, 초기 설정, 순서 의존성 등) 을 한 번에 해결할 수 있는 **'만능 공장 계획 시스템'**이 만들어집니다.

📊 4. 실제 적용 예시: 음료수 병 조립 공장

논문의 마지막 부분에서는 이 이론을 실제 예시로 보여줍니다.

  • 상황: 5 단계 공정을 거치는 음료수 병 조립 라인.
  • 문제: 병 종류가 다르면 기계 설정을 바꿔야 하고, 병 4 개가 모이면 박스에 담아야 하며, 점심시간이 있고, 특정 시간까지 완료해야 합니다.
  • 해결: 이 모든 복잡한 규칙을 '스마트한 요리사 (재귀 함수)'에게 맡기니, 최적의 작업 순서를 찾아내어 가장 빨리 모든 병을 포장할 수 있었습니다.

💡 5. 결론: 왜 이것이 중요한가?

기존에는 공장마다 규칙이 다르면 새로운 프로그램을 따로 만들어야 했지만, 이 방법은 **"규칙을 함수 (함수) 로 정의하면, 어떤 복잡한 공장이라도 같은 방식으로 해결할 수 있다"**는 것을 보여줍니다.

  • 간결함: 복잡한 현실을 수학적으로 깔끔하게 정리했습니다.
  • 유연함: 새로운 규칙 (예: 갑작스러운 기계 고장) 이 생기면 함수 하나만 수정하면 됩니다.
  • 실용성: 실제 공장에서 바로 적용 가능한 최적의 계획을 세울 수 있습니다.

한 줄 요약:

이 논문은 **"복잡한 공장 생산 계획을, 상황 판단이 가능한 '스마트한 요리사'에게 맡겨서, 휴식, 초기 설정, 기한 등 모든 변수를 한 번에 해결하는 방법"**을 제시합니다.