IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Calcul sur toutes les combinaisons possible (optimisation)


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Calcul sur toutes les combinaisons possible (optimisation)
    Bonjour,

    J'ai posé la question dans le forum python mais apparemment c'est ici qu'il faut demander.

    Voici le problème :
    Soit un univers de 20 actions. Chaque action a une note ESG, ODD et Carbon qui vont de 1 à 10.
    L'objectif est de retrouver un portefeuille de 3 actions qui a la meilleure moyenne des 3 notes: ((somme note ESG/3) + (somme note ODD / 3) + (Somme note Carbone / 3) / 3

    Voici mon code qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    from itertools import combinations
    import pandas as pd
     
    actions = {
        "action1": {"ESG": 8, "ODD": 5, "Carbon": 6},
        "action2": {"ESG": 7, "ODD": 9, "Carbon": 3},
        "action3": {"ESG": 9, "ODD": 7, "Carbon": 4},
        "action4": {"ESG": 10, "ODD": 4, "Carbon": 8},
        "action5": {"ESG": 3, "ODD": 10, "Carbon": 1},
        "action6": {"ESG": 4, "ODD": 6, "Carbon": 7},
        "action7": {"ESG": 6, "ODD": 2, "Carbon": 10},
        "action8": {"ESG": 1, "ODD": 8, "Carbon": 5},
        "action9": {"ESG": 5, "ODD": 3, "Carbon": 9},
        "action10": {"ESG": 2, "ODD": 1, "Carbon": 2},
        "action11": {"ESG": 10, "ODD": 8, "Carbon": 5},
        "action12": {"ESG": 7, "ODD": 4, "Carbon": 3},
        "action13": {"ESG": 8, "ODD": 5, "Carbon": 6},
        "action14": {"ESG": 4, "ODD": 9, "Carbon": 2},
        "action15": {"ESG": 3, "ODD": 10, "Carbon": 1},
        "action16": {"ESG": 6, "ODD": 2, "Carbon": 10},
        "action17": {"ESG": 9, "ODD": 1, "Carbon": 8},
        "action18": {"ESG": 5, "ODD": 7, "Carbon": 4},
        "action19": {"ESG": 2, "ODD": 3, "Carbon": 7},
        "action20": {"ESG": 1, "ODD": 6, "Carbon": 9}
    }
     
    x = 3
    df = pd.DataFrame(columns=['actions', 'ESG', 'ODD', 'Carbon', 'Moyenne'])
     
    for combi in combinations(actions.keys(), x):
        ESG = 0
        ODD = 0
        Carbon = 0
        for action in combi:
            ESG += actions[action]['ESG']
            ODD += actions[action]['ODD']
            Carbon += actions[action]['Carbon']
        df = df.append({'actions': combi, 'ESG': ESG/3, 'ODD': ODD/3, 'Carbon': Carbon/3, 'Moyenne': ((ESG/3)+(ODD/3)+(Carbon/3))/3}, ignore_index=True)
     
    print(df)
    Mon soucis c'est que dans le cas ci-dessus un univers de 20 actions et un portefeuille de 3 actions, soit 1139 combinaisons possible.
    Dans la réalité, il y a 1500 actions et le portefeuille peut en contenir jusqu'à 500. Le nombre de combinaison possible est colossal et le calcul est interminable.

    Quelqu'un saurait comment rechercher le meilleur portefeuille en prenant en compte les contraintes?
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 263
    Points : 15 573
    Points
    15 573
    Par défaut
    j'ai l'impression que la moyenne de 3 actions est proportionnelle à la somme des 3 indicateurs de chaque actions.
    donc les 3 actions que vous cherchez correspondent aux 3 actions qui ont la plus grande somme séparément, vous n'avez pas besoin de calculer les combinaisons.

    dans votre exemple, ce sont bien les actions 11, 4 et 3 qui correspondent à vos critères ?

Discussions similaires

  1. [Python 3.X] [Python 3.X]Calcul sur toutes les combinaisons possible (optimisation)
    Par Fani0304 dans le forum Calcul scientifique
    Réponses: 13
    Dernier message: 26/03/2023, 11h19
  2. Calcul de toutes les combinaisons possibles
    Par fighterof68 dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 14/01/2015, 14h27
  3. Réponses: 22
    Dernier message: 27/10/2006, 02h26
  4. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  5. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo