sdpython/code_beatrix

documentation, api

sdpython committed Dec 28, 2017
1 parent aa4ecc7 commit 1c2be0d5b8df16bb7c00898023dbdc7e6a6b7a34
 @@ -0,0 +1,13 @@ Algorithmes =========== .. contents:: :local: Optimisation ++++++++++++ .. autosignature:: code_beatrix.algo.tsp.voyageur_commerce_simple .. autosignature:: code_beatrix.algo.tsp.plot_circuit
 @@ -6,3 +6,5 @@ API Summary :maxdepth: 2 ai algorithm notebooks
 @@ -0,0 +1,18 @@ Notebooks ========= .. contents:: :local: Javascript ++++++++++ .. autosignature:: code_beatrix.ipython_helper.nbcanvas.display_canvas_point Snap, Scratchs ++++++++++++++ .. autosignature:: code_beatrix.jsscripts.nbsnap.RenderSnap .. autosignature:: code_beatrix.jsscripts.nbsnap.RenderSnapRaw
 @@ -1,6 +1,6 @@ """ @file @brief Position in a classroom @brief Positions in a classroom """ import random @@ -10,7 +10,7 @@ def plot_positions(positions, edges=None, ax=None, **options): """ draw positions and first names into a graph Draws positions and first names into a graph. @param positions list of 3-uple (name, x, y) @param ax axis @@ -72,7 +72,7 @@ def plot_positions(positions, edges=None, ax=None, **options): def random_positions(nb, names=None): """ draws random position for some person in a classroom Draws random position for some person in a classroom. @param nb number of persons @param names names (None for default) @@ -105,7 +105,7 @@ def random_positions(nb, names=None): def distance(p1, p2): """ computes the distance between two positions Computes the distance between two positions. @param p1 position 1 @param p2 position 2 @@ -116,7 +116,7 @@ def distance(p1, p2): def measure_positions(positions, edges): """ returns the sum of edges weights Returns the sum of edges weights. @param positions dictionary ``{ name : (x, y) }`` @param edges list of affinities ``(name1, name2)`` @@ -136,7 +136,7 @@ def measure_positions(positions, edges): def find_best_positions_greedy(positions, edges, name): """ find the best position for name, explore all positions Finds the best position for name, explore all positions. @param positions dictionary ``{ name : (x, y) }`` @param edges list of affinities as a dictionary ``{ name: [names] }`` @@ -167,7 +167,7 @@ def find_best_positions_greedy(positions, edges, name): def optimize_positions(positions, edges, max_iter=100, fLOG=noLOG, plot_folder=None): """ optimize the positions Optimizes the positions. @param positions dictionary ``{ name : (x, y) }`` @param edges list of affinities ``(name1, name2)``
 @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- """ @file @brief Function solving the TSP problem @@ -8,7 +9,8 @@ def distance_point(p1, p2): """ returns the distance between two points Returns the Euclidian distance between two points. Retourne la distance euclidienne entre deux points. @param p1 point 1 @param p2 point 2 @@ -22,7 +24,8 @@ def distance_point(p1, p2): def distance_circuit(points): """ computes the distance of this circuit Computes the distance of this circuit. Calcule la longueur d'un circuit. @param points list of points, the circuit assumes they are giving in that order @return distance @@ -35,7 +38,8 @@ def distance_circuit(points): def permutation(points, i, j): """ switch two points and return a new path Switches two points and returns a new path. Echange deux points et retourne le nouveau circuit. @param points circuit @param i first index @@ -49,7 +53,8 @@ def permutation(points, i, j): def reverse(points, i, j): """ reverse a sub part of circuit Reverses a sub part of circuit. Retourne une partie du circuit. @param points circuit @param i first index @@ -67,8 +72,9 @@ def reverse(points, i, j): def voyageur_commerce_simple(points): """ solves the TSP using basic permutations, points are 2D coordinates Solves the TSP using basic permutations, points are 2D coordinates. Résoud le problème du voyageur de commerce. @param points list of points """ @@ -112,7 +118,8 @@ def voyageur_commerce_simple(points): def plot_circuit(points, ax=None, **kwargs): """ plot the circuit on a graph Plots the circuit on a graph. Dessine la solution du voyageur de commerce. @param points points @param ax axe
 @@ -11,37 +11,36 @@ def instruction_pass(): Cette fonction ne fait rien. @FAQ(Quel est l'entier le plus grand ?) La version 3 du langage Python a supprimé la constante ``sys.maxint`` qui définissait l'entier le plus grand (voir `What's New In Python 3.0 `_). De ce fait la fonction `getrandbit `_ retourne un entier aussi grand que l'on veut. @code import random,sys x = random.getrandbits(2048) print(type(x),x) @endcode Qui affiche :: 28821592245571075131654830983838148370214474845580101472119213042190172126736565496812698627920295650674001797895985629679099064974713574340970814696233578272198061719231359573083186306654342306192322853809386167953610349383945699523678043826057910352338185386934425139215277777285416123100069406811011284910239819101658048202284988811705076819806294753255877254609472467038968542731954915621043682174519015068283521575989003211477579416601653132293861235314484703125172048342096920580957771246615770710590596119341983358658507235612104581804871612316272382587635599344895821316316356994838247665194550292758379858074 Les calculs en nombre réels se font toujours avec huit octets de précision. Au delà, il faut utiliser la librairie `gmpy2 `_. Il est également recommandé d'utiliser cette librairie pour les grands nombres entiers (entre 20 et 40 chiffres). La librairie est plus rapide que l'implémentation du langage Python (voir `Overview of gmpy2 `_). @endFAQ @FAQ(Tabulations ou espace ?) Il est préférable de ne pas utiliser les tabulations et de les remplacer par des espaces. Lorsqu'on passe d'un Editeur à un autre, les espaces ne bougent pas. Les tabulations sont plus ou moins grandes visuellement. L'essentiel est de ne pas mélanger. Dans `SciTE `_, il faut aller dans le menu Options / Change Indentation Settings... Tous les éditeurs ont une option similaire. @endFAQ ..reffaq:: :title: Quel est l'entier le plus grand ? La version 3 du langage Python a supprimé la constante ``sys.maxint`` qui définissait l'entier le plus grand (voir `What's New In Python 3.0 `_). De ce fait la fonction `getrandbit `_ retourne un entier aussi grand que l'on veut. .. runpython:: :showcode: import random,sys x = random.getrandbits(2048) print(type(x),x) Les calculs en nombre réels se font toujours avec huit octets de précision. Au delà, il faut utiliser la librairie `gmpy2 `_. Il est également recommandé d'utiliser cette librairie pour les grands nombres entiers (entre 20 et 40 chiffres). La librairie est plus rapide que l'implémentation du langage Python (voir `Overview of gmpy2 `_). .. reffaq:: :title: Tabulations ou espace ? Il est préférable de ne pas utiliser les tabulations et de les remplacer par des espaces. Lorsqu'on passe d'un Editeur à un autre, les espaces ne bougent pas. Les tabulations sont plus ou moins grandes visuellement. L'essentiel est de ne pas mélanger. Dans `SciTE `_, il faut aller dans le menu Options / Change Indentation Settings... Tous les éditeurs ont une option similaire. """ pass
 @@ -11,7 +11,7 @@ def display_canvas_point(html_id, width=800, heigth=400, var_name="points"): """ add a canvas to draw from a notebook, the code use javascript Adds a canvas to draw from a notebook, the code use javascript. @param height height @param width width
 @@ -10,7 +10,7 @@ class RenderSnapRaw(object): """ Render `Snap `_ using javascript. Renders `Snap `_ using javascript. """ def __init__(self, width="1000", height="600", divid=None, filename=None):