optimisation de place

optimisation de place - Algo - Programmation

Marsh Posté le 11-10-2005 à 23:36:19    

Bonjour à tous!!
J'ai un petit problème d'algo...
Voila je voudrai faire un petit programme (certainement un script, mais je n'ai pas encore choisi de language) pour optimiser la place de mes fichier à graver.
En gros j'ai une liste de fichiers de différentes taille et je voudrai les graver sur des dvd de 4.5Go
Je voudrai que mon programme soit capable de me dire quoi graver sur chaque dvd pour utiliser le moin de DVD possibles.
J'ai environ 100 Go de données répartie en 49 fichiers insécables de 80 Mo à 4,2Go
 
Exemple:
Fic1 : 2.8Go
Fic2 : 3.4Go
Fic3 : 500 Mo  
Fic4 : 900 Mo
Fic5 : 1 Go
 
Je voudrai que le prog me dise :  
DVD1 : Fic1 + Fic3 + Fic4 = 4.3Go
DVD2 : Fic2 + Fic5 = 4.4Go
 :)  
 
et pas bêtement:
DVD1 : Fic1 = 2.8Go
DVD2 : Fic2 = 3.4Go
DVD3 : Fic3 + Fic4 +Fic5 = 2.4Go
 :non:  
 
Et donc le pb c'est que je me retourne la cervelle la dessus sans trouver la moindre solution... Peu être du récursif, mais mon crane de débutant décroche trop vite... :pt1cable:  
Vous pouvez m'aider? :bounce:

Reply

Marsh Posté le 11-10-2005 à 23:36:19   

Reply

Marsh Posté le 12-10-2005 à 00:49:11    

algo : sac à dos

Reply

Marsh Posté le 12-10-2005 à 01:38:48    

Taz a écrit :

algo : sac à dos

.... :pfff:  

Reply

Marsh Posté le 12-10-2005 à 02:27:55    

Pauvre willynuisance, tu en fais une drôle de tête !
 
Pourtant, Taz a raison. C'est exactement le "knapsack problem" comme on dit chez nos voisins de la fière Albion. Avec le moteur de recherche de lunettes de protection (google), tu trouveras beaucoup de sites qui en parlent, par exemple pour la théorie, voir http://www.nist.gov/dads/HTML/knapsackProblem.html ; pour du code C, voir
http://www.darkridge.com/~jpr5/arc [...] de160.html ; pour du code Java, voir http://www.aridolan.com/ga/gaa/gaa.html ; et le meilleur pour la fin, pour du code en Lisp, voir http://www.cs.usu.edu/~vkulyukin/v [...] index.html
 
Bon courage !


Message édité par olivthill le 12-10-2005 à 11:00:49
Reply

Marsh Posté le 12-10-2005 à 02:52:56    

google != goggle

Reply

Marsh Posté le 12-10-2005 à 10:29:29    

Salut!
Merci olivthill, mais je ne connaissai pas du tout ce concept, et avec ce que Taz me disai..... :heink:  
Mais merci quand même a toi aussi taz, en cherchant après sur le forum, j'ai que Taz avait déja répondu à plusieur topic de ce genre :sarcastic:  
Donc apparement je n'invente rien :lol:  
Encore merci à vous deux!! :jap:

Reply

Marsh Posté le 12-10-2005 à 11:01:20    

Taz a écrit :

google != goggle


[:mlc]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 12-10-2005 à 11:09:30    

Oui, je me suis trompé, et je suis content que la remarque m'ait été faite, parce que sinon j'aurais refait plusieurs fois la même erreur et me serait rendu ridicule à nouveau comme je le suis actuellement. Les lunettes de protections sont des goggles et non pas des googles. :ange:

Reply

Marsh Posté le 12-10-2005 à 11:23:43    

Drapal sur ta remarque. Chaque fois que tu feras une intervention, on pourra mettre un lien pour rappeler comment, ce jour, tu t'es ridiculisé.
 
:D


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 12-10-2005 à 14:19:21    

euuhh..... OK pr google,  
Sinon pour le code j'ai compris beacoup de chose, mais je pense pas être capable de coder un truc comme ça.....
quelqu'un aurait-il un code à proposé pour ça?

Reply

Marsh Posté le 12-10-2005 à 14:19:21   

Reply

Marsh Posté le 12-10-2005 à 16:11:48    

willynuisance a écrit :

Sinon pour le code j'ai compris beacoup de chose, mais je pense pas être capable de coder un truc comme ça.....
quelqu'un aurait-il un code à proposé pour ça?


 :non: Ce n'est pas charte-compliant. Et accessoirement, c'est stupide.
 
Si tu ne comprends pas la théorie, tu ne comprendras rien au code tout fait. Si c'est au-dessus de tes capacités, soit mets-toi à jour, soit fais qq chose à ta portée.
 
Inutile d'essayer de conduire une F1 si tu t'en sors pas avec une C2, n'est-ce pas.   [:pingouino]  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 12-10-2005 à 16:42:03    

Je suis bien d'accord avec toi Sircam, et je ne compte pas m'arrêter la en dévloppement!  :)  
Mais ceci ne remet pas en cause le fait que j'ai besoin de trouver un prog qui fait le travaille dont j'ai besoin... :sarcastic:  
Donc je me disai, dans la foullé,  :ange: si quelqu'un savai ou trouver un code qui fait ça, ou quelquechose qui s'en approche et que je pourrai adapter ça me rendrai bien service pour éviter de gaspiller 2 ou 3 DVD(au prix qu'ils coutent :fou: )
Sinon vous n'êtes pas d'accord avec ça tant pis, je ne veux froisser personne, je me débrouillerai d'une manière ou d'une autre :(
Merci à vous


Message édité par willynuisance le 12-10-2005 à 16:43:16
Reply

Marsh Posté le 12-10-2005 à 16:55:53    

Citation :

besoin de trouver


Tu n'as rien écouté de ce que j'ai dit. :o
 
HINT : Et si tu l'écrivais toi-même ?
 

Citation :

si quelqu'un savai ou trouver un code qui fait ça


Tu peux chercher aussi bien que nous.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 12-10-2005 à 17:22:37    

Pour rester charte-friendly  ;)  
 
Si tu ne t'en sors pas avec cet algo, tu peux essayer quelque chose de moins efficace, mais plus simple à comprendre...
 
En réflechissant : comment tu ferais, toi, pour ranger le plus rationnellement possible tes fichiers ?
Moi, j'attaquerais comme ça :
Je trie mes fichiers du plus gros au moins gros.
Tant qu'il me reste un fichier,
   Je trie mes DVD du plus rempli au moins rempli.
   Pour chaque DVD
      J'essaye de caser mon fichier.
   Si je ne réussi pas à le caser dans un DVD entamé,
      Je le mets sur un DVD vierge.
 

Citation :

Exemple:  
Fic1 : 2.8Go  
Fic2 : 3.4Go  
Fic3 : 500 Mo  
Fic4 : 900 Mo  
Fic5 : 1 Go  


Trié => Fic2, Fic1, Fic5, Fic4, Fic3.
Je mets Fic2 dans un DVD vierge (DVD1).
Fic1 ne passe pas dans DVD1 => Je le mets dan DVD2.
Fic5 passe dans DVD1 ( 3.4 + 1 = 4.4 < 4.5 )
Fic4 ne passe pas dans DVD1 => Il passe dans DVD2 ( 2.8 + 0.9 = 3.7 < 4.5 )
Fic3 ne passe pas dans DVD1 => Il passe dans DVD2 ( 2.8 + 0.9 + 0.5 = 4.3 < 4.5 )
 
Au niveau programmation, ça devrait rester simple...
 :hello:

Reply

Marsh Posté le 12-10-2005 à 18:10:31    

macgawel> Tu n'aurais pas un morceau de code qui fait ce que tu dis, en passant ? [:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 13-10-2005 à 03:40:11    

willynuisance, en Perl il y a ce module qui fait ce que tu cherche:
http://search.cpan.org/~mschilli/A [...] ketizer.pm

Reply

Marsh Posté le 14-10-2005 à 01:08:19    

jviens de tester la solution de macgawel
ca marche nikel
c de loin la plus rapide (compare a knapsack, bloatware inside vu quil teste tout les possibles) , et la plus facile a faire (5 min 10 lignes)

Reply

Marsh Posté le 14-10-2005 à 22:23:13    

Et puisqu'ici on aime la precision, c'est "goggles" et pas "goggle".

Reply

Marsh Posté le 15-10-2005 à 10:02:28    

matafan a écrit :

Et puisqu'ici on aime la precision, c'est "goggles" et pas "goggle".


J'aimerais surtout voir la même précision dans l'utilisation du Français... Parce que pour une élite, c'est loin d'être fameux.    [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-10-2005 à 22:05:19    

Merci matafan et sircam pour ces remarques de bon aloi.
 
Par ailleurs, mon dictionnaire (Random House Webster's Unabridged Dictionary) ne comporte aucune entrée pour "google", mais il en a une pour "googol" qui signifie, je vous le donne en mille

Citation :

a number that is equal to 1 followed by 100 zeros
(introduced by U.S. mathematician Edward Kasner whose nine-year-old nephew allegedly invented it)


[:actarus44]

Reply

Marsh Posté le 17-12-2005 à 22:33:21    

Salut , je cherche depuis quelques temps un soft pour me faire ça ? tu peux m'aider peut etre ?    
 
Merci
 
PS : je ne suis pas developpeur donc si vous avez une piste d'un soft deja compilé (pour windows) MERCI  :)
 
J'ai trouvé ça -> http://www.abo.fi/~jmunsin/gcombust/
"Maximize disk by hinting which directories/files to use (binpacking/knapsack), reads cd size from disk "
 
mais je ne trouve pas son equivalent sous windows ...


Message édité par psychoboust le 17-12-2005 à 22:57:01
Reply

Marsh Posté le 18-12-2005 à 17:27:03    

j'ai fait un bout de prog qui donne ça comme resultat :
 

Citation :

combien de fichiers voulez-vous traiter ?5
taille maxi par compilation (en Mo) ?4500
Entrez la taille des fichiers (en Mo):
N° 1 -> ?2800
N° 2 -> ?3400
N° 3 -> ?500
N° 4 -> ?900
N° 5 -> ?1000
 
Il y aura 2 compilations.
voici la Liste des fichiers par compilation.
 
COMPILATION N° 1
 
Fichier N° 1
Taille : 3400
 
Fichier N° 3
Taille : 1000
 
Total pour la compilation : 4400
 
 
COMPILATION N° 2
 
Fichier N° 2
Taille : 2800
 
Fichier N° 4
Taille : 900
 
Fichier N° 5
Taille : 500
 
Total pour la compilation : 4200


 
je termine l'interface graphique et tu l'aura dispo en telechargement dans la semaine.
 
pour voir le code source :
 
http://www.lbasic.fr/forum/viewtopic.php?p=6522#6522
 
@++


Message édité par lbasic le 19-06-2007 à 21:52:06

---------------
Liberty BASIC France : http://www.lbasic.fr
Reply

Marsh Posté le 19-12-2005 à 13:49:03    

Ah c'est vraiment génial ça !
mais je m'étonne de ne pas avoir trouver de soft sur internet avec déja cette option intégré !
 
m'enfin
 
faudrait plus que ton soft soit capable de regarder tous les fichiers d'un meme dossier et de creer des dossiers de taille défini en glissant les fichiers directment et là ça serait super top !
 
EDIT : ou au moins est il possible de faire une macro Excel pour que j'ai juste à copier coller la liste de mes fichiers à la limite ?
 
 
j'ai 400 Go de video allant de 5Mo à 3Go à faire rentrer (dans n'importe quel ordre) sur le moins de dvd possible... :)  
 
 
 
Un grand Merci  :jap:


Message édité par psychoboust le 19-12-2005 à 15:29:38
Reply

Marsh Posté le 20-12-2005 à 01:55:39    

je te mets l'option souhaitée....
je reposterais quand ce sera fait.
 
@++


---------------
Liberty BASIC France : http://www.lbasic.fr
Reply

Marsh Posté le 20-12-2005 à 02:23:50    

drapal


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 20-12-2005 à 15:44:43    

trevor -> drapal ???
 
 
Merci beaucoup lbasic  :jap:

Reply

Marsh Posté le 20-12-2005 à 15:49:28    

oui je poste un message, pour garder trace de ce topic car il m'intéresse, je mets un drapeau (avec un jeu de mot à la con)


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 20-12-2005 à 18:35:33    

Cf Ignition que je développe : http://www.kcsoftwares.com/?ignition ....

Reply

Marsh Posté le 20-12-2005 à 18:36:15    

En plus je peux piloter la gravure avec CopyToDVD depuis Ignition

Reply

Marsh Posté le 22-12-2005 à 01:23:08    


 
que dire ? bah c'est exactement ce que je cherchais !!!!
 
trop fort ! un grand merci !  :jap:  
 
manque juste une petite option pour deplacer les fichiers (optimisés) directement dans des dossiers de la taille désiré.
 
 :bounce:

Reply

Marsh Posté le 22-12-2005 à 17:01:32    

C'est marrant, j'avais fait un projet à l'école la-dessus : un peu de recherche avec un prof de biomimétique. La seule différence avec ton pb, c'était qu'on n'était pas obligé de prendre tous les fichiers donnés en entrée pour les mettre sur des CDs (ou autre support).
Voici un composant en delphi : http://www.2001-space-odyssey.net/ [...] cd_cmp.zip
et voici qq infos sur ce composante : http://www.2001-space-odyssey.net/~chris/opt_cd.html (désolé, mon site est vieux, tout pourri, j'ai pas eu le temps de le remettre à jour et bien développé).
 
Sinon, le topic qui avait précédé le développement de ce composant : http://forum.hardware.fr/hardwaref [...] 4853-1.htm

Reply

Marsh Posté le 22-12-2005 à 17:13:39    

la méthode du sac à dos, c'est bien la même que celle utilisé par les FS afin de limiter la fragmentation, c'est ça ?
(à savoir, systématiquement chercher à se caser dans le plus grand trou disponible)

Reply

Marsh Posté le 22-12-2005 à 17:20:48    

ps: ouais, nan, j'ai dis une connerie :D

Reply

Marsh Posté le 22-12-2005 à 17:23:07    

le sac à dos est pas appelé aussi algo LPT, non?

Reply

Marsh Posté le 22-12-2005 à 23:23:38    

possible à vérifier.
 
Seule info sure : c'est un problème NPC (NP Complet) pour lequel il n'existe pas de solution en temps polynomial.
 
Mais sur des domaines commes des fichiers sur CD voire DVD il y a des solutions (cf Ignition) qui convergent en temps correct.

Reply

Marsh Posté le 23-12-2005 à 21:04:02    

Salut kyle,
 
Bravo pour ta belle réalisation. J'ai commencé ma version, donc je vais la finir. La mienne sera quand même plus minimaliste que ce que j'ai vu dans ta copie d'ecran.
 
Je suis en plein demenagement, donc c'est dur dur, et au 31 decembre, couik - plus de connexion donc je vais essayer de terminer avant.....
 
voici quelques images :
 
http://img473.imageshack.us/img473/6762/ecranhelp7fk.jpg
le tutoriel d'aide.
 
http://img473.imageshack.us/img473/673/ecran9lt.jpg
l'interface principale.
 
http://img473.imageshack.us/img473/8854/ecran20pf.jpg
la liste des fichiers avant le tri
 
@++


Message édité par lbasic le 23-12-2005 à 21:15:10

---------------
Liberty BASIC France : http://www.lbasic.fr
Reply

Marsh Posté le 26-12-2005 à 22:19:50    

Merci encore !
 
Tiens moi au jus lbasic pour que je puisse tester ton soft  :)

Reply

Marsh Posté le 09-01-2006 à 12:17:39    

Si cela vous intéresse, freeware : http://lars.werner.no/wordpress/?page_id=2
 
Je sais que, surtout dans cette catégorie, le plaisir est de trouver une "méthode" pour y parvenir, mais pour les feignasses... et puis pour ceux qui codent, peut-être cela peut-il donner des idées quant aux améliorations à apporter.
 
Pas essayé.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed