ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ a écrit 4463 commentaires

  • [^] # Re: Tri des licences

    Posté par  (site web personnel) . En réponse au lien Reuse : un standard et un outil pour mettre des licences sur un projet libre. Évalué à 2 (+0/-0).

    La première ligne de la FAQ le laisse bien comprendre comme vous l'écrivez. Mais la quatrième se lit :

    « Choose a Free Software license for your project. »

    Et en effet, si les gens ne souhaitent pas produire du code réutilisable, ils ont probablement peu de raisons de vouloir rendre interopérable jusqu'aux descriptions de licences ; ça ressemble effectivement à une préoccupation de libriste.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • # Tri des licences

    Posté par  (site web personnel) . En réponse au lien Reuse : un standard et un outil pour mettre des licences sur un projet libre. Évalué à 2 (+0/-0).

    Le site indique de choisir une licence dans leur liste. Mais cette liste a-t-elle vraiment été conçue de manière adaptée aux objectifs ?
    En tout cas, la première licence que j'ai consultée commençait par :

    « Adobe Systems Incorporated grants to you […] »

    Est-ce vraiment pertinent d'inclure cette licence (et pas mal d'autres) dans cet outil ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Commentaire sur lyonmag

    Posté par  (site web personnel) . En réponse au lien Lyon : la mairie se sépare des logiciels de Microsoft pour renforcer sa "souveraineté numérique". Évalué à 2 (+1/-1).

    100% d'accord les partis n'ont pas a être démocratique, l'être pourrait même être un mauvais signe. Pourquoi ? Imaginons un parti qui se déclarerai porteur d'une idéologie (« Le pays aux premiers arrivés, exploitons les plus fragiles », ou « Pour la défense des plus défavorisés », etc.). Si le parti est dirigé démocratiquement, c'est-à-dire dans l'intérêt de la majorité de ses membres, est-ce que les belles théories proclamées ne rendront pas le son du pipeau ? À l'inverse, une fois entériné que le rôle d'un parti est de porter au pouvoir une certaine élite, il serait de bon ton de naviguer sous la direction la plus démocratique possible de cette partie de la population ; au risque de scissions à chaque grain (toute ressemblance avec l'historique d'appareils politiques existant est nécessairement fortuite).

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: GAFAM ou non GAFAM, telle est la question

    Posté par  (site web personnel) . En réponse au journal Biberonnage aux services US. Évalué à 10 (+10/-1).

    « - si tu as une connexion ADSL/fibre, les opérateurs français (Bouygue, Free, Orange, SFR) te propose un email de type xxxx@fai »

    Et quelques années plus tard, un changement de fournisseur d'accès, clôture un peu brusque d'un compte peu utilisé, et… oups plus d'accès à un service pourtant obligatoire. C'est ce principe là qui me dérange. Pas vous ? Le fait que ce soit souvent US, ou plutôt Gafam, n'est qu'une fine couche de confiture qui lustre le problème.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: TL;DR:

    Posté par  (site web personnel) . En réponse au lien Anthropic Scores a Landmark AI Copyright Win—but Will Face Trial Over Piracy Claims. Évalué à 2 (+0/-0).

    Vera-t-on des LLM qui s'expriment dans les langues de Göthe, Molière ou Shakespeare ? ou plutôt nourris par récursions à la prose de leur congénères gavés illégalement ? Le suspense est insoutenable…

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Commentaire sur lyonmag

    Posté par  (site web personnel) . En réponse au lien Lyon : la mairie se sépare des logiciels de Microsoft pour renforcer sa "souveraineté numérique". Évalué à 2 (+0/-0).

    Des droites, des gauches, et des coups de savate, même !

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Commentaire sur lyonmag

    Posté par  (site web personnel) . En réponse au lien Lyon : la mairie se sépare des logiciels de Microsoft pour renforcer sa "souveraineté numérique". Évalué à 4 (+2/-0).

    Serais-je le seul à avoir du mal à bien distinguer la ligne qui sépare les partis « de droite » de ceux « de gauche » (exemple le CPE de Galouzeau de Villepin, la loi travail d'El Khomri) ?
    Il me semble que cette distinction est souvent très floue pour la bonne raison suivante : les partis politiques dépendent de qui les orientent, et ce ne sont pas les femmes de ménages, ou les livreurs de pizza uberisés qui disposent des moyens (temps, argent…) de faire du lobbying. Autrement dit, pour moi, à mesure que la redistribution provoquée par la grande dépression et les guerres s'est effacée pour une reconcentration de l'argent, au fur donc de cette convergence des richesses dans un nombre de plus en plus réduit de mains, les séparations droites/gauches se sont amenuisées ; surtout dans la pratique effective du pouvoir ; quelques vagues nuances pouvant parfois être plus nettes dans les discours à la veille d'élections. D'où le fait que l'on puisse ergoter sans fin sur ce que sont la droite et la gauche (la terminologie étant ici particulièrement bien choisi, puisqu'au sens propre de ces mots, ça dépend de la direction que vous considérez).
    Toujours est-il que si cette évolution perçue, ce brouillage des lignes intéresse, la chose est bien mieux expliquée et théorisée (assez brièvement pour une fois), dans cet article de C. Doctorow. Ma conclusion personnelle, inutile débattre ou de de s'envoyer des noms d'oiseaux sur le thème droite/gauche. Ça n'avance guère les débats. À tout le moins il faudrait préciser de quelle époque (et lieux éventuellement) il est question, car ces notions évoluent vite.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Linux debian

    Posté par  (site web personnel) . En réponse au message Périphérique carte SD. Évalué à 2 (+0/-0).

    Chez moi la boucle

    for root, _, files in os.walk(device):

    descend bien dans les sous répertoires. Aucun problème avec ça.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Linux debian

    Posté par  (site web personnel) . En réponse au message Périphérique carte SD. Évalué à 3 (+1/-0).

    Dommage. Et apparemment, ce ne serait pas non plus l'espace dans le nom de périphérique : j'ai tenté chez moi au cas où, mais ça ne pose pas de problème.

    Est-il possible d'ajouter les print() suivant (les lignes terminant par PMA) dans la section du code correspondante :

        for device in devices:
            print(f"Traitement du périphérique: {device}")
            for root, _, files in os.walk(device):
                print(root) #PMA
                for file in files:
                    print("   ",file) #PMA
                    ext = os.path.splitext(file)[1].upper()
                    if ext in FILE_TYPES:
                       print('OK') #PMA

    De faire tourner le script et de nous indiquer le résultat ?

    NB : faites bien attention à l'alignement des instructions dans les boucles. Python est sourcilleux sur ce point.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • # Meuh non

    Posté par  (site web personnel) . En réponse au lien Trump can pull the plug on the internet, and Europe can't do anything about it. Évalué à 5 (+4/-1).

    Avec « SecNumCloud » et toutes les palanquées de certifications « cloud souverain » sorties tout droit du génie visionnaire de nos incroyables dirigeants, nous sommes SOUVERAINS sur le claude. Qu'est-ce que Politico n'a pas compris là dedans :-) ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Fail2ban ne remplace pas une bonne sécurité

    Posté par  (site web personnel) . En réponse au journal Fail2ban, ajustement des valeurs par defaut. Évalué à 5 (+3/-0).

    « […] ssh réponds la même chose que le mot de passe soit faux ou que la connexion par mot de passe soit désactivée […] »

    Pas du tout. Il négocie les protocoles d'identifications possibles entre client et serveur. Si le mot de passe est désactivé, le client ne se voit pas proposer cette méthode, mais uniquement les autres méthodes autorisées.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 7 (+5/-0).

    « moui bon choix l'AGPLv3 même si c'est un peu overkill :D »

    Sûre, mais on ne se refait pas. En tant que fonctionnaire j'accepte de travailler gratuitement pour le bien public une part importante de mon temps. Ce fameux bien public est une préoccupation majeure pour moi. Donc logique, chaque fois que l'occasion se présente, de vouloir y ajouter tout et n'importe quoi…

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 2 (+0/-0).

    PS : plutôt qu'un recuit simulé, mon algorithme fait une trempe ici (un gros bogue dans le recuit). Ça tombe bien : ça donne le résultat optimal plus vite pour un problème simple de ce type. Si jamais le problème se complexifie et qu'il faille la version sans bogue, je l'ai écrite. Il y manque juste de quoi imprimer la configuration optimale atteinte.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Linux debian

    Posté par  (site web personnel) . En réponse au message Périphérique carte SD. Évalué à 4 (+2/-0).

    Pouvez-vous :
    — insérer votre carte sd
    — taper dans un terminal : df -h
    — nous communiquer le résultat de cette commande
    — et le résultat du script que vous souhaitez employer ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: ça n'existe pas déjà cet outil ?

    Posté par  (site web personnel) . En réponse au message Périphérique carte SD. Évalué à 5 (+3/-0).

    Après ça reste une question purement Linux : pourquoi quand la carte SD est-elle montée, n'apparaît-elle pas dans /mnt/ ou /media/philippe ? Alors que le disque dur, visiblement, oui.

    N'ayant pas d'indications sur la distribution employée, les points de montage, et nom d'utilisateur, je ne vois pas trop comment aider. Mais la question me semble avoir sa place dans ce forum. Après tout, tout le monde ne peut pas être programmeur. Ici, l'auteur de la question a déjà fait (faire) une très grosses parties du boulot, et ne demande quasiment rien en comparaison de sa problématique initale… C'est super. Même si c'est à base de LLM.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 3 (+1/-0).

    Au temps pour moi : vous avez posté si vite que le bouton "modifier" était gardé par Gandalf.

    Licence AGPL v3 ou ultérieure.
    Bon, en fait mon code n'a rien d'original qui traduise ma personnalité, etc. Donc fondamentalement je trouve un peu étrange d'y appliquer du droit d'auteur. Mais bon.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 9 (+7/-0).

    Le code est en deux parties. Un premier fichier qui me génère une liste d'élèves. Pour vous ça permettra de voir le format des données à produire pour faire tourner le code.

    #!/usr/bin/env python3
    """Ce programme créé une liste (aléatoire) d'élèves qui sera 
    lue par le programme suivant qui optimisera la répartition
    des étudiants en classes.
    INTERET : permet de comprendre comment les données sont
    structurées dans le programme suivant.
    USAGE : Lancer le code suivi du nom du fichier dans lequel les
    données seront écrites. 
    Exemple : python3 createList.py eleves.dat"""
    import sys
    import numpy as np
    nbEleve = 170
    nbLV2Esp = 40
    nbFoot = 15
    def writeEleve(fout,n,sexe,espagnol,foot):
        """Ecrit la liste des élèves dans le descripteur de fichier "fout".
        C'est là qu'il faut faire d'éventuelles modifications pour rajouter 
        des options, etc."""
        fout.write("%7d %4d %7d %5d\n"%(n,sexe,espagnol,foot))
        return n+1
    if __name__ == "__main__":
        try:
            fout = open(sys.argv[1],"w")
        except:
            print("Run this code followed by the name of the file where you intend to write")
            exit()
        fout.write("#Numéro sexe espagnol foot\n") #Commentaire en tête de fichier
        n=0
        nF=0
        nE=0
        """ le fichier est structuré ainsi :
        D'abord les footbaleurs, puis les hispanisant, suivi des autres."""
        while nF < nbFoot :
                   foot = 1
                   espagnol = 0
                   sexe=int(np.random.rand()*2) # donne 0, ou 1 !
                   n=writeEleve(fout,n,sexe,espagnol,foot)
                   nF+=1
        while nE < nbLV2Esp :
                   foot = 0
                   espagnol = 1
                   sexe=int(np.random.rand()*2)
                   n=writeEleve(fout,n,sexe,espagnol,foot)
                   nE+=1               
        while n < nbEleve :
                   foot = 0
                   espagnol = 0
                   sexe=int(np.random.rand()*2)
                   n=writeEleve(fout,n,sexe,espagnol,foot)
        fout.close()

    Voici le code qui applique l'algorithme.

    #!/usr/bin/env python3
    import sys
    import numpy as np
    """ Ce programme consomme une liste d'élèves (en argument) avec leurs options.
    Il les répartis ensuite entre classe en utilisant l'algorithme de 
    Monte-Carlo Metropolis.
    Exemple : python3 metropolis.py eleves.dat
    """
    def readList(fname):
        """ Lis le fichier dont le nom est fname (formaté en colonnes de chiffres)
        et retourne une matrice (de type np.array) dont chaque ligne correspont 
        à un élève et à ses options (0 ou 1 selon que l'option est choisie)."""
        data = np.loadtxt(fname,dtype=int)
        return data
    class classe:
        """Une structure permettant de gérer les classes."""
        def __init__(self,ldata):
            """ création d'une classe vide,
            ldata est la liste complète des élèves du niveau de cette classe."""
            self.nbMembres = 0
            self.nbFemelles = 0
            self.nbMales = 0
            self.nbEspagnoles = 0
            self.nbFoot = 0
            self.listMembres = [] # Liste des identifiants des élèves de la classe
            self.ldata=ldata # Liste de l'ensemble des données sur TOUS les élèves
        def __iadd__(self,ide):
            """ Ajoute l'élève identifié par son numéro ide à la classe """
            self.listMembres.append(self.ldata[ide][0])
            self.nbMembres += 1
            if self.ldata[ide][1] == 0 :
                self.nbFemelles += 1
            else :
                self.nbMales += 1
            self.nbEspagnoles += self.ldata[ide][2]
            self.nbFoot += self.ldata[ide][3]
            return self
        def __isub__(self,ide):
            """ Retire l'élève identifier par son numéro à la classe """
            self.listMembres.remove(self.ldata[ide][0])
            self.nbMembres -= 1
            if self.ldata[ide][1] == 0 :
                self.nbFemelles -= 1
            else :
                self.nbMales -= 1
            self.nbEspagnoles -= self.ldata[ide][2]
            self.nbFoot -= self.ldata[ide][3]
            return self
        """ Deux méthode permettant de décrire la classe """
        def __str__(self):
            s="class nbEleves %d nbFemelles %d nbEspagnoles %d nbFoots %d"%(self.nbMembres,self.nbFemelles,self.nbEspagnoles,self.nbFoot)
            return s
        def __repr(self):
            return self.__str__()
    
    def deplaceEleve(nouvelleClasse,ide,listeClasse,ldata):
        """ Fonction qui déplace un élève d'une classe à une autre : 
        nouvelleClasse et le numéro de la nouvelle classe dans
        listeClasse
        ide est le numéro de l'élève dans ldata """
        if ldata[ide][4] != None : # Vérifie que l'élève avait déjà été affecté à une classe auparavant
            listeClasse[ldata[ide][4]] -= ide
        if nouvelleClasse != None : # Vérifie que l'affectation se fait bien vers une nouvelle classe
            listeClasse[nouvelleClasse] += ide
        ldata[ide][4] = nouvelleClasse
    
    def cout(listeClasse,ldata,nbEsp):
        """ Fonction de cout
        C'est la fonction essentielle du processus. C'est elle qui conditionne 
        la réussite du processus d'affectation. Elle doit augmenter quand un 
        élève n'est pas affecté conformément aux critère choisis. Elle doit 
        décroître quand les critères sont vérifiés.
        Actuellement 5 critères :
        a : les classes doivent toutes avoir le même nombre d'élèves.
        b : autant d'hispanisant dans chacune des classes qui en ont
        c : ceux qui font du foot doivent impérativement être dans la classe 3
        d : les hispanisants sont dans les classes 5 et 6
        e : tous les élèves doivent se voir affecter une classe
        """
        nbE = len(ldata) # nombre d'élèves
        nbC = len(listeClasse) # nombre de classes
        C = 0
        a = 1
        b=0.5
        c=10
        d=4
        e=50
        for i,classe in enumerate(listeClasse):
            ### équilibre des classes
            C += a*(classe.nbMembres-nbE/nbC)**2
            ### foot en classe 3 (#2)
            if i ==2 :
                C -= c*classe.nbFoot
                #print(i,C)
            else :
                C += c*classe.nbFoot
                #print(i,C)
            if i > 3 :
                C -= d*classe.nbEspagnoles
            else :
                C += d*classe.nbEspagnoles
        ### équilibre espagnoles
        C += b * (listeClasse[4].nbEspagnoles-listeClasse[5].nbEspagnoles)**2
        ### élève non affecté
        for i in range(nbE):
            if(ldata[i][4] == None):
                C+= e
        return C
    
    
    def metropolis(lClasses,ldata,nbEsp,oldC,beta):
        # Choisie un élève au hasard, et une classe au hasard,
        # affecte l'élève dans la classe,
        # calcul la fonction de coût,
        # compare à l'ancienne valeure,
        # choisi de valider l'affectation ou de revenir à l'état précédent
        ide = int(np.random.rand()*len(ldata))
        cl =  int(np.random.rand()*len(lClasses))
        #oldCl = len(lClasses)+1
        #if (ldata[ide][4] != None):
        oldCl = ldata[ide][4]
        deplaceEleve(cl,ide,lclasses,ldata)
        nC =  cout(lClasses,ldata,nbEsp)
        p = np.random.rand()
        if np.exp(beta*(nC-oldC)) < p :
            return 1,lClasses,ldata,nC
        else :
            #print("ancien - nouveau",oldC,nC)
            deplaceEleve(oldCl,ide,lclasses,ldata)
            return 0,lClasses,ldata,oldC
    def mainMetropolis(lClasses,ldata,nbEsp,oldC) :
        """ Applique l'algorithme de MC Metropolis
        Nloop fois. Plus l'affection est complexe, plus Nloop doit être grand.
        Si tout va bien, à la fin, les élèves sont affectés dans les classes 
        conformément aux critères."""
        C =  cout(lClasses,ldata,nbEsp)
        # Paramètres de l'algorithme
        beta = 1 # conditionne la distribution de Boltzmann
        Nloop = 10000 # Nombre d'itérations à réaliser
        # Le taux d'acceptation des modifications des classes
        # doit avoisinner les 50 %. En fonction de ce taux (moyenné)
        # le paramètre Beta va être modifié pour faire tendre
        # le taux vers 50%
        accept_min=0.4 
        incr = 1.25
        accept_max=0.6
        decr = 0.8
        accept = 0.5
        mix = 0.95 # Paramètre pour calculer la moyenne glissante exponentielle :-)
        # Plus c'est grand, plus la moyenne est calculée sur un grand nombre
        #de configurations précédentes.
        for i in range(Nloop):
            acc,lClasses,ldata,C = metropolis(lClasses,ldata,nbEsp,C,beta)
            accept = (1-mix)*acc + mix*accept
            if accept < accept_min :
                beta *= incr
            if accept > accept_max :
                beta *= decr
            print(i,accept,C)
        return lClasses,ldata
    if __name__ == "__main__":
        """ Lecture du fichier des élèves """
        try:
            data = readList(sys.argv[1])
        except:
            print("Run this code followed by the name of the file where you intend to read students data")
            exit()
        #print("OK\n ",data)
        ldata = []
        nbEsp = 0
        for e in data :
            le = list(e)
            le.append(None)
            ldata.append(le)
            nbEsp += e[2]
        #print(ldata)
        ##############
        ### create classes 
        C0 = classe(ldata)
        C1 = classe(ldata)
        C2 = classe(ldata)
        C3 = classe(ldata)
        C4 = classe(ldata)
        C5 = classe(ldata)
        print(C0)
        lclasses=[C0,C1,C2,C3,C4,C5]
        ###############
        ### Affectation manuelle d'élèves dans des classes
        ### Ici j'ai fait n'importe quoi, meilleur est
        ### l'état initial, plus rapide sera le succès final.
        print(lclasses[1])
        deplaceEleve(2,0,lclasses,ldata)
        deplaceEleve(2,1,lclasses,ldata)
        deplaceEleve(2,1,lclasses,ldata)
        deplaceEleve(2,3,lclasses,ldata)
        print(ldata[:5])
        C = cout(lclasses,ldata,nbEsp)
        print(C)
        deplaceEleve(2,2,lclasses,ldata)
        deplaceEleve(2,4,lclasses,ldata)
        deplaceEleve(2,5,lclasses,ldata)
        deplaceEleve(2,6,lclasses,ldata)
        C = cout(lclasses,ldata,nbEsp)
        print(C)   
        deplaceEleve(2,7,lclasses,ldata)
        deplaceEleve(2,8,lclasses,ldata)
        deplaceEleve(2,9,lclasses,ldata)
        deplaceEleve(2,10,lclasses,ldata)
        deplaceEleve(1,16,lclasses,ldata)
        deplaceEleve(1,17,lclasses,ldata)
        deplaceEleve(1,18,lclasses,ldata)
        deplaceEleve(1,19,lclasses,ldata)
        C = cout(lclasses,ldata,nbEsp)
        print(C)  
        #############
        ### OPtimisation
        mainMetropolis(lclasses,ldata,nbEsp,C)
        ### C'est fini
        for classe in lclasses:
            print(classe)
            # On peut rajouter une méthode dans "classe"
            # pour imprimer plus de détails. Par exemple la liste
            # des élèves de la classe.

    J'ai essayé d'ajouter beaucoup de commentaires pour aider… J'espère que ça sera suffisant car mon code est assez brouillon.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 8 (+6/-0).

    Avec la canicule, je n'étais pas motivé pour travailler. J'ai donc écris le code selon vos spécifications. C'est un peu brouillon. Mais ça marche parfaitement. À ceci prêt que la contrainte sur les options n'étant pas explicite, il n'était pas possible de l'appliquer ; mais équilibrer les classes par sexe, répartir les hispanisants, et placer les footeux, là, pas de problèmes, l'algorithme de Metropolis fonctionne comme un charme. Avec 170 élèves, il faut moins de mille itérations pour atteindre une répartition optimale sur 6 classes. Si le code vous intéresse…

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Formulation formelle

    Posté par  (site web personnel) . En réponse au message programme et algo de tri . Évalué à 7 (+5/-0).

    Vu le petit nombre d'élève un tout petit code stochastique ne pourrait-il pas faire l'affaire ?

    • Définir une fonction de coût qui atteint sa valeur min quand toutes les contraintes sont vérifiées ;
    • initialiser la distribution des élèves au hasard ;
    • un très grand nombre de fois ;
      • sélectionner un élève au hasard et le placer dans une classe ;
      • accepter la proposition si elle réduit la fonction de coût, ou si elle vérifie un critère de probabilité (type distribution de Bolzmann) ;
    • Faire baisser progressivement la tolérance du second critère jusqu'à ce que la distribution des élèves ne varie plus.
    • Éventuellement recommencer plusieurs fois pour obtenir plusieurs solutions.

    NB : ce que je viens de décrire est un algorithme de recuit-simulé dit Monte-Carlo Metropolis ; à peu prêt la première idée qui viendrait à tout physicien pour résoudre ce genre de problème, et l'une seulement des très nombreuses méthodes qui devraient vous permettre de résoudre facilement un tel problème, au prix d'un peu de programmation, de la définition d'une fonction de coût appropriée. Si vous avez besoin d'aide, y a qu'à demander…

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • # TLDR

    Posté par  (site web personnel) . En réponse au lien Trusting your own judgement on ‘AI’ is a huge risk. Évalué à 4 (+2/-0).

    Du même auteur, même argumentation en 500 mots. J'aurais préféré commencé par là, vu que de toute façon cet article active toutes mes alarmes quant à mes propres biais de confirmation :-).

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • # Batterie emblématique

    Posté par  (site web personnel) . En réponse au lien Smartphones, tablettes : l’étiquette énergie et l’écoconception entrent en application. Évalué à 9 (+7/-0).

    Jadis — il y a environ 10 ans peut-être — les batteries étaient considérées comme des pièces d’usure. Il était aisé de les changer ; généralement sans outils. Le nouveau règlement prévoient que toutes les pièces soient facilement manipulables pour réparation — ce qui parait une gageur étant donné le niveau d’intégration des bousins — sauf la batterie. Allez comprendre. Le fameux intérêt des industriels que déplorent certaines associations ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: La réalité

    Posté par  (site web personnel) . En réponse au lien Sam Altman veut qu’une « fraction significative » de l’énergie produite sur Terre soit dédiée à l’IA. Évalué à 5 (+3/-0).

    La Terre devrait facilement encaisser même un hiver nucléaire qui balaierait toute vie à sa surface, et ferait ressembler Mars à un paradis touristique par comparaison. Pour la bio sphère et en particulier la megafaune, c’est certainement bien différent.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Bof

    Posté par  (site web personnel) . En réponse au journal [HS] La comédie Grok versus Musk/MAGA. Évalué à 3 (+1/-0).

    Grok applique la même stratégie marketing que Trump. Dix coups délirants, un raisonnable. Et sur celui-là, tous sont, ébahis…

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • # Bof

    Posté par  (site web personnel) . En réponse au journal [HS] La comédie Grok versus Musk/MAGA. Évalué à 6 (+4/-0).

    Un coup, le truc débite des non sens haineux, on dit, normal c’est un IA, donc le QI du néo-nazis moyen ; le suivant ça balance ses quatre vérités au grand sorcier, devrait-on s’esbaudir que l’IA aurait progressé jusqu’au niveau d’un anti-fas ? Elle a grok ?

    Trêve de plaisanterie. Hormis le côté truculent, rien de bien nouveau dans ses répliques. Si ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

  • [^] # Re: Contexte perfectible

    Posté par  (site web personnel) . En réponse au journal Pétition pour interdire le vote électronique en France. Évalué à 3 (+1/-0).

    Tout à fait d'accord. Qui plus est, je crains qu'outre les fotte d'aurtografz, cette partie du texte puisse rendre la pétition nulle et non avenue. La procédure décrite est-elle seulement conforme à la législation en vigueur ?

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace