Problème typique et méthode d'exécution
$ n $ Candidats (sous-ensemble $ S_j (\ subseteq M), j \ in N = \ {1, \ dots, n \ of set $ M = \ {1, \ dots, m \} $ } $) Reçoit le montant $ c_j $. Faites votre choix parmi les candidats afin que le montant total d'argent soit maximisé. Ne sélectionnez pas les éléments en double de l'ensemble $ M $ On peut également considérer que la fonction objectif est maximisée et que l'inégalité de la condition de contrainte est inversée dans Assembly Covering Problem.
usage
Signature: combinatorial_auction(n, cand, limit=-1)
Docstring:
Problème d'enchères combinées
Maximiser le prix de vente afin que le nombre maximum de candidats pour chaque acheteur ne soit pas dépassé sans vente en double des éléments
contribution
n:Nombre d'éléments
cand: (Somme d'argent,Sous-ensemble,ID d'acheteur)Liste des candidats. Vous n'êtes pas obligé d'avoir une pièce d'identité d'acheteur
limit:Nombre maximum de candidats pour chaque acheteur.-1 est illimité. Un dictionnaire utilisant l'identifiant de l'acheteur comme clé est possible
production
Liste des numéros de la liste des candidats sélectionnés
python
#échantillon
from ortoolpy import combinatorial_auction
cand = [
( 15, (0,2), 0),
( 10, (0,), 1),
( 8, (1,), 1),
( 14, (1,2), 2),
]
combinatorial_auction(3, cand)
résultat
[1, 3]
python
# pandas.DataFrame
from ortoolpy.optimization import CombinatorialAuction
CombinatorialAuction('data/auction.csv')
id | price | element | buyer | |
---|---|---|---|---|
2 | 1 | 10.0 | a | 1 |
4 | 3 | 14.0 | b | 1 |
5 | 3 | NaN | c | 1 |
python
# pandas.DataFrame
from ortoolpy.optimization import CombinatorialAuction
CombinatorialAuction('data/auction.csv',limit=1)
id | price | element | buyer | |
---|---|---|---|---|
0 | 0 | 15.0 | a | 0 |
1 | 0 | NaN | c | 0 |
3 | 2 | 8.0 | b | 2 |
Recommended Posts