Closed laowantong closed 4 years ago
Non effectivement, je n'ai pas fait beaucoup d'instances de petites tailles car il me semble que les modèles linéaires arrivaient à résoudre ce problème quand il y avait peu de tuiles, ça n'avait donc pas beaucoup d'intérêt.
Il en faut plus que les quelques toutes petites instances de tests ?
Vous m'aviez dit de ne pas les mettre tout de suite en ligne (mais j'ai oublié la raison), je les ajoute au dossier.
Je ne trouve pas de seed
dans mon code et pourtant je viens de passer en revue tout le dossier des deux branches master et refactoring donc je ne peux pas vous répondre.
Re réponse pour le 3. Dans quelle branche voulez-vous que je mette le code de génération d'instances ? Le master ?
Oui, dans le master. C'est moi qui gère la branche refactoring
.
Cependant, le dossier Type 2 a disparu et je ne me souviens pas l'avoir supprimé ou déplacé. Savez-vous ce qu'il est devenu ?
X
Très bien, je l'upload dans le master après avoir publié ce commentaire
Oui je n'aime pas utiliser les float à cause de ça. Il y a effectivement un seed dans des instances mais j'ai vite laissé tomber car il ne m'est pas nécessaire. En effet, je n'ai pas besoin de me souvenir du seed d'une instance car je n'ai pas besoin de pouvoir retrouver les conditions dans lesquelles elle a été créée (contrairement à un algo randomisé où il peut être intéressant de retrouver les conditions d'exécution).
Ces dossiers ou fichiers semblent n'avoir jamais été placés sous contrôle de version, donc de leur création à leur destruction ils ne sont jamais sortis de ton disque dur.
Je vais sans doute devoir les réécrire de toute façon. Si j'arrive à comprendre ce que tu as fait.
Je suis surprise de ne pas les avoir mis en ligne en même temps que les autres types mais bon ce n'est pas bien grave. Y a t'il un autre moyen que de regarder la liste de tous les commits pour avoir l'historique des créations et des suppressions ?
En d7d9a13 j'ai terminé la génération d'instances aléatoires. Je ne versionne pas pour l'instant les résultats, mais tu peux les recréer à l'identique chez toi en exécutant instance_maker.py
. Cherche-les ensuite dans le dossier instances/1_results
qui sera créé automatiquement.
Quand tu lances ce script, il va lire le fichier de configuration suivant:
La plupart des champs devraient se passer d'explication. Lors de la génération d'une instance, tous les paramètres entiers arg
tels que le fichier de configuration contient deux champs min_arg
et max_arg
sont tirés aléatoirement entre ces deux bornes (incluses). Il s'agit dans l'ordre de :
Note que j'ai laissé la possibilité de prendre comme support des arbres non seulement binaires, mais ternaires, etc. (champ arity
). J'ai modifié le template pour les noms de fichiers et y ai concaténé une valeur de hachage calculée à partir du contenu caractéristique (à savoir, tuiles + poids).
Tu me diras si c'est ok pour toi ou s'il y a d'autres besoins.
On peut tout à faire parler de poids plutôt que de tailles des symboles, je n'ai pas de préférence.
Pourquoi ne pas avoir gardé un numéro d'instance ?
Par contre, je ne pourrai plus facilement faire des groupes d'instances ayant toutes le même nombre de tuiles et j'ai peur que ce soit gênant pour les tests des FPTAS.
length
de tuile qui est la somme des size
de symboles. Pour l'instant je ne vais pas toucher ces notations, qui selon moi devraient être mises à plat une bonne fois pour toutes.min_tile_count
et max_tile_count
dans le fichier de configuration pour ne garder que les résultats voulus.Je comprends tout à fait le problème et c'est pour ça que je suis d'accord pour changer de terme. On parlera dorénavant de poids de symbole et de taille de tuile.
Vu qu'il y a la fonction de hachage, j'imagine qu'il y a peu de risque que deux instances aient le même nom car elles ont les mêmes caractéristiques ? Et j'avais nommé les instances avec leurs caractéristiques au début puis un numéro pour dire «voici la 56ème instance de type 100 tuiles, hauteur 8 etc.» Parce que là actuellement les noms de fichiers sont assez indigestes.
Imed m'a demandé de générer des instances avec un certain nombre de tuiles donc je fais en sorte de pouvoir le faire. Vous m'avez demandé mon avis sur la nouvelle façon de générer des instances, je vous fais donc part des problèmes qui me viennent à l'esprit.
Finalement je pense préférable de garder l'idée d'une empreinte caractérisant l'instance, pas le processus pour la générer. Pour un compromis entre probabilité de collisions et lisibilité, j'ai opté pour une empreinte de 4 caractères en base 36.
type_3a_epsilon-0.3.json
déclare moins de 100 tuiles (40).seed
flottant ?