Problème d'installation des étagères

Do you want to read our courses in English? please visit our new website cs-teachers.com Click here

Problème d'installation des étagères

Problème ! Etant donné la longueur du mur L et des étagères de deux longueurs m et n, trouvez le nombre de chaque type d'étagère à utiliser et l'espace disponible restant dans la solution optimale, de sorte que l'espace vide soit minimal. La plus grande des deux étagères est moins chère, c'est donc préférable. Cependant, le coût est secondaire et la première priorité est de minimiser l'espace vide sur le mur.
Exemple :
L = 7 m = 3 n = 5
 2 0 1 (Nous utilisons deux unités de type m et il reste 1 place.)

L = 29 m = 3 n = 9
 0 3 2 (0 * 3 + 3 * 9 = 27 ; 29 - 27 = 2 )

Une approche simple et efficace consistera à essayer toutes les combinaisons possibles d'étagères qui s'insèrent dans la longueur du mur.
Pour mettre en œuvre cette approche avec la contrainte que les plus grandes étagères coûtent moins cher que la plus petite, à partir de 0, nous n'augmentons pas les étagères de type plus grand jusqu'à ce qu'elles puissent être ajustées. Pour chaque cas, nous calculons l'espace vide et stockons finalement cette valeur qui minimise l'espace vide. si l’espace vide est identique dans les deux cas, nous préférons celui qui n’a plus aucun des plus grands étagères.

    def ProbEtageres(L, m, n):
        nb_m = L/m
        nb_n = 0
        reste = L % m
    
        # p et q sont des nombres d'étagères de longeur m,n  respectivement.
        # r est la longueur de mur restante
        p = 0
        q = 0
        r = 0
        while (L >= n):
            q += 1
            L -= n
            p = L / m
            r = L % m
            if (r <= reste):
                nb_m = p
                nb_n = q
                reste = r
        return(nb_m, nb_n, reste)
    
    
    # Tester la fonction
    L = 7
    m = 3
    n = 5
    nb_m, nb_n, reste = ProbEtageres(L, m, n)
    print(str(int(nb_m)) + " " + str(nb_n) + " " + str(reste))
2 0 1

Partager ce cours avec tes amis :

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.

0 Commentaire(s)

Pour laisser un commentaire vous devez avoir un compte Inscription, ou Se connecter