{"id":24598511,"url":"https://github.com/kikoveiga/feup-ia1","last_synced_at":"2026-05-06T10:32:03.708Z","repository":{"id":231791714,"uuid":"761163817","full_name":"kikoveiga/feup-ia1","owner":"kikoveiga","description":"Artificial Intelligence (IA) First Project (2023/2024): BSc in Informatics and Computing Engineering @ FEUP","archived":false,"fork":false,"pushed_at":"2024-04-03T16:41:17.000Z","size":235,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-20T21:30:38.363Z","etag":null,"topics":["feup","feup-ia","feup-leic","genetic-algorithms","hill-climbing","numpy","pandas","python","simulated-annealing","tabu-search"],"latest_commit_sha":null,"homepage":"https://sigarra.up.pt/feup/en/ucurr_geral.ficha_uc_view?pv_ocorrencia_id=520334","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kikoveiga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-21T11:07:53.000Z","updated_at":"2024-12-13T02:17:26.000Z","dependencies_parsed_at":"2024-04-06T00:44:50.443Z","dependency_job_id":null,"html_url":"https://github.com/kikoveiga/feup-ia1","commit_stats":null,"previous_names":["kikoveiga/feup-ia1"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kikoveiga/feup-ia1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikoveiga%2Ffeup-ia1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikoveiga%2Ffeup-ia1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikoveiga%2Ffeup-ia1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikoveiga%2Ffeup-ia1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kikoveiga","download_url":"https://codeload.github.com/kikoveiga/feup-ia1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikoveiga%2Ffeup-ia1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32689096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feup","feup-ia","feup-leic","genetic-algorithms","hill-climbing","numpy","pandas","python","simulated-annealing","tabu-search"],"created_at":"2025-01-24T12:16:52.909Z","updated_at":"2026-05-06T10:32:03.679Z","avatar_url":"https://github.com/kikoveiga.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IA1\n\n## Introduction\n\nThis is the first Practical Assignment for the Artificial Intelligence course (IA) 2023/2024 @ FEUP. For this project, we chose the topic **Delivery Scheduling** (3C), an Optimization Problem which description can be found [here](Description.pdf).\n\nOur group is *Group_A1_44*, composed of:\n- João Mendes Silva Belchior (up202108777@up.pt)\n- José Francisco Reis Pedreiras Neves Veiga (up202108753@up.pt)\n- Pedro Vidal Marcelino (up202108754@up.pt)\n\n## Execution\n\nThis project was developed using Python and some external libraries like `numpy` and `pandas`. To run the project, you need to have Python installed on your machine. To install the required libraries, you can run the following command:\n\n```bash\npip install numpy pandas\n```\n\nThen, just run the main file inside the `src` folder:\n\n```bash\npython3 main.py\n```\n\nWe also used typing hints in our code, and checked the integrity of the code using the library `mypy`. It can be installed with `pip` like the other libraries, and used as follows:\n\n```bash\nmypy src/\n```\n\nNote that this is not mandatory, but it can help in understanding the code and finding some typing errors.\n\nAfter, running the main file, the user arrives at the main menu, where he can choose between the following options:\n\n![main menu](resources/main_menu.png)\n\nInside an algorithm/ heuristic menu, the user can choose its parameters:\n\n![hill climbing menu](resources/hill_menu.png)\n\nThe list of packages and the best solution found are nicely displayed as follows:\n\n![solution](resources/solution.png)\n\n- `X` represents the starting point of the vehicle.\n- The numbers represent each package, and its color dependes on the type.\n\n## Problem Definition\n\nThis project has as its objective to optimize the delivery of packages from a starting point (0,0) to various destinations, optimizing the travel costs while adhering to each package type's special needs.\nIt can be succintly described as follows.\n\n### Scenario\n\nThere are 3 different types of packages: **fragile**, **normal** and **urgent**.\n\n* **Fragile** packages have a change of getting damaged by kilometer traveled.\n* **Urgent** packages have a penalty associated with delays.\n* Each kilometer traveled incurs a fixed cost.\n\n### Objective\n\nFor an algorithm to be considered successful it needs to:\n\n* **Maintain a high reputation** by keeping packages from breaking and delivering urgent packages on time.\n* **Reduce the total cost** which includes penalties from late deliveries, packages broken and distance travalled.\n\n\n### Constraints\n\nFor this project the world will always follow some rules:\n\n* Only one vehicle is available.\n* Delivery locations are specified by a pair of coordinates (x,y).\n* There are always direct routes between all delivery places.\n* The vehicle travels at a constant speed of 60km/hour\n* The cost per kilometer is fixed.\n* The delivery staff takes 0 seconds to deliver each package.\n\n###  Solution Representation\n\nThe solution can be represented as a list of integers representing the indexes of each package on the original list of deliveries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkikoveiga%2Ffeup-ia1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkikoveiga%2Ffeup-ia1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkikoveiga%2Ffeup-ia1/lists"}