From 6ad11a9b699ed0906b90f22038b2bfc2bce7fcd7 Mon Sep 17 00:00:00 2001 From: dmy Date: Thu, 8 Jan 2026 10:03:49 +0800 Subject: [PATCH] Fix MIP model: make objective function linear to avoid multiplication error --- mip.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/mip.py b/mip.py index 0170ea4..7da12ac 100644 --- a/mip.py +++ b/mip.py @@ -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) ]