Fix MIP model: make objective function linear to avoid multiplication error
This commit is contained in:
14
mip.py
14
mip.py
@@ -68,19 +68,11 @@ def design_with_mip(
|
|||||||
# 簇使用变量 (binary)
|
# 簇使用变量 (binary)
|
||||||
y = pulp.LpVariable.dicts("use_cluster", range(max_clusters), cat="Binary")
|
y = pulp.LpVariable.dicts("use_cluster", range(max_clusters), cat="Binary")
|
||||||
|
|
||||||
# 目标函数:最小化总成本 (简化版:距离成本)
|
# 目标函数:最小化总成本 (线性简化版:到升压站距离总和)
|
||||||
# 这里使用简化成本:簇内距离 + 到升压站距离
|
# 由于MIP线性约束,简化目标为最小化风机到升压站的距离总和(通过簇)
|
||||||
prob += pulp.lpSum(
|
prob += pulp.lpSum(
|
||||||
[
|
[
|
||||||
dist_matrix_full[i + 1, j + 1] * x[i][k] * x[j][k]
|
dist_matrix_full[0, i + 1] * x[i][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] # 假设每个簇连接到升压站
|
|
||||||
for i in range(n_turbines)
|
for i in range(n_turbines)
|
||||||
for k in range(max_clusters)
|
for k in range(max_clusters)
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user