Permalink
Browse files

documentation, api

  • Loading branch information...
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 <https://docs.python.org/3.1/whatsnew/3.0.html#integers>`_).
De ce fait la fonction `getrandbit <https://docs.python.org/3.4/library/random.html#random.getrandbits>`_
retourne un entier aussi grand que l'on veut.
@code
import random,sys
x = random.getrandbits(2048)
print(type(x),x)
@endcode
Qui affiche ::
<class 'int'> 28821592245571075131654830983838148370214474845580101472119213042190172126736565496812698627920295650674001797895985629679099064974713574340970814696233578272198061719231359573083186306654342306192322853809386167953610349383945699523678043826057910352338185386934425139215277777285416123100069406811011284910239819101658048202284988811705076819806294753255877254609472467038968542731954915621043682174519015068283521575989003211477579416601653132293861235314484703125172048342096920580957771246615770710590596119341983358658507235612104581804871612316272382587635599344895821316316356994838247665194550292758379858074
Les calculs en nombre réels se font toujours avec huit octets de précision.
Au delà, il faut utiliser la librairie `gmpy2 <http://gmpy2.readthedocs.org/en/latest/>`_.
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 <https://gmpy2.readthedocs.org/en/latest/overview.html>`_).
@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 <http://www.scintilla.org/SciTE.html>`_, 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 <https://docs.python.org/3.1/whatsnew/3.0.html#integers>`_).
De ce fait la fonction `getrandbit <https://docs.python.org/3.4/library/random.html#random.getrandbits>`_
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 <http://gmpy2.readthedocs.org/en/latest/>`_.
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 <https://gmpy2.readthedocs.org/en/latest/overview.html>`_).
.. 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 <http://www.scintilla.org/SciTE.html>`_, 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 <https://snap.berkeley.edu/>`_ using javascript.
Renders `Snap <https://snap.berkeley.edu/>`_ using javascript.
"""
def __init__(self, width="1000", height="600", divid=None, filename=None):

0 comments on commit 1c2be0d

Please sign in to comment.