🚗 INGI Dakar 2K21 - Be the first one on the finish line ! 🚗

Overview

🚗 INGI Dakar 2K21 - Be the first one on the finish line ! 🚗

This year's first semester Club Info challenge will put you at the head of a car racing team. You will participate to the world's most famous racing contest, the INGI Dakar. Your goal is to build the best car, and to beat your opponents by reaching the furthest distance from the starting line.

Challenge statement

Each group will be put in charge of a car racing team. Ultimately, your goal is to reach the furthest distance from the starting line, with any of your cars. For this, you will have 6 generations of 20 cars. Each generation will be produced based on the previous one. Your job is thus to implement the algorithm that takes the previous generation of cars in argument, and that produces the next generation. Such an algorithm is called a genetic algorithm, for which a theoretical background is given hereafter.

Genetic algorithms

Genetic algorithms (GA) are inspired by the process of natural selection. They are used to resolve complex problems. They use operators such as mutation, crossover and selection. GA process is split into generations. Each generation is composed of a finite number of individuals which are built from the best individuals of the last generation and one or several operators. The first generation is generally randomly created.

Genetic algorithms are used for a large variety of problems from antenna shape optimization to minimize the weight of structures embarked in mars rovers.

A genetic algorithm is based on three operators:

  • Mutation, a mutation is a random modification of a parameter for an individual in the generation,
  • Crossover, a crossover is the creation of an individual based on parameters values from several members of the last generation,
  • Selection, in a genetic algorithm, we select the best individuals of a generation to construct the next generation.

Alternative text describing the image

The Mutation operator is used to ensure that the selection is not trapped in a local optima and can not reach the global optima for each parameters.

Some useful links:

Program specifications

The program for the INGI Dakar 2K21 is composed of 7 Python modules:

  • Car.py: Defines the class Car that represents a car of the game. A Car is composed of two Wheels and a Chassis, where the Wheels are located on two of the four Chassis vertices.
  • Chassis.py: Defines the class Chassis that represents a car chassis. A Chassis is represented by four vertices connected with each other in a quadrilateral shape.
  • CustomFormatter.py: Used for logging purposes.
  • Game.py: Defines the class Game that represents a game of INGI Dakar 2K21, i.e. the simulation of the 6 generations of 20 cars.
  • main.py: Entry point of INGI Dakar 2K21, which launches the simulations and computes the score.
  • Terrain.py: Defines the class Terrain that represents the terrain on which the cars are driving.
  • Wheel.py: Defines the class Wheel that represents a car's wheel. A Wheel is defined by its radius and the fact that it is a motor wheel or not.

To participate to the challenge, you only have to modify the function next_generation in the module main.py, that takes a representation of the game world (a b2World object) and the previous generation of cars (a list of Car objects) as arguments, and that returns the next generation of cars (also a list of Car objects). The car features that you can update for the next generation are given below.

Car features

A car is composed of the following (the numbers in bold cannot be changed):

  • TWO wheels, one of which is a motor wheel
  • A chassis, composed by FOUR vertices, linked together to form a polygon shape.

The car features that you can modify to reach the maximum distance are the following:

  • Radius of the two wheels, separately.
  • Which wheel is the motor wheel.
  • Position of the four vertices of the chassis.
  • To which of the chassis' vertices the two wheels are attached.

Please consult the corresponding classes to understand how those features are expressed and used in the program.

Score computation

To start the simulation of the challenge, just run the python3 main.py Python module. You must also activate the python virtual environment with source penv/bin/activate.

The execution of the challenge, and computation of your final score, is as follows:

  • Each generation contains 20 cars. The maximum distance reached by any of the cars is recorded as the score of this generation.
  • A game is composed of 6 generations. The score of a game is the maximum score among all the generations.
  • To smoothen the results, 5 games are launched after each other. Your final score is the average of the different score you obtained during the games.

At the end of the 5 games, a plot will be shown, with your results for the 5 games.

Installation and execution

Installation

To install the project, first clone the repository with the following command:

git clone https://github.com/ClubINFO-INGI-UCLouvain/INGI-Dakar-2K21-Challenge.git

Then, install the needed libraries by running the install.sh script, inside the project directory:

python3 -m venv penv;
source  penv/bin/activate;
chmod +x install.sh;
./install.sh;

Execution

To run the challenge simulation, you can simply run the main.py Python module in the src directory, with the following command:

cd src/
python3 main.py [--seed_terrain SEED] [--seed_car SEED] [--no_UI] [--no_plot]

The command line arguments, all optional, are the following:

  • --seed_terrain SEED (with SEED an integer): sets the seed for the random generation of the game terrain to SEED, for reproducibility of the simulations
  • --seed_car SEED (with SEED an integer): sets the seed for the random generation of the first generation of cars to SEED, for reproducibility of the simulations
  • --no_UI: does not show the graphical interface of the game, which drastically speeds up the simulations
  • --no_plot: does not show the plot of the games' result at the end of all the games

Note that, for the contest, the seeds will be fixed for equity among the groups.

There is also a hidden argument, maybe you can try to find it 😉

Owner
ClubINFO INGI (UCLouvain)
ClubINFO INGI (UCLouvain)
Playing around with FastAPI and streamlit to create a YoloV5 object detector

FastAPI-Streamlit-based-YoloV5-detector Playing around with FastAPI and streamlit to create a YoloV5 object detector It turns out that a User Interfac

2 Jan 20, 2022
Next-gen Rowhammer fuzzer that uses non-uniform, frequency-based patterns.

Blacksmith Rowhammer Fuzzer This repository provides the code accompanying the paper Blacksmith: Scalable Rowhammering in the Frequency Domain that is

Computer Security Group @ ETH Zurich 173 Nov 16, 2022
Using LSTM write Tang poetry

本教程将通过一个示例对LSTM进行介绍。通过搭建训练LSTM网络,我们将训练一个模型来生成唐诗。本文将对该实现进行详尽的解释,并阐明此模型的工作方式和原因。并不需要过多专业知识,但是可能需要新手花一些时间来理解的模型训练的实际情况。为了节省时间,请尽量选择GPU进行训练。

56 Dec 15, 2022
ROSITA: Enhancing Vision-and-Language Semantic Alignments via Cross- and Intra-modal Knowledge Integration

ROSITA News & Updates (24/08/2021) Release the demo to perform fine-grained semantic alignments using the pretrained ROSITA model. (15/08/2021) Releas

Vision and Language Group@ MIL 48 Dec 23, 2022
Pytorch Implementation of LNSNet for Superpixel Segmentation

LNSNet Overview Official implementation of Learning the Superpixel in a Non-iterative and Lifelong Manner (CVPR'21) Learning Strategy The proposed LNS

42 Oct 11, 2022
Compute FID scores with PyTorch.

FID score for PyTorch This is a port of the official implementation of Fréchet Inception Distance to PyTorch. See https://github.com/bioinf-jku/TTUR f

2.1k Jan 06, 2023
Final project code: Implementing MAE with downscaled encoders and datasets, for ESE546 FA21 at University of Pennsylvania

546 Final Project: Masked Autoencoder Haoran Tang, Qirui Wu 1. Training To train the network, please run mae_pretraining.py. Please modify folder path

Haoran Tang 0 Apr 22, 2022
Sdf sparse conv - Deep Learning on SDF for Classifying Brain Biomarkers

Deep Learning on SDF for Classifying Brain Biomarkers To reproduce the results f

1 Jan 25, 2022
code for CVPR paper Zero-shot Instance Segmentation

Code for CVPR2021 paper Zero-shot Instance Segmentation Code requirements python: python3.7 nvidia GPU pytorch1.1.0 GCC =5.4 NCCL 2 the other python

zhengye 86 Dec 13, 2022
Fashion Landmark Estimation with HRNet

HRNet for Fashion Landmark Estimation (Modified from deep-high-resolution-net.pytorch) Introduction This code applies the HRNet (Deep High-Resolution

SVIP Lab 91 Dec 26, 2022
Code to replicate the key results from Exploring the Limits of Out-of-Distribution Detection

Exploring the Limits of Out-of-Distribution Detection In this repository we're collecting replications for the key experiments in the Exploring the Li

Stanislav Fort 35 Jan 03, 2023
Fully convolutional networks for semantic segmentation

FCN-semantic-segmentation Simple end-to-end semantic segmentation using fully convolutional networks [1]. Takes a pretrained 34-layer ResNet [2], remo

Kai Arulkumaran 186 Dec 25, 2022
GUPNet - Geometry Uncertainty Projection Network for Monocular 3D Object Detection

GUPNet This is the official implementation of "Geometry Uncertainty Projection Network for Monocular 3D Object Detection". citation If you find our wo

Yan Lu 103 Dec 28, 2022
Code repository for the paper "Doubly-Trained Adversarial Data Augmentation for Neural Machine Translation" with instructions to reproduce the results.

Doubly Trained Neural Machine Translation System for Adversarial Attack and Data Augmentation Languages Experimented: Data Overview: Source Target Tra

Steven Tan 1 Aug 18, 2022
Code for "The Intrinsic Dimension of Images and Its Impact on Learning" - ICLR 2021 Spotlight

dimensions Estimating the instrinsic dimensionality of image datasets Code for: The Intrinsic Dimensionaity of Images and Its Impact On Learning - Phi

Phil Pope 41 Dec 10, 2022
This Deep Learning Model Predicts that from which disease you are suffering.

Deep-Learning-Project This Deep Learning Model Predicts that from which disease you are suffering. This Project Covers the Topics of Deep Learning Int

Jai Viral Doshi 0 Jan 20, 2022
This is the code for the paper "Jinkai Zheng, Xinchen Liu, Wu Liu, Lingxiao He, Chenggang Yan, Tao Mei: Gait Recognition in the Wild with Dense 3D Representations and A Benchmark. (CVPR 2022)"

Gait3D-Benchmark This is the code for the paper "Jinkai Zheng, Xinchen Liu, Wu Liu, Lingxiao He, Chenggang Yan, Tao Mei: Gait Recognition in the Wild

82 Jan 04, 2023
Code for "Modeling Indirect Illumination for Inverse Rendering", CVPR 2022

Modeling Indirect Illumination for Inverse Rendering Project Page | Paper | Data Preparation Set up the python environment conda create -n invrender p

ZJU3DV 116 Jan 03, 2023
A Tensorflow implementation of BicycleGAN.

BicycleGAN implementation in Tensorflow As part of the implementation series of Joseph Lim's group at USC, our motivation is to accelerate (or sometim

Cognitive Learning for Vision and Robotics (CLVR) lab @ USC 97 Dec 02, 2022
[ICLR 2022 Oral] F8Net: Fixed-Point 8-bit Only Multiplication for Network Quantization

F8Net Fixed-Point 8-bit Only Multiplication for Network Quantization (ICLR 2022 Oral) OpenReview | arXiv | PDF | Model Zoo | BibTex PyTorch implementa

Snap Research 76 Dec 13, 2022