This repository contains the CI-Pack, a collection of algorithmic solutions for Computational Intelligence labs at PoliTo, covering optimization, search, and regression problems.
The Set Cover Problem is a classical NP-hard problem in combinatorial optimization. The problem is defined as follows: given a set of elements U and a collection of subsets S of U, find the smallest subset of S that covers all elements in U. I implemented a greedy strategy and Local Search algorithms, such as Hill Climbing and Simulated Annealing, to solve the Set Cover Problem.
The Traveling Salesman Problem is another classical NP-hard problem in combinatorial optimization. The problem is defined as follows: given a list of cities and the distances between each pair of cities, find the shortest possible route that visits each city exactly once and returns to the origin city. I implemented a greedy strategy and evolutionary algorithms, based on Inver-Over crossover and Inversion mutation, to solve the Traveling Salesman Problem.
The Shortest Path Problem is a fundamental problem in graph theory and network routing. The problem is defined as follows: given a graph G and a source node s, find the shortest path from s to all other nodes in G. I implemented the A* search algorithm to solve the Shortest Path Problem.
The 8-Puzzle Problem is a classical problem in artificial intelligence and search algorithms. The problem is defined as follows: given a 3x3 board with 8 tiles and one empty space, move the tiles to reach the goal state. I implemented the A* search algorithm with a custom heuristic to solve the 8-Puzzle Problem.
Symbolic Regression is a machine learning task that aims to find a mathematical expression that best fits a given dataset. I implemented Genetic Programming to evolve symbolic expressions that approximate the target function.