예제 #1
0
    def __init__(self,
                 G,
                 max_res,
                 min_res,
                 REF_forward=None,
                 REF_backward=None,
                 preprocess=False,
                 direction='both'):
        # Check inputs and preprocess G unless option disabled
        self.G = check_and_preprocess(preprocess, G, max_res, min_res,
                                      REF_forward, REF_backward, direction,
                                      __name__)
        self.direc_in = direction
        self.max_res, self.min_res = max_res, min_res
        # init current forward and backward labels
        self.Label = {
            'forward': Label(0, 'Source', np.zeros(G.graph['n_res']),
                             ['Source']),
            'backward': Label(0, 'Sink', max_res, ['Sink'])
        }
        # init forward and backward unprocessed labels
        self.unprocessed = {'forward': {}, 'backward': {}}
        # init final path
        self.finalpath = {'forward': ["Source"], 'backward': ["Sink"]}

        # If given, set REFs for dominance relations and feasibility checks
        if REF_forward and REF_backward:
            Label._REF_forward = REF_forward
            Label._REF_backward = REF_backward
예제 #2
0
파일: grasp.py 프로젝트: aashish24/cspy
 def __init__(self,
              G,
              max_res,
              min_res,
              REF=None,
              preprocess=False,
              max_iter=100,
              max_localiter=10,
              alpha=0.2):
     # Check input graph and parameters
     G = check_and_preprocess(preprocess, G, max_res, min_res, REF)
     # Input parameters
     self.G = G
     self.max_res = max_res
     self.min_res = min_res
     self.max_iter = max_iter
     self.max_localiter = max_localiter
     self.alpha = alpha
     if REF:
         Path._REF = REF
     # Algorithm specific parameters
     self.it = 0
     self.best = None
     self.stop = False
     self.nodes = self.G.nodes()
예제 #3
0
    def __init__(self, G, max_res, min_res, REF, preprocess):
        # Check input graph and parameters
        G = check_and_preprocess(preprocess, G, max_res, min_res, REF)
        # Input parameters
        self.G = G
        self.max_res = max_res
        self.min_res = min_res
        self.path = None
        self.best_path = None
        self.path_edges = None

        if REF:
            Path._REF = REF
예제 #4
0
    def __init__(self, G, max_res, min_res, REF=None, preprocess=False):
        # Check input graph and parameters
        self.G = check_and_preprocess(preprocess, G, max_res, min_res, REF)
        # Input parameters
        self.max_res = max_res
        self.min_res = min_res
        # Algorithm specific parameters
        self.it = 0
        self.path = []
        self.stop = False
        self.neighbour = 'Source'
        self.neighbourhood = []
        self.tabu_edge = None
        self.edges_to_check = dict(self.G.edges())

        if REF:
            Path._REF = REF
예제 #5
0
    def __init__(self,
                 G,
                 max_res,
                 min_res,
                 REF=None,
                 preprocess=False,
                 return_G=False):
        # Check input graph and parameters
        self.G = check_and_preprocess(preprocess, G, max_res, min_res, REF)
        # Input parameters
        self.max_res = max_res
        self.min_res = min_res
        self.return_G = return_G
        # Algorithm specific parameters
        self.it = 0
        self.path = []
        self.stop = False
        self.predecessor_edges = []
        self.last_edge_removed = None
        self.edges_to_remove = dict(self.G.edges())

        if REF:
            Path._REF = REF