included fastapi
This commit is contained in:
		
							
								
								
									
										0
									
								
								backend/app/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								backend/app/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								backend/app/__pycache__/__init__.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								backend/app/__pycache__/__init__.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								backend/app/__pycache__/main.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								backend/app/__pycache__/main.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								backend/app/dependencies.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								backend/app/dependencies.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | import app.src | ||||||
| @@ -1,10 +1,15 @@ | |||||||
| from optimizer import solve_optimization | from src.optimizer import solve_optimization | ||||||
| from optimizer import landmark | from src.optimizer import landmark | ||||||
|  | from fastapi import FastAPI | ||||||
| 
 | 
 | ||||||
| def main(): | app = FastAPI() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @app.get("/optimize/{max_steps}/{print_to_console}") | ||||||
|  | def main(max_steps: int, print_to_console: bool): | ||||||
|      |      | ||||||
|     # CONSTRAINT TO RESPECT MAX NUMBER OF STEPS |     # CONSTRAINT TO RESPECT MAX NUMBER OF STEPS | ||||||
|     max_steps = 16 |     #max_steps = 16 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     # Initialize all landmarks (+ start and goal). Order matters here |     # Initialize all landmarks (+ start and goal). Order matters here | ||||||
| @@ -18,8 +23,11 @@ def main(): | |||||||
|     landmarks.append(landmark("arrivée", -1, (0, 0))) |     landmarks.append(landmark("arrivée", -1, (0, 0))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     visiting_order = solve_optimization(landmarks, max_steps, True) |     visiting_order = solve_optimization(landmarks, max_steps, print_to_console) | ||||||
| 
 | 
 | ||||||
|  |     #return visiting_order | ||||||
|  | 
 | ||||||
|  |     return("max steps :", max_steps, "\n", visiting_order) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
							
								
								
									
										0
									
								
								backend/app/src/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								backend/app/src/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								backend/app/src/__pycache__/__init__.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								backend/app/src/__pycache__/__init__.cpython-310.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -10,7 +10,6 @@ class landmark : | |||||||
|         self.attractiveness = attractiveness |         self.attractiveness = attractiveness | ||||||
|         self.loc = loc |         self.loc = loc | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # Convert the solution of the optimization into the list of edges to follow. Order is taken into account | # Convert the solution of the optimization into the list of edges to follow. Order is taken into account | ||||||
| def untangle(resx: list) : | def untangle(resx: list) : | ||||||
|     N = len(resx)                   # length of res |     N = len(resx)                   # length of res | ||||||
| @@ -43,6 +42,7 @@ def untangle(resx: list) : | |||||||
| def print_res(res, landmarks: list, P) : | def print_res(res, landmarks: list, P) : | ||||||
|     X = abs(res.x) |     X = abs(res.x) | ||||||
|     order = untangle(X) |     order = untangle(X) | ||||||
|  |     things = [] | ||||||
| 
 | 
 | ||||||
|     """N = int(np.sqrt(len(X))) |     """N = int(np.sqrt(len(X))) | ||||||
|     for i in range(N): |     for i in range(N): | ||||||
| @@ -59,11 +59,12 @@ def print_res(res, landmarks: list, P) : | |||||||
| 
 | 
 | ||||||
|     for idx in order :  |     for idx in order :  | ||||||
|         print('- ' + landmarks[idx].name) |         print('- ' + landmarks[idx].name) | ||||||
|  |         things.append(landmarks[idx].name) | ||||||
| 
 | 
 | ||||||
|     steps = path_length(P, abs(res.x)) |     steps = path_length(P, abs(res.x)) | ||||||
|     print("\nSteps walked : " + str(steps)) |     print("\nSteps walked : " + str(steps)) | ||||||
| 
 | 
 | ||||||
|     return order |     return things | ||||||
| 
 | 
 | ||||||
| # Checks for cases of circular symmetry in the result | # Checks for cases of circular symmetry in the result | ||||||
| def has_circle(resx: list) : | def has_circle(resx: list) : | ||||||
| @@ -260,7 +261,7 @@ def path_length(P: list, resx: list) : | |||||||
|     return np.dot(P, resx) |     return np.dot(P, resx) | ||||||
| 
 | 
 | ||||||
| # Main optimization pipeline | # Main optimization pipeline | ||||||
| def solve_optimization (landmarks, max_steps, printing) : | def solve_optimization (landmarks, max_steps, printing_console) : | ||||||
| 
 | 
 | ||||||
|     # SET CONSTRAINTS FOR INEQUALITY |     # SET CONSTRAINTS FOR INEQUALITY | ||||||
|     c, A_ub, b_ub = init_ub_dist(landmarks, max_steps)              # Add the distances from each landmark to the other |     c, A_ub, b_ub = init_ub_dist(landmarks, max_steps)              # Add the distances from each landmark to the other | ||||||
| @@ -307,12 +308,11 @@ def solve_optimization (landmarks, max_steps, printing) : | |||||||
|             raise ValueError("No solution could be found, even when increasing max_steps using the heuristic") |             raise ValueError("No solution could be found, even when increasing max_steps using the heuristic") | ||||||
|      |      | ||||||
| 
 | 
 | ||||||
|     if printing is True : |     if printing_console is True : | ||||||
|         if i != 0 : |         if i != 0 : | ||||||
|             print(f"Neded to recompute paths {i} times because of unconnected loops...") |             print(f"Neded to recompute paths {i} times because of unconnected loops...") | ||||||
|             X = print_res(res, landmarks, P) |             X = print_res(res, landmarks, P) | ||||||
|             return X |             return X | ||||||
| 
 |  | ||||||
|     else : |     else : | ||||||
|         return untangle(res.x) |         return untangle(res.x) | ||||||
| 
 | 
 | ||||||
		Reference in New Issue
	
	Block a user