backend/new-overpass #52
| @@ -35,6 +35,7 @@ def test_turckheim(client, request):    # pylint: disable=redefined-outer-name | ||||
|             } | ||||
|         ) | ||||
|     result = response.json() | ||||
|     print(result) | ||||
|     landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -35,7 +35,7 @@ class Optimizer: | ||||
|         """ | ||||
|         Initialize the objective function coefficients and inequality constraints. | ||||
|         -> Adds 1 row of constraints | ||||
|         -> Pre-allocates A_ub for the rest of the computations with 2*L rows | ||||
|         -> Pre-allocates A_ub for the rest of the computations with L + (L*L-L)/2 rows | ||||
|  | ||||
|         This function computes the distances between all landmarks and stores | ||||
|         their attractiveness to maximize sightseeing. The goal is to maximize  | ||||
| @@ -55,8 +55,8 @@ class Optimizer: | ||||
|         c = np.zeros(L, dtype=np.int16) | ||||
|  | ||||
|         # Coefficients of inequality constraints (left-hand side) | ||||
|         A_ub = np.zeros((2*L, L*L), dtype=np.int16) | ||||
|         b_ub = np.zeros(2*L, dtype=np.int16) | ||||
|         A_ub = np.zeros((L + int((L*L-L)/2), L*L), dtype=np.int16) | ||||
|         b_ub = np.zeros(L + int((L*L-L)/2), dtype=np.int16) | ||||
|  | ||||
|         # Fill in first row | ||||
|         b_ub[0] = round(max_time*self.overshoot) | ||||
| @@ -65,9 +65,9 @@ class Optimizer: | ||||
|             c[i] = -spot1.attractiveness | ||||
|             for j in range(i+1, L) : | ||||
|                 if i !=j : | ||||
|                     t = get_time(spot1.location, landmarks[j].location) + spot1.duration | ||||
|                     A_ub[0, i*L + j] = t | ||||
|                     A_ub[0, j*L + i] = t | ||||
|                     t = get_time(spot1.location, landmarks[j].location) | ||||
|                     A_ub[0, i*L + j] = t  + spot1.duration | ||||
|                     A_ub[0, j*L + i] = t + landmarks[j].duration | ||||
|  | ||||
|         # Expand 'c' to L*L for every decision variable | ||||
|         c = np.tile(c, L)      | ||||
| @@ -120,7 +120,7 @@ class Optimizer: | ||||
|         Generate constraints to prevent simultaneous travel between two landmarks | ||||
|         in both directions. Constraint to not have d14 and d41 simultaneously.  | ||||
|         Does not prevent cyclic paths with more elements | ||||
|         -> Adds L rows of constraints (some of which might be zero) | ||||
|         -> Adds (L*L-L)/2 rows of constraints (some of which might be zero) | ||||
|  | ||||
|         Args: | ||||
|             L (int): Number of landmarks. | ||||
| @@ -136,7 +136,7 @@ class Optimizer: | ||||
|  | ||||
|         # A = np.zeros((len(up_ind_x[1:]),L*L), dtype=np.int8) | ||||
|         # Fill-in rows L to 2*L-1 | ||||
|         for i in range(L) : | ||||
|         for i in range(int((L*L-L)/2)) : | ||||
|             if up_ind_x[i] != up_ind_y[i] : | ||||
|                 A[L+i, up_ind_x[i]*L + up_ind_y[i]] = 1 | ||||
|                 A[L+i, up_ind_y[i]*L + up_ind_x[i]] = 1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user