better sym breaking
Some checks failed
Build and deploy the backend to staging / Build and push image (pull_request) Successful in 2m7s
Run linting on the backend code / Build (pull_request) Successful in 27s
Run testing on the backend code / Build (pull_request) Failing after 1m11s
Build and deploy the backend to staging / Deploy to staging (pull_request) Successful in 23s
Some checks failed
Build and deploy the backend to staging / Build and push image (pull_request) Successful in 2m7s
Run linting on the backend code / Build (pull_request) Successful in 27s
Run testing on the backend code / Build (pull_request) Failing after 1m11s
Build and deploy the backend to staging / Deploy to staging (pull_request) Successful in 23s
This commit is contained in:
parent
dba988629d
commit
14385342cc
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user