{"id":16487624,"url":"https://github.com/gauben/toboggan","last_synced_at":"2025-07-30T10:38:26.341Z","repository":{"id":118277351,"uuid":"177636891","full_name":"GauBen/Toboggan","owner":"GauBen","description":"La Brachistochrone Réelle, un super TIPE sur les toboggans","archived":false,"fork":false,"pushed_at":"2019-06-03T16:22:44.000Z","size":12677,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-01T01:43:36.529Z","etag":null,"topics":["genetic-algorithm","physics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GauBen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"publiccode":null,"codemeta":null}},"created_at":"2019-03-25T17:52:42.000Z","updated_at":"2020-04-18T21:32:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"ef3ade1c-9c63-4970-ab89-ae59b0dd4a71","html_url":"https://github.com/GauBen/Toboggan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GauBen/Toboggan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauBen%2FToboggan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauBen%2FToboggan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauBen%2FToboggan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauBen%2FToboggan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GauBen","download_url":"https://codeload.github.com/GauBen/Toboggan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauBen%2FToboggan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267852953,"owners_count":24154972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["genetic-algorithm","physics"],"created_at":"2024-10-11T13:35:27.354Z","updated_at":"2025-07-30T10:38:26.287Z","avatar_url":"https://github.com/GauBen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Toboggan\n\nVoici le code source de mon [TIPE](https://fr.wikipedia.org/wiki/Travail_d%27initiative_personnelle_encadr%C3%A9), ainsi que les fichiers déposés sur le site [SCEI](https://scei-concours.fr).\n\nL'objectif de ce TIPE est de trouver une solution au [problème de la brachistochrone](https://fr.wikipedia.org/wiki/Courbe_brachistochrone) dans le cas où l'expression des frottements est trop complexe pour une résolution analytique. Pour cela, j'ai développé un algorithme à mi-chemin entre les algorithmes génétiques et les algorithmes déterministes, que vous trouverez dans le fichier `toboggan.py`.\n\n## toboggan.py\n\nC'est l'unique fichier de code, il s'utilise directement dans une console :\n\n```console\n# Calcule le toboggan optimal pour le dé pendant 60 secondes\npython toboggan.py\n# Calcule pendant 5 minutes (300 secondes)\npython toboggan.py 300\n# Exporte la figure au format svg (dans le fichier toboggan.svg)\npython toboggan.py 300 svg\n```\n\n![Recherche du toboggan optimal pour le dé](https://raw.githubusercontent.com/GauBen/Toboggan/master/images/toboggan-optimal.gif)\n\nLes forces exercées sur le mobile pour le calcul du toboggan optimal se trouvent **ligne 346**. Vous pouvez utiliser n'importe quelles forces dépendantes de l'inclinaison et de la vitesse :\n\n```python\n# Aucun frottement (pour la recherche de la brachistochrone) :\ndef appliquer_pfd(x, y):\n    g_sin_theta = 9.81 * y / (y*y + x*x) ** 0.5\n    # Renvoie la dérivée de la vitesse v exprimée en fonction d'elle-même\n    return lambda v: g_sin_theta\n\n# Frottement solide uniquement :\nf = 0.32\ndef appliquer_pfd(x, y):\n    g_sin_theta = 9.81 * y / (y*y + x*x) ** 0.5\n    fg_cos_theta = f * 9.81 * x / (y*y + x*x) ** 0.5\n    # Renvoie la dérivée de la vitesse v exprimée en fonction d'elle-même\n    return lambda v: g_sin_theta - fg_cos_theta\n```\n\nToutes les combinaisons sont possibles. La combinaison par défaut est `dv/dt = gsinθ − 0.3263gcosθ − 0.0026v − 0.4748v²`, ce qui correspond à un dé en plastique classique (6 faces gravées, 18 mm, 7 g).\n\nVoici les animations respectives des deux exemples ci-dessus :\n\n![Recherche de la brachistochrone](https://raw.githubusercontent.com/GauBen/Toboggan/master/images/brachistochrone.gif)\n\n![Recherche du toboggan optimal pour les frottements solides](https://raw.githubusercontent.com/GauBen/Toboggan/master/images/frottement-solide.gif)\n\n## Présentation\n\nPour créer le pdf de la présentation, vous aurez besoin de :\n\n* [Node.js](https://nodejs.org)\n* [Marp](https://github.com/marp-team/marp-cli) (`npm install -g @marp-team/marp-cli`)\n\nDans une console dans le dossier `presentation/` tapez simplement :\n\n```\nmarp slides.md -o slides.pdf\n```\n\n## Remerciements\n\n* Mes professeurs encadrants pour leurs réponses à mes nombreuses questions\n* L'équipe de TIPE du lycée Saint Louis pour l'organisation et le matériel\n* [@yhatt](https://github.com/yhatt) pour l'outil [Marp](https://github.com/marp-team/marp)\n* [@jaredpetersen](https://github.com/jaredpetersen) pour le site [CodePrinter](https://jaredpetersen.github.io/codeprinter/)\n* Les sites [ezGIF](https://ezgif.com/) et [PDF Compressor](https://pdfcompressor.com/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauben%2Ftoboggan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgauben%2Ftoboggan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauben%2Ftoboggan/lists"}