0
votes

Besoin d'obtenir une combinaison d'enregistrements de la trame de données dans R qui satisfait une cible spécifique dans R

Permettez-moi de dire que j'ai un cadre de données ci-dessous dans R avec 500 enregistrements de joueur avec les colonnes suivantes

  • playerid
  • TOTALRUNS
  • RunRate
  • AutionCost

    Maintenant maintenant sur les 500 joueurs, je veux que mon code me donne plusieurs combinaisons de 3 joueurs qui satisferaient les critères suivants. Quelque chose comme un problème de meurtrier.

    • La somme des coûts de vente aux enchères de tous les 3 joueurs ne doit pas dépasser x
    • Ils devraient avoir un minimum de Y totalRuns
    • Leur runrate doit être plus élevé que le taux de course moyen de tous les joueurs.

      aide gentiment avec cela. Merci.


2 commentaires

Y a-t-il un code?


S'il vous plaît montrer le code que vous avez essayé et où vous tombez court.


3 Réponses :


1
votes
# library(iterpc) # uncomment if not loaded
I <- iterpc(5, 3)
getnext(I)

0 commentaires

1
votes

Il y a donc choisir (500,3) façons de choisir 3 joueurs de 20 708 500. Il n'est pas impossible de générer toutes ces combinaisons COMMUN pourrait le faire pour vous, mais je ne pouvais pas être dérangé en attente de la découvrir. Si vous faites cela avec des identifiants de joueur, puis testez vos trois conditions, ce serait un moyen de résoudre votre problème. Une alternative serait une méthode de Monte Carlo. Sélectionnez trois joueurs qui satisfont initialement à vos conditions. Choisissez au hasard un autre joueur qui n'appartient pas au trio actuel, s'il satisfait aux conditions, enregistrez la combinaison et répétez. Si vous optimisez (ce n'est pas clair, mais votre question a une optimisation dans la balise), le nouveau joueur doit aboutir à un nouveau trio meilleur que le dernier, donc s'il n'améliore pas votre fonction objective (quoi que ce soit être), alors vous n'acceptez pas le commerce.


0 commentaires

1
votes

Merci, j'ai utilisé une combinaison des réponses de John's et James.

  1. a filtré tous les joueurs qui ne satisfont pas les critères et qui ne réduisent plus que 90 joueurs.
  2. Puis j'ai utilisé des joueurs en aléatoire jusqu'à ce que toutes les variations soient épuisées
  3. Enfin, j'ai calculé des métriques combinées pour chaque variation (ensemble) des joueurs pour arriver à l'ensemble optimisé.

    Le code est un peu désordonné et ne veut pas la publier ici.


0 commentaires