from pyomo.opt import SolverFactory from pyomo.opt import SolverStatus, TerminationCondition from scipy import sparse from getParam import getParam from getDemand import getDemand ### SETTING UP the DATA PATH and Directories curdir = os.getcwd() data_path = curdir + "\\Data\\SiouxFalls_net.txt" partition_network_path = curdir + "\\Data\\SFOutfile.csv" node_pos_path = curdir + "\\Data\\SiouxFalls_Nodes_Pos.txt" od_pair_data = curdir + "\\Data\\SiouxFalls_OD.txt" ### GETTING LINK and TRAVELTIME DATA Param, Links, LinkNum, NodeSet, From, To = getParam(data_path) od_pair_demand, od_pair_list, Origin_set, Destination_set, qrs = getDemand( od_pair_data) ### DEFINING the CAP RATIO in BPR FUNCT bc = Param['B'] / Param['Capacity (veh/h)']**4 ###DEFING the FLOW ORIGINATED FROM EVERY NODE: model = ConcreteModel() model.nodes = Set(initialize=NodeSet) model.arcs = Set(initialize=Links) model.origins = Set(initialize=Origin_set) model.destinations = Set(initialize=Destination_set) model.x = Var(model.arcs * model.origins, within=NonNegativeReals) def obj_rule(model): first_term = sum(Param['Free Flow Time (min)'][e] *
def __init__(self, data_path, od_pair_data): self.Param, self.Links, self.LinkNum, self.NodeSet, self.From, self.To = getParam( data_path) self.od_pair_demand, self.od_pair_list, self.Origin_set, self.Destination_set, self.qrs = getDemand( od_pair_data) self.bc = self.Param['B'] / self.Param['Capacity (veh/h)']**4
for ee in cbl[c]: for oo in os: la[ee,oo,c] = 1 x[ee,oo] = 1000 total_link_flow = {} bl_set = set() for c in range(1,clust_num+1): bl_set.update(cbl[c]) param, L, l2, l3, l4,l5 = getParam(data_path) A, B, C, D, E = getDemand(od_pair_data) bc =param['B']/param['Capacity (veh/h)']**4 tstt = [] xx = [] etta = 0.001 tstt_ = 10000000000 for iteration in range(1,400): # if iteration>1: # etta = 0.00755 # 0.008-3*iteration/100000 print("etta is " , etta) ADMM_Instance=Pricing(clust_num,x,la,etta) ADMM_Instance.updating_lagrangian_price()
#Homemade functions from getParam import getParam from getDemand import getDemand from objRule import objRule from flowBalRule import flowBalRule from flowLinkRule import flowLinkRule from costLinkRule import costLinkRule filenameNet = "Data/Anaheim/Anaheim_net.tntp" param, A, M, N, L = getParam(filenameNet) filenameTrip = "Data/Anaheim/Anaheim_trips.tntp" d, OD_pair = getDemand(filenameTrip, L) # # Model definitions # In[3]: model = ConcreteModel() model.links = RangeSet(0, len(A) - 1, 1) #Set of links model.od = RangeSet(0, M.shape[1] - 1, 1) #Set of OD pairs model.nodes = RangeSet(0, M.shape[0] - 1, 1) #Set of Nodes model.f = Var(model.links, within=NonNegativeReals) #set of link flows model.fk = Var(model.links, model.od, within=NonNegativeReals) #Set link-OD flows model.c = Var(model.links, within=NonNegativeReals) #Set of link costs