# 目的関数の定義 problem += lpSum(transport_vars[base][enemy] * transport_cost_dict[base][enemy] for base in base_names for enemy in enemy_bases)
# 制約条件の定義 # 各自国の拠点からの輸送量は、自国の拠点の供給量以下である必要がある supply_dict = {"Base1": 100, "Base2": 150, "Base3": 200} for base in base_names: problem += lpSum(transport_vars[base][enemy] for enemy in enemy_bases) <= supply_dict[base]
# 各敵地の拠点への輸送量は、敵地の拠点の需要量以上である必要がある demand_dict = {"Enemy1": 80, "Enemy2": 120, "Enemy3": 100} for enemy in enemy_bases: problem += lpSum(transport_vars[base][enemy] for base in base_names) >= demand_dict[enemy]
# 最適化の実行 problem.solve()
# 結果の出力 print("Optimal Solution:") for base in base_names: for enemy in enemy_bases: print(f"Transport from {base} to {enemy}: {transport_vars[base][enemy].varValue}")
Optimal Solution:
Transport from Base1 to Enemy1: 30.0
Transport from Base1 to Enemy2: 0.0
Transport from Base1 to Enemy3: 70.0
Transport from Base2 to Enemy1: 0.0
Transport from Base2 to Enemy2: 120.0
Transport from Base2 to Enemy3: 30.0
Transport from Base3 to Enemy1: 50.0
Transport from Base3 to Enemy2: 0.0
Transport from Base3 to Enemy3: 0.0
各自国の拠点から敵地の拠点への輸送量が表示されています。
例えば、”Transport from Base1 to Enemy1: 30.0” は、自国の Base1 から敵地の Enemy1 への輸送量が30であることを示しています。