Fix MIP model: make objective function linear to avoid multiplication error

This commit is contained in:
dmy
2026-01-08 10:03:49 +08:00
parent 579f8866c4
commit 6ad11a9b69

14
mip.py
View File

@@ -68,19 +68,11 @@ def design_with_mip(
# 簇使用变量 (binary)
y = pulp.LpVariable.dicts("use_cluster", range(max_clusters), cat="Binary")
# 目标函数:最小化总成本 (简化版:距离成本)
# 这里使用简化成本:簇内距离 + 到升压站距离
# 目标函数:最小化总成本 (线性简化版:到升压站距离总和)
# 由于MIP线性约束简化目标为最小化风机到升压站距离总和(通过簇)
prob += pulp.lpSum(
[
dist_matrix_full[i + 1, j + 1] * x[i][k] * x[j][k]
for i in range(n_turbines)
for j in range(n_turbines)
for k in range(max_clusters)
if i < j
]
) + pulp.lpSum(
[
dist_matrix_full[0, i + 1] * y[k] # 假设每个簇连接到升压站
dist_matrix_full[0, i + 1] * x[i][k]
for i in range(n_turbines)
for k in range(max_clusters)
]