인공지능

💰 물류 운송비용 함수 작성 & 최적화

존카터 2025. 7. 11. 14:58

🚚 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 등

시작 단계에서는 수작업 조정으로도 가능 → 운송량을 직접 조정하고 함수에 넣어 비용 & 제약 충족 여부를 출력