🚚 1️⃣ 목표 정리
- 창고 → 공장 운송경로 & 운송비용 시뮬레이션
- 총 운송비용 계산 함수 만들기
- 제약조건(최소 제조량) 적용
- 결과를 최적화하고 시각화까지 연결
✅ 사용 파일:
- trans_route.csv → 운송량
- trans_cost.csv → 거리 또는 운송 단가
📄 2️⃣ 데이터 구조
trans_route.csv (운송량)
공장F1F2F3F4
| W1 | 15 | 15 | 0 | 5 |
| W2 | 5 | 0 | 30 | 5 |
| W3 | 10 | 15 | 2 | 15 |
trans_cost.csv (단가 or 거리)
| 공장 | F1 | F2 | F3 | F4 |
| W1 | 1 | 2 | 1 | 3 |
| W2 | 2 | 3 | 2 | 2 |
| W3 | 3 | 1 | 3 | 1 |
✅ 운송비용 = 운송량 × 단가
🛠 3️⃣ 총 운송비용 함수 작성
import pandas as pd
# 데이터 불러오기
df_route = pd.read_csv('6장/trans_route.csv')
df_cost = pd.read_csv('6장/trans_cost.csv')
# 공장 & 창고 목록
factories = df_route.columns[1:]
warehouses = df_route['공장']
# 총 비용 함수
def calc_total_cost(route_df, cost_df):
total_cost = 0
for idx, row in route_df.iterrows():
from_node = row['공장']
for to_node in factories:
quantity = row[to_node]
unit_cost = cost_df.loc[cost_df['공장'] == from_node, to_node].values[0]
total_cost += quantity * unit_cost
return total_cost
# 결과 출력
total_cost = calc_total_cost(df_route, df_cost)
print("총 운송비용:", total_cost)
✅ 결과:
총 운송비용: 194
⛓ 4️⃣ 제약조건: 공장별 최소 제조량
📌 예시 조건:
min_factory_supply = {
'F1': 20,
'F2': 20,
'F3': 20,
'F4': 20
}
- 각 공장(F1~F4)은 최소 20개 이상의 제품을 공급받아야 함
✅ 공장별 실제 공급량 계산:
def calc_factory_supply(route_df):
supply = {factory: 0 for factory in factories}
for idx, row in route_df.iterrows():
for to_node in factories:
supply[to_node] += row[to_node]
return supply
factory_supply = calc_factory_supply(df_route)
print("공장별 공급량:", factory_supply)
📊 5️⃣ 최적화 방향성 (아이디어)
| 단계 | 내용 |
| 1️⃣ 총 비용 계산 | 운송량 × 단가 합계 |
| 2️⃣ 제약조건 확인 | 공급량 < 최소치 → 페널티 or 조정 |
| 3️⃣ 최적화 알고리즘 | Linear Programming, Genetic Algorithm 등 |
✅ 시작 단계에서는 수작업 조정으로도 가능 → 운송량을 직접 조정하고 함수에 넣어 비용 & 제약 충족 여부를 출력
'인공지능' 카테고리의 다른 글
| 📢 입소문 확산 시뮬레이션: 네트워크와 시계열 변화까지! (1) | 2025.07.15 |
|---|---|
| 🚚 물류 최적 운송경로 계산 & 네트워크 가시화 (3) | 2025.07.14 |
| 물류 최적화의 첫걸음: NetworkX로 가중치 네트워크 그리기 (2) | 2025.07.08 |
| 물류의 최적경로 컨설팅 테크닉 (1) | 2025.07.07 |
| 고객 데이터를 클러스터링하고 PCA로 시각화하기 (1) | 2025.07.03 |