Rübezahl Posté 12 septembre 2018 Signaler Posté 12 septembre 2018 Certains ici auraient des recos pour un disque dur externe 2.5' , ~500Go. windoze+linux ? Les pièges à éviter ? Merci.
Anton_K Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 À tout hasard : il y a des gens qui connaissent bien cplex ici ?
Noob Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Dsl nope, par contre j'ai fais un peu d'optimisation mais décidément je suis pas très doué pour et j'ai du écrire une fois ma propre version du simplexe, c'est pour quelle question ?
Anton_K Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Cplex renvoie des solutions sous optimales. Après avoir regardé la tête du modèle exporté, le problème ne vient pas d´une erreur sur la fonction maximisée. Après examen il y a en fait incohérence entre la valeur de la solution prétendument optimale telle que rapportée par le solver (surestimée) et telle que calculée à la main edit : bon je crois avoir trouvé, c’est pas cplex, je pense que ça a à voir avec une troncature dans la récupération de la solution (cplex donne parfois à un problème en nombre entier des solutions non entières à un 10^(-15) près...)
0100011 Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 13:46, Anton_K a dit : Cplex renvoie des solutions sous optimales. Après avoir regardé la tête du modèle exporté, le problème ne vient pas d´une erreur sur la fonction maximisée. Après examen il y a en fait incohérence entre la valeur de la solution prétendument optimale telle que rapportée par le solver (surestimée) et telle que calculée à la main edit : bon je crois avoir trouvé, c’est pas cplex, je pense que ça a à voir avec une troncature dans la récupération de la solution (cplex donne parfois à un problème en nombre entier des solutions non entières à un 10^(-15) près...) Expand C'est un problème qui passe près puis loin de 0 ? Comme les précisions ne sont pas les mêmes aux alentours de 0 qu'ailleurs parfois ça peut avoir des réactions inattendues suivant le système à résoudre.
Anton_K Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 16:06, Kassad a dit : C'est un problème qui passe près puis loin de 0 ? Comme les précisions ne sont pas les mêmes aux alentours de 0 qu'ailleurs parfois ça peut avoir des réactions inattendues suivant le système à résoudre. Expand Non, c'est une fonction à valeur vectorielle linéaire sur chaque composante, composantes à maximiser sur un sous-ensemble convexe de {0,1}^n, si c'est ta question. Dans l'espace des images il ne se passe rien de bizarre, on pousse vers le haut à droite. Le problème sembait juste être que (dans certaines instances, aucune idée pourquoi) si une composante de la solution (pas de son image) était approchée même très près, elle était tronquée parce que je manipulais chaque composante comme un entier (ayant spécifié que je voulais une solution entière). Du coup 0.9999999999 devient 0 et la valeur de la solution calculée à la main ne correspond plus. Donc finalement rien de mystérieux.
Noob Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 17:10, Anton_K a dit : Non, c'est une fonction à valeur vectorielle linéaire sur chaque composante, composantes à maximiser sur un sous-ensemble convexe de {0,1}^n, si c'est ta question. Dans l'espace des images il ne se passe rien de bizarre, on pousse vers le haut à droite. Le problème sembait juste être que (dans certaines instances, aucune idée pourquoi) si une composante de la solution (pas de son image) était approchée même très près, elle était tronquée parce que je manipulais chaque composante comme un entier (ayant spécifié que je voulais une solution entière). Du coup 0.9999999999 devient 0 et la valeur de la solution calculée à la main ne correspond plus. Donc finalement rien de mystérieux. Expand Mais dans ce cas tu devrais pas choisir un algo dédié aux nombres entiers ? Rajouter la contrainte des entiers est pas anodin du tout et peut faire qu'une bonne partie du travail effectué par le solver sur des nombres décimaux compte pour du beurre.
Anton_K Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 18:51, Noob a dit : Mais dans ce cas tu devrais pas choisir un algo dédié aux nombres entiers ? Expand C’est ce que je fais justement, mais cplex utilise quand même des relaxations de ces contraintes aboutissant aux approximations décrites avant, et des solutions de type double même quand tu demandes explicitement une solution entière. Après oui je pourrais utiliser une autre implémentation du simplexe, c’est peut-être ce que je finirai par faire mais d’abord je vais voir si on peut paramétrer cplex pour l’empêcher de prendre ces raccourcis fâcheux. Ou sinon j’arrondis a posteriori bien sûr.
Noob Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 19:14, Anton_K a dit : C’est ce que je fais justement, mais cplex utilise quand même des relaxations de ces contraintes aboutissant aux approximations décrites avant, et des solutions de type double même quand tu demandes explicitement une solution entière. Après oui je pourrais utiliser une autre implémentation du simplexe, c’est peut-être ce que je finirai par faire mais d’abord je vais voir si on peut paramétrer cplex pour l’empêcher de prendre ces raccourcis fâcheux. Ou sinon j’arrondis a posteriori bien sûr. Expand Ok, c'est bizarre parce que normalement ça fait partie du job que de chercher à relaxer les contraintes sauf qu'il n'est pas supposer s'arrêter là. Tu sais si la solution qu'il te donne est optimale dans le cas des nombres décimaux ?
Anton_K Posté 25 septembre 2018 Signaler Posté 25 septembre 2018 Le 25/09/2018 à 21:21, Noob a dit : Ok, c'est bizarre parce que normalement ça fait partie du job que de chercher à relaxer les contraintes sauf qu'il n'est pas supposer s'arrêter là. Tu sais si la solution qu'il te donne est optimale dans le cas des nombres décimaux ? Expand Non la solution rendue n’est pas optimale pour la relaxation linéaire, c’est vraiment une approximation de la solution au problème en nombres entiers. A mon avis elle est obtenue en dualisant (si ça te parle) certaines contraintes, dont peut être les contraintes d’entièreré. D’où le fait qu’on ait un tout petit écart (« duality gap ») mais qu’on tende quand même vers une solution entière et optimale pour le problème entier.
Noob Posté 26 septembre 2018 Signaler Posté 26 septembre 2018 Le 25/09/2018 à 22:18, Anton_K a dit : Non la solution rendue n’est pas optimale pour la relaxation linéaire, c’est vraiment une approximation de la solution au problème en nombres entiers. A mon avis elle est obtenue en dualisant (si ça te parle) certaines contraintes, dont peut être les contraintes d’entièreré. D’où le fait qu’on ait un tout petit écart (« duality gap ») mais qu’on tende quand même vers une solution entière et optimale pour le problème entier. Expand Ok. Je comprends en partie ce qu'est le problème dual, mais il me semblait que dans le cas linéaire le gap disparait si tu as atteint une solution optimale et ça servait même de critère d'arrêt. Dans le cas des entiers je me souviens plus trop. Il me semblait que le gap persistait. Car de mémoire on peut se figurer géométriquement les deux espaces de solutions comme des formes qui vont se toucher là ou la solution est optimal. Un peu comme deux pyramides posées l'une sur l'autre sur leurs pointes. Si on inclut des contraintes d'entièreté on dégrade forcément la solution optimale. (à moins que la solution entière soit aussi une solution linéaire). Du coup si on veut garder un gap de zéro il faut que la solution du dual soit améliorée. Mais ça parait absurde vu qu'on avait une solution optimale avant. Sinon ça signifierait que les contraintes d'entièreté du primal sont des relaxations pour le dual. Et il me semblait pas que c'était le cas. Du coup selon moi il était normal d'avoir un gap en travaillant avec des entiers. Mais ça commence à dater, et j'ai pas vraiment toucher au MIP, plutôt à la prog linéaire. EDIT j'ai bien l'impression que je me suis gouré du coup.
Anton_K Posté 26 septembre 2018 Signaler Posté 26 septembre 2018 Le 26/09/2018 à 00:14, Noob a dit : Ok. Je comprends en partie ce qu'est le problème dual, mais il me semblait que dans le cas linéaire le gap disparait si tu as atteint une solution optimale et ça servait même de critère d'arrêt. Dans le cas des entiers je me souviens plus trop. Il me semblait que le gap persistait. Car de mémoire on peut se figurer géométriquement les deux espaces de solutions comme des formes qui vont se toucher là ou la solution est optimal. Un peu comme deux pyramides posées l'une sur l'autre sur leurs pointes. Si on inclut des contraintes d'entièreté on dégrade forcément la solution optimale. (à moins que la solution entière soit aussi une solution linéaire). Du coup si on veut garder un gap de zéro il faut que la solution du dual soit améliorée. Mais ça parait absurde vu qu'on avait une solution optimale avant. Sinon ça signifierait que les contraintes d'entièreté du primal sont des relaxations pour le dual. Et il me semblait pas que c'était le cas. Du coup selon moi il était normal d'avoir un gap en travaillant avec des entiers. Mais ça commence à dater, et j'ai pas vraiment toucher au MIP, plutôt à la prog linéaire. EDIT j'ai bien l'impression que je me suis gouré du coup. Expand Non tu as raison quant au fait que théoriquement pour un problème continu le saut de dualité est nul, alors qu’en nombre entier il peut être théoriquement irréductible. D’une part je ne suis pas certain que c’est une solution duale qui est donnée, d’autre part j’utilisais le mot duality gap abusivement vu qu’on est bien dans le cas continu. Le problème de « l’écart » dans le cas continu n’est pas théorique mais dans le choix de la méthode de résolution, certaines méthodes permettent de s’approcher arbitrairement sans dépasser l’optimal en mettant à jour le pas de modification de la solution mais leur critère d’arrêt n’est pas l’annulation du terme dual (désolé je décris ça de moins en moins précisément car je ne suis même pas sûr que c’est ce qui explique le résultat).
NoName Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 hola braves gens, j'ai encore besoin d'aide auprès des spécialistes d'excel: J'ai un tableau pleins de colonnes comme ça: 1 - Banane - Poisson - Tomate - Banane - Viande - Pomme - Tomate - Poisson -Viande - Poisson - Banane est-ce qu'il est possible de faire en sorte que excel me sorte le nombre d'occurrence de chaque truc ?
Mister_Bretzel Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Le 23/11/2018 à 16:56, NoName a dit : hola braves gens, j'ai encore besoin d'aide auprès des spécialistes d'excel: J'ai un tableau pleins de colonnes comme ça: 1 - Banane - Poisson - Tomate - Banane - Viande - Pomme - Tomate - Poisson -Viande - Poisson - Banane est-ce qu'il est possible de faire en sorte que excel me sorte le nombre d'occurrence de chaque truc ? Expand =nb.si(plage de recherche;cellule dont tu recherches les occurrences dans la plage) Mais du coup ça marche mieux si t'as qu'une seule valeur par cellule. Peut être que mettre une chaîne de caractères en second paramètre fonctionne aussi, de tête je saurais pas dire.
Bézoukhov Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Nb.si.ens si tu veux faire des trucs compliques. Sinon un pivot table (tableau croisé dynamique) devrait te permettre de tout faire sans formules a gogo.
Mathieu_D Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Ha les joies d'Excel. En plus je suis sûr qu'il n'y a pas de pattern et qu'on ne peut pas compter les puces par case pour arrriver au résultat voulu. (Ni les mots directement je parie sur la présence de la chaîne "des bananes".)
NoName Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 En fait j'ai un tableau de trucs que j'ai essayé de standardisé en maximum je dois compter les occurences de chaque dans chaque ligne sauf que j'ai 14 * 12 cases avec plusieurs items par case, j'ai pas trop envie de me taper ça à la main
Noob Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Tu peux pas faire ça autrement qu'avec Excel ? Si t'as les données en texte pure le notebook python que je t'avais envoyé devrais faire ça. Sinon une piste car je ne connais rien du tout à Excel. Premièrement en admettant que tu connaisses tous les mots. Tu fais une colonne pour chaque cellule. Et dans chaque colonne tu utilises une ligne pour chaque mot différent. Chaque cellule de cette colonne test si dans la cellule x,y la chain abc s'y trouve. Tu te retrouves donc avec un tableau de 1 ou de 0 et il te reste à faire la somme par ligne.
NoName Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Mmh en effet c'est pas con, je sais pas si je vais faire exactement ça mais je vais découper je pense item par item pour chaque colonne et faire les comptes colonnes par colonnes
Noob Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Le 23/11/2018 à 21:49, NoName a dit : Mmh en effet c'est pas con, je sais pas si je vais faire exactement ça mais je vais découper je pense item par item pour chaque colonne et faire les comptes colonnes par colonnes Expand Si tu peux diviser les cellules oui c'est plus facile. Mais je pensais que tu voulais aussi éviter de te taper tout ça à la main.
Rincevent Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Le 23/11/2018 à 18:01, Mathieu_D a dit : Ha les joies d'Excel. En plus je suis sûr qu'il n'y a pas de pattern et qu'on ne peut pas compter les puces par case pour arrriver au résultat voulu. (Ni les mots directement je parie sur la présence de la chaîne "des bananes".) Expand La vraie supériorité du SQL, c'est qu'il donne aux techos un argument béton pour envoyer se faire foutre les gens qui te donnent des données pourries comme ça, et pour faire porter sur eux le coût de leur nettoyage.
RaHaN Posté 23 novembre 2018 Signaler Posté 23 novembre 2018 Sinon, t'arrêtes de manger des fruits et des légumes. Ça donne viande = 3*7 = 21 .
0100011 Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le futur appartient aux bases de données graphes. Quand j'aurais pondu une sémantique formelle de SPARQL on pourra même faire des preuves de correction d'algos comme pour parcour-sup.
Mathieu_D Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 23/11/2018 à 22:53, Rincevent a dit : La vraie supériorité du SQL, c'est qu'il donne aux techos un argument béton pour envoyer se faire foutre les gens qui te donnent des données pourries comme ça, et pour faire porter sur eux le coût de leur nettoyage. Expand Tiens en passant, Redshift ou Athena pour mon client aujourd'hui sur Oracle ?
Rincevent Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 24/11/2018 à 07:09, Mathieu_D a dit : Tiens en passant, Redshift ou Athena pour mon client aujourd'hui sur Oracle ? Expand Hmmm je vais me renseigner (parce que je suppose que la réponse "quitter Oracle", toujours pertinente, ne convient pas à ton client). 1 1
Mathieu_D Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 24/11/2018 à 07:29, Rincevent a dit : Hmmm je vais me renseigner (parce que je suppose que la réponse "quitter Oracle", toujours pertinente, ne convient pas à ton client). Expand Si si c'est le cas pour l'analytique. Mais on va garder Oracle pour l'opérationnel.
Rincevent Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 24/11/2018 à 07:32, Mathieu_D a dit : Si si c'est le cas pour l'analytique. Mais on va garder Oracle pour l'opérationnel. Expand Garder Oracle est toujours la mauvaise réponse, toujours. Pour Athena ou Redshift, ça depend du besoin. Si ses besoins sont simples (genre des trucs de reporting classique sur des données pas toujours structurées pour commerciaux itinérants), plutôt Athena. Mais si ses données sont bien structurées, vraiment massives (peta-scale), avec des besoins d'analyses poussées (genre, besoin d'UDFs en Python), alors Redshift. Mais c'est dit rapidement, ça ne vaut pas une vraie étude... que tu pourrais lui facturer.
NoName Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 23/11/2018 à 22:10, Noob a dit : Si tu peux diviser les cellules oui c'est plus facile. Mais je pensais que tu voulais aussi éviter de te taper tout ça à la main. Expand Oui mais considérant que tous les points commencent par "- " il doit bien y avoir une commande pour les séparer automatiquement en cellules
0100011 Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 24/11/2018 à 07:56, NoName a dit : Oui mais considérant que tous les points commencent par "- " il doit bien y avoir une commande pour les séparer automatiquement en cellules Expand Mais tu peux pas faire un global find replace et mettre des "," à la place des "-" et ça te fait un beau fichier format csv que tout logiciel digne de ce nom peut traiter automatiquement ?
Mathieu_D Posté 24 novembre 2018 Signaler Posté 24 novembre 2018 Le 24/11/2018 à 07:46, Rincevent a dit : Garder Oracle est toujours la mauvaise réponse, toujours. Pour Athena ou Redshift, ça depend du besoin. Si ses besoins sont simples (genre des trucs de reporting classique sur des données pas toujours structurées pour commerciaux itinérants), plutôt Athena. Mais si ses données sont bien structurées, vraiment massives (peta-scale), avec des besoins d'analyses poussées (genre, besoin d'UDFs en Python), alors Redshift. Mais c'est dit rapidement, ça ne vaut pas une vraie étude... que tu pourrais lui facturer. Expand On a un timing de péremption de licence à tenir, en vision cible on a conseillé Snowflake. Pour tenir le timing soit Redshift soit un outil de virtualisation.
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant