code: def kcenter(I,J,c,k):
      
  
      model = Model("k-center")
      z = model.addVar(vtype="C", name="z")
      x,y = {},{}
  
      for j in J:
          y[j] = model.addVar(vtype="B", name="y(%s)"%j)
          for i in I:
              x[i,j] = model.addVar(vtype="B", name="x(%s,%s)"%(i,j))
  
  
      for i in I:
          model.addCons(quicksum(x[i,j] for j in J) == 1, "Assign(%s)"%i)
  
          for j in J:
              model.addCons(x[i,j] <= y[j], "Strong(%s,%s)"%(i,j))
              model.addCons(c[i,j]*x[i,j] <= z, "Max_x(%s,%s)"%(i,j))
  
      model.addCons(quicksum(y[j] for j in J) == k, "Facilities")
  
      model.setObjective(z, "minimize")
      model.data = x,y
  
      return model
docs: kcenter -- minimize the maximum travel cost from customers to k facilities.
      Parameters:
          - I: set of customers
          - J: set of potential facilities
          - c[i,j]: cost of servicing customer i from facility j
          - k: number of facilities to be used
      Returns a model, ready to be solved.