인공지능 & 데이터 사이언스/연구 및 테스트

🤖 스마트팩토리 AI 시리즈 – 4편

프로잉2 2025. 6. 1. 13:20
728x90

강화학습 기반 공정 최적화 (Unity + ML-Agents)

🎯 목표

Unity에서 공정 시뮬레이터를 만들고, 강화학습을 통해 AI가 자동으로 공정을 최적화하도록 훈련합니다.
예: 서보모터 속도 조절, 물체 이송 타이밍, 실린더 동작 간격 등을 AI가 스스로 최적화합니다.


🧩 사용 기술

  • Unity (시뮬레이션 + 제어 환경)
  • ML-Agents Toolkit (강화학습 훈련)
  • PPO (Proximal Policy Optimization) 알고리즘
  • Python (훈련 파이프라인)

🖼️ 시뮬레이션 예시 화면

AI 에이전트가 공정 조건(속도, 타이밍)을 스스로 조정하며 목표 시간과 품질을 만족시키는 방향으로 학습


🛠 Unity 구현 과정

1️⃣ 공정 시나리오 설정 예시

 

구성 요소 설명
Item 이송할 물체 (Cube 등)
Conveyor 벨트, 속도 조절 가능
Cylinder 물체를 밀어주는 역할
Sensor 감지 위치, 도달 시간 측정
Agent 공정을 제어하는 AI 에이전트
 

2️⃣ ML-Agent 설치 및 설정

✅ 설치 (Python)

pip install mlagents

✅ Unity 패키지 설치


3️⃣ AI Agent 스크립트 작성

🎮 공정 최적화용 Agent 스크립트 (C#)

using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;

public class FactoryAgent : Agent
{
    public Transform item;
    public Transform sensor;
    public float conveyorSpeed = 1.0f;

    private float timer;

    public override void OnEpisodeBegin()
    {
        item.position = new Vector3(-2f, 0.5f, 0f);
        timer = 0;
    }

    public override void CollectObservations(VectorSensor sensor)
    {
        sensor.AddObservation(item.position.x);
        sensor.AddObservation(conveyorSpeed);
    }

    public override void OnActionReceived(ActionBuffers actions)
    {
        float speedAction = actions.ContinuousActions[0];
        conveyorSpeed = Mathf.Clamp(speedAction, 0.5f, 3.0f);
        item.Translate(Vector3.right * conveyorSpeed * Time.deltaTime);

        timer += Time.deltaTime;

        // 성공: 센서 위치 도달
        if (item.position.x >= sensor.position.x)
        {
            float reward = 1.0f - Mathf.Abs(timer - 2.0f); // 목표 시간 2초
            SetReward(reward);
            EndEpisode();
        }

        if (timer > 4.0f) // 제한 시간 초과
        {
            SetReward(-1.0f);
            EndEpisode();
        }
    }

    public override void Heuristic(in ActionBuffers actionsOut)
    {
        actionsOut.ContinuousActions.Array[0] = 1.0f; // 테스트용 속도
    }
}

 


4️⃣ Python 훈련 설정 (config 파일)

behaviors:
  FactoryAgent:
    trainer_type: ppo
    hyperparameters:
      batch_size: 64
      buffer_size: 1024
      learning_rate: 0.0003
      beta: 0.005
      num_epoch: 3
    network_settings:
      normalize: true
      hidden_units: 128
      num_layers: 2
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
    max_steps: 100000
    time_horizon: 64
    summary_freq: 1000

5️⃣ 학습 시작 명령어

mlagents-learn config/ppo_factory.yaml --run-id=factory_run_01 --train

Unity 실행 상태에서 에이전트가 스스로 공정 타이밍을 조절하며 최적화 학습을 진행합니다.


🧠 보상 설계 팁 (강화학습 핵심)

행동 결과
정확히 목표 시간 도달 (2.0s ± 0.2s) +1.0
너무 빠르거나 느림 -0.3 ~ -1.0
실패 (타겟 미도달 or 충돌) -1.0
연속 성공 +0.2 (보너스)
 

🎁 기대 결과

  • AI가 자율적으로 공정 속도 조절 전략 학습
  • 실제로 이송 거리, 목표 시간이 바뀌어도 스스로 조정
  • 튜닝 없이 강건한 공정 제어 자동화 구현

📌 확장 아이디어

확장 주제 설명
실린더+벨트 조합 최적화 동시 제어
강화학습 + 예측 모델 결합 Hybrid 제어
다중 에이전트 협업 공정 간 AI 협력 제어
 

🏷️ 태그 (4편 전용)

강화학습, UnityMLAgents, PPO, 공정강화학습, AI자율제어, 스마트팩토리AI, 공정최적화, 강화학습시뮬레이션, UnityAI, 스마트제조

▶️ 다음 편 예고 (5편)

멀티센서 융합 기반 품질 이상 판별 – AI가 다양한 센서 데이터를 조합해 불량 자동 감지

728x90