Kernel Dying Unexpectedly in Windows VSCode with Gurobipy
Awaiting user inputDear Gurobi Community,
I'm encountering an issue while solving optimization problems using Gurobipy in Visual Studio Code on Windows. The kernel unexpectedly dies after approximately 30 seconds of execution. I've ruled out memory constraints as the primary cause, as the same problem runs successfully on a MacBook with lower specifications (less memory and fewer threads) in VSCode.
To troubleshoot, I've taken the following steps:
1. Ensured that Python and library versions are identical between the Windows and Mac environments.
2. Verified that the issue persists even after version synchronization.
Interestingly, the problem seems to be Windows-specific, as it doesn't occur on macOS under similar conditions.
I would greatly appreciate any insights or suggestions on potential causes and solutions for this issue. Are there any known compatibility issues or configuration settings that might cause the kernel to terminate unexpectedly on Windows?
I tried both (Python 3.9-Gurobi 11.0.2) and (Python 3.12-Gurobi 12.0.0) with Intel i9-14900K, 128GB RAM. The pair of (Python 3.9-Gurobi 11.0.2) works well in Apple M3 Pro(11core), 18GB RAM.
Thank you in advance for your assistance.
Best regards,
Huijae
-
Hi Huijae,
Have you profiled the failing cases? Can you share a minimal reproducible example?
Cheers,
David0 -
Thank you for the reply.
To implement the code, the data should be imported. for the convenient, the data are written in the code.
My computer setting and Gurobi version are as below.
Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (win64 - Windows 11.0 (26100.2))
CPU model: Intel(R) Core(TM) i9-14900K, instruction set [SSE2|AVX|AVX2]
Thread count: 24 physical cores, 32 logical processors, using up to 32 threadsAnd the screenshot below is the output from the code.
Best regards,
Huijae
import pandas as pd
import numpy as np
from gurobipy import *def weighted_sum_optimize(li_code_temp, df_pop_temp, df_use_temp, df_dist_temp, df_adjacency_temp, dict_neighbors, li_seed,
numCities, numDistricts, refer_meanRI, refer_maxDIST, weight1, weight2,
minPop=150000, minRI=0.4, maxDist=60):
# set parameters and start developing formulation
print(GRB.VERSION_MAJOR, GRB.VERSION_MINOR, GRB.VERSION_TECHNICAL)
model = Model('mHSA_temp')
# model.setParam('Threads',30) # 가능한 모든 코어 사용
# Employ variables
# X_ij 인접한 i,j 트리에서 연결되면 1 아니면 0
x_vars = []
x_names = []
for i in li_code_temp:
neighbors = dict_neighbors[i]
for j in neighbors:
x_vars += [(i,j)]
x_names += ['X[%s,%s]'%(i,j)]
X = model.addVars(x_vars, vtype=GRB.BINARY, name=x_names)
# T_ij i,j 같은 권역 1 아니면 0
t_vars = []
t_names = []
for i in li_code_temp:
for j in li_code_temp:
t_vars += [(i,j)]
t_names += ['T[%s,%s]'%(i,j)]
T = model.addVars(t_vars, vtype=GRB.BINARY, name=t_names)
# Y_ia i가 권역 a에 속하면 1 아니면 0
y_vars = []
y_names = []
for i in li_code_temp:
for a in range(1, numDistricts+1):
y_vars += [(i,a)]
y_names += ['Y[%s,%s]'%(i,a)]
Y = model.addVars(y_vars, vtype=GRB.BINARY, name=y_names)
# V_a 권역 a의 자체충족률
v_vars = []
v_names = []
for a in range(1, numDistricts+1):
v_vars += [(a)]
v_names += ['V[%s]'%(a)]
V = model.addVars(v_vars, vtype=GRB.CONTINUOUS, name=v_names)
# Z1 평균 자체충족률, Z2 최대 RI 가중 거리
Z1 = model.addVar(vtype=GRB.CONTINUOUS, name='z1')
Z2 = model.addVar(vtype=GRB.CONTINUOUS, name='z2')
# U_i 권역 내 순서 값
u_vars = []
u_names = []
for i in li_code_temp:
u_vars += [(i)]
u_names += ['U[%s]'%(i)]
U = model.addVars(u_vars, vtype=GRB.CONTINUOUS, name=u_names)
# Alpha_ia = Y_ia * V_a
alpha_vars = []
alpha_names = []
for i in li_code_temp:
for a in range(1, numDistricts+1):
alpha_vars += [(i,a)]
alpha_names += ['Alpha[%s,%s]'%(i,a)]
Alpha = model.addVars(alpha_vars, vtype=GRB.CONTINUOUS, name=alpha_names)
# Beta_ija = Y_ia * Y_ja
beta_vars = []
beta_names = []
for i in li_code_temp:
for j in li_code_temp:
for a in range(1, numDistricts+1):
beta_vars += [(i,j,a)]
beta_names += ['Beta[%s,%s,%s]'%(i,j,a)]
Beta = model.addVars(beta_vars, vtype=GRB.BINARY, name=beta_names)
# Gamma_ik = T_ik * Z2 # k!=i
gamma_vars = []
gamma_names = []
for i in li_code_temp:
for k in li_code_temp:
if i != k:
gamma_vars += [(i,k)]
gamma_names += ['Gamma[%s,%s]'%(i,k)]
Gamma = model.addVars(gamma_vars, vtype=GRB.CONTINUOUS, name=gamma_names)
# Delta_ijk = X_jk * T_ij * T_ik
delta_vars = []
delta_names = []
for i in li_code_temp:
for j in li_code_temp:
neighbors = dict_neighbors[j]
for k in neighbors:
delta_vars += [(i,j,k)]
delta_names += ['Delta[%s,%s,%s]'%(i,j,k)]
Delta = model.addVars(delta_vars, vtype=GRB.BINARY, name=delta_names)
# Set objective
objTerms = []
model.setObjective(LinExpr(weight1 * ((Z1-refer_meanRI)/refer_meanRI) - weight2 * ((Z2-refer_maxDIST)/refer_maxDIST)), GRB.MAXIMIZE)
# Set constraints
# 0. z1에 대한 정의
model.addConstr(Z1 == quicksum(V[a] for a in range(1, numDistricts+1)) / numDistricts, name='Eq(0)')
# 1. 첫번째 목적함수 선형화를 위한 제약식
for a in range(1, numDistricts+1):
model.addConstr(
quicksum(df_use_temp.loc[i,j] * Alpha[i,a] for i in li_code_temp for j in li_code_temp) <=
quicksum(df_use_temp.loc[i,j] * Beta[i,j,a] for i in li_code_temp for j in li_code_temp), name='Eq(1)')
for i in li_code_temp:
for a in range(1, numDistricts+1):
model.addConstr(Alpha[i,a]<=V[a], name='Eq(1.1)(%s,%s)'%(i,a))
model.addConstr(Alpha[i,a]<=Y[i,a], name='Eq(1.2)(%s,%s)'%(i,a))
model.addConstr(Alpha[i,a]>=LinExpr(V[a]-(1-Y[i,a])), name='Eq(1.3)(%s,%s)'%(i,a))
for j in li_code_temp:
model.addConstr(Beta[i,j,a]<=Y[i,a], name='Eq(1.4)(%s%s%s)'%(i,j,a))
model.addConstr(Beta[i,j,a]<=Y[j,a], name='Eq(1.5)(%s%s%s)'%(i,j,a))
model.addConstr(Beta[i,j,a]>=Y[i,a]+Y[j,a]-1, name='Eq(1.6)(%s%s%s)'%(i,j,a))
# 2. 두번째 목적함수 선형화를 위한 제약식
for i in li_code_temp:
model.addConstr(
quicksum(df_use_temp.loc[i,k] * Gamma[i,k] for k in li_code_temp if i != k) >=
quicksum(df_use_temp.loc[i,j] * df_dist_temp.loc[i,j] * T[i,j] for j in li_code_temp), name='Eq(2)')
for i in li_code_temp:
for k in li_code_temp:
if i!=k:
model.addConstr(Gamma[i,k]<=Z2, name='Eq(2.1)(%s,%s)'%(i,k))
model.addConstr(Gamma[i,k]<=maxDist*T[i,k], name='Eq(2.2)(%s,%s)'%(i,k))
model.addConstr(Gamma[i,k]>=Z2-(1-T[i,k])*maxDist, name='Eq(2.3)(%s,%s)'%(i,k))
# 3. 링크 수 = n-r
LHS = []
RHS = numCities - numDistricts
for i in li_code_temp:
neighbors = dict_neighbors[i]
for j in neighbors:
LHS += [(1, X[i,j])]
model.addConstr(LinExpr(LHS)==RHS, name='Eq(3)')
# 4. 인접노드 하나로만 연결
for i in li_code_temp:
LHS = []
neighbors = dict_neighbors[i]
for j in neighbors:
LHS += [(1, X[i,j])]
model.addConstr(LinExpr(LHS)<=1, name='Eq(4)(%s)'%(i))
# 5. 사이클 방지 1
for i in li_code_temp:
neighbors = dict_neighbors[i]
for j in neighbors:
RHS = numCities-numDistricts-1
model.addConstr(LinExpr(U[i]-U[j]+(numCities-numDistricts)*X[i,j]+(numCities-numDistricts-2)*X[j,i])<=RHS,
name='Eq(5)(%s,%s)'%(i,j))
# 6. 사이클 방지 2
for i in li_code_temp:
model.addConstr(LinExpr(U[i])>=1, name='Eq(6.1)(%s)'%(i))
RHS = numCities-numDistricts+1
model.addConstr(LinExpr(U[i])<=RHS, name='Eq(6.2)(%s)'%(i))
# 7. i,j 같은 그룹, j,k 같은 그룹, 그러면 i,k 같은 그룹
for i in li_code_temp:
for j in li_code_temp:
for m in li_code_temp:
if (i != j) or (j != m):
model.addConstr(LinExpr(T[i,j]+T[i,m]-T[j,m])<=1, name='Eq(7)(%s,%s,%s)'%(i,j,m))
# 8. t matrix symmetric
for i in li_code_temp:
for j in li_code_temp:
model.addConstr(LinExpr(T[i,j]-T[j,i])==0, name='Eq(8)(%s,%s)'%(i,j))
# 9. t_ii = 1
for i in li_code_temp:
model.addConstr(LinExpr(T[i,i])==1, name='Eq(9)(%s)'%(i))
# 10. 트리에서 인접하면 i,j 같은 그룹
for i in li_code_temp:
neighbors = dict_neighbors[i]
for j in neighbors:
model.addConstr(LinExpr(X[i,j]-T[i,j])<=0, name='Eq(10)(%s,%s)'%(i,j))
# 11. 진료권 내 tree Edge 수 = 진료권 지역 수 - 1(tree가 1개 만들어져야한다는 의미)
for i in li_code_temp:
for j in li_code_temp:
neighbors = dict_neighbors[j]
for k in neighbors:
model.addConstr(Delta[i,j,k] <= X[j,k], name='Eq(11.1)(%s,%s,%s)'%(i,j,k))
model.addConstr(Delta[i,j,k] <= T[i,j], name='Eq(11.2)(%s,%s,%s)'%(i,j,k))
model.addConstr(Delta[i,j,k] <= T[i,k], name='Eq(11.3)(%s,%s,%s)'%(i,j,k))
model.addConstr(Delta[i,j,k] >= X[j,k]+T[i,j]+T[i,k]-2, name='Eq(11.4)(%s,%s,%s)'%(i,j,k))
LHS = quicksum(Delta[i,j,k] for j in li_code_temp for k in dict_neighbors[j])
RHS = quicksum(T[i,k] for k in li_code_temp)
model.addConstr(LHS == RHS-1, name='Eq(11)(%s)'%(i))
# 12. T_ij와 Y_ia의 관계 1
for i in li_code_temp:
for j in li_code_temp:
for a in range(1, numDistricts+1):
model.addConstr(T[i,j]>=Y[i,a]+Y[j,a]-1, name='Eq(12)(%s,%s,%s)'%(i,j,a))
# 13. T_ij와 Y_ia의 관계 2
for i in li_code_temp:
for j in li_code_temp:
model.addConstr(T[i,j]<=quicksum(Beta[i,j,a] for a in range(1, numDistricts+1)), name='Eq(13)(%s,%s)'%(i,j))
# 14. symmetric solution 방지
for a in range(1, numDistricts):
model.addConstr(
quicksum(df_pop_temp.loc[df_pop_temp['code']==i, 'weighted_pop'].values[0]*Y[i,a] for i in li_code_temp) >=
quicksum(df_pop_temp.loc[df_pop_temp['code']==i, 'weighted_pop'].values[0]*Y[i,a+1] for i in li_code_temp), name='Eq(14)(%s)'%(a))
# 15. 최소배경인구수
for a in range(1, numDistricts+1):
model.addConstr(
quicksum(df_pop_temp.loc[df_pop_temp['code']==i, 'weighted_pop'].values[0]*Y[i,a] for i in li_code_temp) >= minPop, name='Eq(15)(%s)'%(a))
# 16. 최소 자체충족률
for a in range(1, numDistricts+1):
numerator = quicksum(df_use_temp.loc[i,j] * Beta[i,j,a] for i in li_code_temp for j in li_code_temp)
denominator = quicksum(df_use_temp.loc[i,j] * Y[i,a] for i in li_code_temp for j in li_code_temp)
model.addConstr(numerator >= minRI * denominator, name='Eq(16)(%s)'%(a))
# 17. 최대 병합기준거리
for i in li_code_temp:
# numerator = quicksum(df_use_gw.loc[i,j] * T[i,j] * df_dist_gw.loc[i,j] for j in li_code_gw)
# denominator = quicksum(df_use_gw.loc[i,k] * T[i,k] for k in li_code_gw if i != k)
# model.addConstr(numerator <= maxDist * denominator, name='Eq(10)(%s)'%(i))
numerator = []
denominator = []
for j in li_code_temp:
numerator += [(df_use_temp.loc[i,j]*df_dist_temp.loc[i,j], T[i,j])]
for k in li_code_temp:
if i != k:
denominator += [(df_use_temp.loc[i,k], T[i,k])]
NUM_expr = LinExpr(numerator)
DEN_expr = LinExpr(denominator)
model.addConstr(NUM_expr <= DEN_expr * maxDist, name='Eq(17)(%s)'%(i))
# 18. 시드지역끼리 같은 진료권 안이루도록
for i in li_code_temp:
for j in li_code_temp:
if (i in li_seed) and (j in li_seed) and (i!=j):
model.addConstr(T[i,j]==0, name='Eq(18)(%s,%s)'%(i,j))
model.update()
model.optimize()
return model# parameters
minPop=130000
minRI=0.4
maxDist=120
numCities = 14
numDistricts = 6
refer_meanRI = 0.7371670094061683
refer_maxDIST = 85.32616181211344
li_code_temp = [35010, 35020, 35030, 35040, 35050, 35060, 35310, 35320, 35330, 35340, 35350, 35360, 35370, 35380]
dict_pop_temp = {'code': {0: 35010, 1: 35020, 2: 35030, 3: 35040, 4: 35050, 5: 35060, 6: 35310, 7: 35320, 8: 35330, 9: 35340, 10: 35350, 11: 35360, 12: 35370, 13: 35380}, 'weighted_pop': {0: 631228, 1: 269966, 2: 284919, 3: 120888, 4: 90606, 5: 98678, 6: 100344, 7: 31182, 8: 28869, 9: 26520, 10: 34353, 11: 32965, 12: 65045, 13: 61373}}
df_pop_temp = pd.DataFrame(dict_pop_temp)
dict_use_temp = {35010: {35010: 42028.79000000001, 35020: 2757.3, 35030: 2226.37, 35040: 2788.1, 35050: 1951.3, 35060: 2926.7000000000003, 35310: 5919.999999999999, 35320: 1481.7400000000002, 35330: 201.73, 35340: 1120.35, 35350: 1862.39, 35360: 552.9699999999999, 35370: 664.8099999999998, 35380: 1375.6899999999998}, 35020: {35010: 144.0, 35020: 12159.46, 35030: 208.4, 35040: 36.65, 35050: 8.29, 35060: 108.63, 35310: 22.92, 35320: 6.29, 35330: 2.58, 35340: 10.0, 35350: 9.9, 35360: 6.32, 35370: 10.72, 35380: 45.63}, 35030: {35010: 445.38, 35020: 2284.2200000000003, 35030: 18033.97, 35040: 310.04, 35050: 60.18000000000001, 35060: 1513.6899999999998, 35310: 264.85, 35320: 37.68, 35330: 19.32, 35340: 27.210000000000004, 35350: 30.12, 35360: 33.83, 35370: 82.91999999999999, 35380: 469.76}, 35040: {35010: 182.76, 35020: 42.870000000000005, 35030: 57.66, 35040: 9640.51, 35050: 5.61, 35060: 42.63, 35310: 18.05, 35320: 1.0, 35330: 0.0, 35340: 4.0, 35350: 6.39, 35360: 308.3599999999999, 35370: 651.95, 35380: 267.54}, 35050: {35010: 50.04, 35020: 3.53, 35030: 9.0, 35040: 8.32, 35050: 2970.92, 35060: 2.32, 35310: 13.37, 35320: 3.0, 35330: 2.0, 35340: 140.79999999999998, 35350: 106.65999999999998, 35360: 98.81, 35370: 2.0, 35380: 2.0}, 35060: {35010: 128.49, 35020: 34.61, 35030: 58.48, 35040: 119.99, 35050: 4.29, 35060: 4869.849999999999, 35310: 22.58, 35320: 6.0, 35330: 2.0, 35340: 3.29, 35350: 2.0, 35360: 0.29, 35370: 8.48, 35380: 54.45}, 35310: {35010: 434.75999999999993, 35020: 5.0, 35030: 225.58, 35040: 57.0, 35050: 9.0, 35060: 41.78, 35310: 539.87, 35320: 3.0, 35330: 1.0, 35340: 3.0, 35350: 9.68, 35360: 4.0, 35370: 2.0, 35380: 17.0}, 35320: {35010: 6.0600000000000005, 35020: 0.0, 35030: 2.0, 35040: 0.0, 35050: 2.0, 35060: 2.0, 35310: 0.0, 35320: 568.0799999999999, 35330: 6.0, 35340: 104.87, 35350: 0.0, 35360: 0.0, 35370: 0.0, 35380: 0.0}, 35330: {35010: 0.0, 35020: 0.0, 35030: 0.0, 35040: 0.0, 35050: 0.0, 35060: 0.0, 35310: 0.0, 35320: 0.0, 35330: 8.29, 35340: 0.0, 35350: 0.0, 35360: 0.0, 35370: 0.0, 35380: 0.0}, 35340: {35010: 0.0, 35020: 0.0, 35030: 0.0, 35040: 0.0, 35050: 0.0, 35060: 0.0, 35310: 0.0, 35320: 0.0, 35330: 0.0, 35340: 20.84, 35350: 0.0, 35360: 0.0, 35370: 0.0, 35380: 0.0}, 35350: {35010: 5.0, 35020: 1.0, 35030: 2.53, 35040: 2.29, 35050: 2.0, 35060: 0.0, 35310: 3.0, 35320: 8.39, 35330: 0.0, 35340: 2.0, 35350: 458.9599999999999, 35360: 1.0, 35370: 0.0, 35380: 0.0}, 35360: {35010: 0.0, 35020: 1.0, 35030: 1.0, 35040: 3.0, 35050: 12.0, 35060: 0.0, 35310: 1.0, 35320: 0.0, 35330: 0.0, 35340: 0.0, 35350: 13.0, 35360: 741.73, 35370: 0.0, 35380: 0.0}, 35370: {35010: 26.06, 35020: 23.82, 35030: 6.19, 35040: 96.54, 35050: 5.48, 35060: 5.29, 35310: 2.0, 35320: 4.61, 35330: 1.0, 35340: 1.0, 35350: 0.0, 35360: 2.29, 35370: 2769.14, 35380: 16.09}, 35380: {35010: 109.71, 35020: 116.43, 35030: 36.49, 35040: 197.21, 35050: 3.39, 35060: 70.09000000000002, 35310: 10.0, 35320: 0.0, 35330: 0.0, 35340: 0.0, 35350: 3.84, 35360: 8.0, 35370: 33.42, 35380: 4361.02}}
df_use_temp = pd.DataFrame(dict_use_temp)
dict_dist_temp = {35010: {35010: 0.0, 35020: 44.52413333333333, 35030: 42.373, 35040: 46.742983333333335, 35050: 59.5759, 35060: 35.01298333333333, 35310: 26.9813, 35320: 52.56841666666666, 35330: 85.99773333333333, 35340: 61.96315, 35350: 44.92885, 35360: 48.56876666666667, 35370: 70.30108333333334, 35380: 56.24048333333333}, 35020: {35010: 45.2927, 35020: 0.0, 35030: 37.15403333333333, 35040: 53.43578333333333, 35050: 87.82375, 35060: 27.7053, 35310: 56.78905, 35320: 73.60013333333333, 35330: 121.19601666666668, 35340: 84.35391666666666, 35350: 71.0732, 35360: 76.12906666666667, 35370: 56.3343, 35380: 45.05975}, 35030: {35010: 43.38583333333333, 35020: 40.326283333333336, 35030: 0.0, 35040: 58.91171666666666, 35050: 72.86541666666666, 35060: 30.055616666666666, 35310: 37.25516666666667, 35320: 61.84985, 35330: 102.66651666666668, 35340: 73.88793333333334, 35350: 61.47445, 35360: 71.06173333333334, 35370: 66.8133, 35380: 50.65906666666667}, 35040: {35010: 43.77945, 35020: 50.02911666666667, 35030: 55.704166666666666, 35040: 0.0, 35050: 77.2255, 35060: 34.005766666666666, 35310: 43.74908333333333, 35320: 69.61203333333333, 35330: 117.94523333333332, 35340: 85.035, 35350: 53.96576666666667, 35360: 48.21193333333333, 35370: 36.72926666666667, 35380: 37.199216666666665}, 35050: {35010: 59.32456666666667, 35020: 84.89921666666666, 35030: 75.3747, 35040: 82.29848333333334, 35050: 0.0, 35060: 71.19285, 35310: 49.38713333333333, 35320: 54.51788333333333, 35330: 96.03193333333331, 35340: 42.2841, 35350: 31.550216666666667, 35360: 34.27113333333333, 35370: 66.66695, 35380: 103.86268333333334}, 35060: {35010: 30.571316666666668, 35020: 31.4678, 35030: 30.70893333333333, 35040: 33.00241666666667, 35050: 72.13995, 35060: 0.0, 35310: 39.004, 35320: 62.00945, 35330: 104.90475, 35340: 74.55806666666666, 35350: 54.96295, 35360: 58.83785, 35370: 48.60381666666667, 35380: 30.07175}, 35310: {35010: 27.064066666666665, 35020: 38.95643333333334, 35030: 38.43031666666667, 35040: 48.55133333333333, 35050: 51.62, 35060: 31.362666666666662, 35310: 0.0, 35320: 48.18971666666667, 35330: 84.77473333333333, 35340: 52.91125, 35350: 39.53225, 35360: 60.018233333333335, 35370: 70.56418333333333, 35380: 52.9256}, 35320: {35010: 52.96565, 35020: 70.49796666666667, 35030: 65.29235, 35040: 74.99455, 35050: 55.87908333333333, 35060: 62.89711666666667, 35310: 39.00651666666667, 35320: 0.0, 35330: 56.31251666666667, 35340: 32.104083333333335, 35350: 40.7326, 35360: 72.74965, 35370: 99.70438333333334, 35380: 86.0989}, 35330: {35010: 88.43098333333333, 35020: 113.80421666666666, 35030: 101.77915, 35040: 118.03513333333332, 35050: 92.95226666666667, 35060: 108.1053, 35310: 84.70956666666666, 35320: 54.5712, 35330: 0.0, 35340: 53.6343, 35350: 85.44848333333333, 35360: 110.67605, 35370: 147.45823333333334, 35380: 133.90705}, 35340: {35010: 59.40121666666667, 35020: 76.78688333333334, 35030: 71.79685, 35040: 83.83223333333333, 35050: 44.86665, 35060: 70.37235, 35310: 45.70868333333333, 35320: 29.79123333333333, 35330: 51.47096666666667, 35340: 0.0, 35350: 52.39485, 35360: 61.31121666666667, 35370: 93.63591666666666, 35380: 94.54978333333334}, 35350: {35010: 46.0089, 35020: 68.54635, 35030: 68.17461666666667, 35040: 55.5394, 35050: 32.17288333333333, 35060: 55.16191666666667, 35310: 37.19915, 35320: 41.59798333333333, 35330: 87.53696666666667, 35340: 49.13341666666667, 35350: 0.0, 35360: 31.784683333333337, 35370: 78.29795, 35380: 74.04198333333333}, 35360: {35010: 52.809583333333336, 35020: 72.11836666666666, 35030: 74.40371666666667, 35040: 50.54185, 35050: 32.64991666666667, 35060: 58.8617, 35310: 57.8024, 35320: 72.63706666666667, 35330: 108.87253333333334, 35340: 58.91216666666666, 35350: 31.571716666666667, 35360: 0.0, 35370: 53.40566666666667, 35380: 74.63881666666667}, 35370: {35010: 71.23665, 35020: 57.73095, 35030: 68.56301666666667, 35040: 40.31503333333333, 35050: 67.37736666666666, 35060: 46.16868333333333, 35310: 72.73261666666667, 35320: 98.10201666666669, 35330: 143.794, 35340: 103.6943, 35350: 78.763, 35360: 53.8723, 35370: 0.0, 35380: 39.87043333333333}, 35380: {35010: 54.04036666666666, 35020: 42.01853333333333, 35030: 47.25841666666667, 35040: 38.2513, 35050: 93.46571666666668, 35060: 25.035, 35310: 63.15193333333333, 35320: 86.30898333333333, 35330: 136.12623333333335, 35340: 98.5957, 35350: 70.38773333333333, 35360: 72.00943333333333, 35370: 42.64073333333333, 35380: 0.0}}
df_dist_temp = pd.DataFrame(dict_dist_temp)
dict_adjacency_temp = {35010: {35010: 0, 35020: 0, 35030: 1, 35040: 0, 35050: 0, 35060: 1, 35310: 1, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 0, 35380: 0}, 35020: {35010: 0, 35020: 0, 35030: 1, 35040: 0, 35050: 0, 35060: 1, 35310: 0, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 0, 35380: 0}, 35030: {35010: 1, 35020: 1, 35030: 0, 35040: 0, 35050: 0, 35060: 1, 35310: 1, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 0, 35380: 0}, 35040: {35010: 0, 35020: 0, 35030: 0, 35040: 0, 35050: 0, 35060: 1, 35310: 1, 35320: 0, 35330: 0, 35340: 0, 35350: 1, 35360: 1, 35370: 1, 35380: 1}, 35050: {35010: 0, 35020: 0, 35030: 0, 35040: 0, 35050: 0, 35060: 0, 35310: 0, 35320: 0, 35330: 0, 35340: 1, 35350: 1, 35360: 1, 35370: 0, 35380: 0}, 35060: {35010: 1, 35020: 1, 35030: 1, 35040: 1, 35050: 0, 35060: 0, 35310: 1, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 0, 35380: 1}, 35310: {35010: 1, 35020: 0, 35030: 1, 35040: 1, 35050: 0, 35060: 1, 35310: 0, 35320: 1, 35330: 0, 35340: 0, 35350: 1, 35360: 0, 35370: 0, 35380: 0}, 35320: {35010: 0, 35020: 0, 35030: 0, 35040: 0, 35050: 0, 35060: 0, 35310: 1, 35320: 0, 35330: 1, 35340: 1, 35350: 1, 35360: 0, 35370: 0, 35380: 0}, 35330: {35010: 0, 35020: 0, 35030: 0, 35040: 0, 35050: 0, 35060: 0, 35310: 0, 35320: 1, 35330: 0, 35340: 1, 35350: 0, 35360: 0, 35370: 0, 35380: 0}, 35340: {35010: 0, 35020: 0, 35030: 0, 35040: 0, 35050: 1, 35060: 0, 35310: 0, 35320: 1, 35330: 1, 35340: 0, 35350: 1, 35360: 0, 35370: 0, 35380: 0}, 35350: {35010: 0, 35020: 0, 35030: 0, 35040: 1, 35050: 1, 35060: 0, 35310: 1, 35320: 1, 35330: 0, 35340: 1, 35350: 0, 35360: 1, 35370: 0, 35380: 0}, 35360: {35010: 0, 35020: 0, 35030: 0, 35040: 1, 35050: 1, 35060: 0, 35310: 0, 35320: 0, 35330: 0, 35340: 0, 35350: 1, 35360: 0, 35370: 0, 35380: 0}, 35370: {35010: 0, 35020: 0, 35030: 0, 35040: 1, 35050: 0, 35060: 0, 35310: 0, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 0, 35380: 1}, 35380: {35010: 0, 35020: 0, 35030: 0, 35040: 1, 35050: 0, 35060: 1, 35310: 0, 35320: 0, 35330: 0, 35340: 0, 35350: 0, 35360: 0, 35370: 1, 35380: 0}}
df_adjacency_temp = pd.DataFrame(dict_adjacency_temp)
dict_neighbors = {35010: [35030, 35060, 35310], 35020: [35030, 35060], 35030: [35010, 35020, 35060, 35310], 35040: [35060, 35310, 35350, 35360, 35370, 35380], 35050: [35340, 35350, 35360], 35060: [35010, 35020, 35030, 35040, 35310, 35380], 35310: [35010, 35030, 35040, 35060, 35320, 35350], 35320: [35310, 35330, 35340, 35350], 35330: [35320, 35340], 35340: [35050, 35320, 35330, 35350], 35350: [35040, 35050, 35310, 35320, 35340, 35360], 35360: [35040, 35050, 35350], 35370: [35040, 35380], 35380: [35040, 35060, 35370]}
li_seed = [35010, 35020, 35030]
weight_combinations = [(round(weight1, 1), round(1 - weight1, 1)) for weight1 in [i * 0.1 for i in range(11)]] # 조합
dict_res = {}
for weight_comb in weight_combinations:
weight1, weight2 = weight_comb[0], weight_comb[1]
opt_model = weighted_sum_optimize(li_code_temp, df_pop_temp, df_use_temp, df_dist_temp, df_adjacency_temp, dict_neighbors, li_seed,
numCities, numDistricts, refer_meanRI, refer_maxDIST, weight1, weight2,
minPop=150000, minRI=0.4, maxDist=60)0 -
Thanks for the code. It seems that I also need to run this in a Jupyter notebook? Have you tried running it as a Python script? Is there anything interesting in the Jupyter Log that points to a clue? Are you also using WSL?
Maybe memory is limited by the Jupyter notebook configuration (by default) which is different for different OS(?)
Cheers,
David0
Please sign in to leave a comment.
Comments
3 comments