인공지능 & 데이터 사이언스/연구 및 테스트
🤖 스마트팩토리 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 패키지 설치
- ML-Agents Unity Package GitHub
- Unity 패키지 추가: com.unity.ml-agents
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