Skip to main content

Kernel Dying Unexpectedly in Windows VSCode with Gurobipy

Awaiting user input

Comments

3 comments

  • David Torres Sanchez
    Gurobi Staff Gurobi Staff

    Hi Huijae,

    Have you profiled the failing cases? Can you share a minimal reproducible example?

    Cheers, 
    David

    0
  • Huijae Kim
    First Comment
    First Question

    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 threads

    And 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
  • David Torres Sanchez
    Gurobi Staff Gurobi Staff

    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, 
    David

    0

Please sign in to leave a comment.