인공지능

물류의 최적경로 컨설팅 테크닉

존카터 2025. 7. 7. 20:13

파이썬 데이터 로드

import pandas as pd

factories = pd.read_csv(r"6장\tbl_factory.csv")
warehouse = pd.read_csv(r"6장\tbl_warehouse.csv")
cost = pd.read_csv(r"6장\rel_cost.csv")
trans = pd.read_csv(r"6장\tbl_transaction.csv")

데이터 확인

  • 공장 데이터 (tbl_factory.csv)
  • 창고 데이터 (tbl_warehouse.csv)
  • 운송 비용 데이터 (rel_cost.csv)
  • 고장 부품 운송 실적 (tbl_transaction.csv)

데이터 및 메지 및 합치

# 운송 실적 + 비용
join_data = pd.merge(trans, cost, left_on=["ToFC", "FromWH"], right_on=["FCID", "WHID"], how="left")

# 공장 정보 추가
join_data = pd.merge(join_data, factories, left_on="ToFC", right_on="FCID", how="left")

# 창고 정보 추가
join_data = pd.merge(join_data, warehouse, left_on="FromWH", right_on="WHID", how="left")

# 결과 정보
join_data = join_data[["TransactionDate", "Quantity", "Cost", "ToFC", "FCName", "FCDemand", "FromWH", "WHName", "WHSupply", "WHRegion"]]

분그 및 진단 보고

north_data = join_data[join_data['WHRegion'] == '북부']
south_data = join_data[join_data['WHRegion'] == '남부']

print("북부 총비용" + str(north_data["Cost"].sum()) + "만원")
print("남부 총비용" + str(south_data["Cost"].sum()) + "만원")
print("북부 총부품 운송개수" + str(north_data["Quantity"].sum()) + "개")
print("남부 총부품 운송개수" + str(south_data["Quantity"].sum()) + "개")

tmp = (north_data["Cost"].sum() / north_data["Quantity"].sum()) * 10000
print("북부지사 부품 1개당 운송비용:" + str(int(tmp)) + "원")

tmp = (south_data["Cost"].sum() / south_data["Quantity"].sum()) * 10000
print("남부지사 부품 1개당 운송비용:" + str(int(tmp)) + "원")

결과

구분총비용(만원)총운송개수1개당 운송비용(원)

북부 2,189.3 49,146개 445원
남부 2,062.0 50,214개 410원

평균 운송비용 비교

cost_chk = pd.merge(cost, factories, how="left")

print("북부지사 평균운송 비율:" + str(cost_chk[cost_chk["FCRegion"] == "북부"]["Cost"].mean()))
print("남부지사 평균운송 비율:" + str(cost_chk[cost_chk["FCRegion"] == "남부"]["Cost"].mean()))

결과:

  • 북부지사 평균운송 비율: 1.075
  • 남부지사 평균운송 비율: 1.05

두 지사의 평균 운송비용 차이는 거의 없음을 확인.


결론 및 인사이트

  1. 남부단가 면에서 좀 더 효율적이나, 두 지역 모두 유사한 비용 구조를 가지고 있음.
  2. 창고→공장 간 운송에 따라 비용 최적화의 잠재성이 있음.
  3. 향후 운송비 절감을 위해:
    • 거리 기반 경로 최적화
    • 창고 재배치 시뮬레이션 고려
    • 부품 재고 조정 등을 종합적으로 고려할 필요.

🚛 물류 네트워크 분석, 왜 그래프부터 배울까? (NetworkX 첫걸음)


1️⃣ 왜 배워야 하나요? (도입)

현대의 물류 시스템은 단순히 창고에서 공장으로 물건을 보내는 것을 넘어서, 다양한 창고와 공장 간의 복잡한 네트워크를 통해 운영됩니다.

✅ 이 네트워크를 이해하고 효율화하려면? 👉 데이터를 그래프(Graph) 로 표현하고 분석하는 능력이 필요합니다.

그래프 요소물류 의미
노드 (Node) 창고, 공장
간선 (Edge) 운송 경로

NetworkX는 이런 네트워크를 직관적으로 시각화하고 분석할 수 있는 파이썬 라이브러리입니다.


2️⃣ 코드와 함께 쉽게 배우기 (기초 그래프)

📌 단계별 코드 작성

import networkx as nx
import matplotlib.pyplot as plt

# 1. 그래프 생성
G = nx.Graph()

# 2. 노드 추가 (창고/공장)
G.add_node("nodeA")
G.add_node("nodeB")
G.add_node("nodeC")

# 3. 간선 추가 (운송 경로)
G.add_edge("nodeA", "nodeB")
G.add_edge("nodeB", "nodeC")
G.add_edge("nodeC", "nodeA")

# 4. 노드 위치 설정
pos = {
    "nodeA": (0, 0),
    "nodeB": (1, 1),
    "nodeC": (0, 1)
}

# 5. 시각화
nx.draw(G, pos, with_labels=True)
plt.show()

✅ 핵심 포인트:

  • Graph() : 무방향 그래프 생성
  • add_node() : 거점(창고/공장) 추가
  • add_edge() : 노드 간 경로 추가
  • draw() : 시각화

3️⃣ 결과 (시각화)

  • 세 개의 노드가 삼각형 형태로 연결되어 네트워크의 구조를 직관적으로 보여줍니다.
  • 이처럼 노드와 간선만으로도 복잡한 관계를 한눈에 파악할 수 있어요.

4️⃣ 앞으로 어디에 쓰이나요? (물류 연결)

이렇게 만들어진 네트워크 구조는 앞으로 다양한 물류 분석에 활용됩니다:

활용 분야 내용
💸 비용 계산 창고 → 공장 간 운송 비용 산출
🛣️ 경로 최적화 최적의 이동 경로 탐색
🔗 공급망 분석 병목 지점, 리스크 파악

✅ 이 단계에서 우리는 보여주는 것 → 분석하는 것 → 최적화/의사결정 으로 이어지는 흐름을 배웁니다.


✅ 정리

  • NetworkX는 복잡한 관계와 흐름을 직관적으로 보여주고 분석하는 최고의 도구
  • 물류 시스템도 결국 네트워크!
  • 오늘 배운 내용은 앞으로 진행할 비용 분석, 경로 최적화, 시뮬레이션뼈대가 됩니다.