Problème de livraison

Olympiades mathématiques, énigmes et défis
MangaII
Messages: 3
Enregistré le: 07 Mai 2008, 09:53

Problème de livraison

par MangaII » 07 Mai 2008, 10:38

Bonjour,
dans le cadre d'un projet d'études, je dois réaliser un programme pour trouver le meilleur prix !
J'ai un niveau correct en math, mais là, je manque d'idée ...

Je vais essayer d'exposer le problème le plus clairement possible :

On dispose de plusieurs produits (P) et et de plusieurs fournisseurs (F) qui sont susceptibles de livrer les produits P.
Chaque fournisseur propose la totalité des produits P mais à des tarifs différents. Chaques fournisseurs facture en sus des frais de ports (différents). Mais certains fournisseurs peuvent faire des remises sur les frais de port au delà d'un certain montant !

Le but est de trouver l'option la plus avantageuse pour le client (en utilisant 1 ou plusieurs fournisseurs).

Cas concret 3 fournisseurs (F1, F2, F3) et 3 produits (P1, P2, P3):

[PHP]
. F1 F2 F3
P1 2€ 3€ 4€
P2 19€ 17€ 9€
P3 8€ 9€ 5€

F1 Port : 12€
F2 Port : 14€ gratuit à partir de 25€
F3 Port : 40€
[/PHP]

Le client choisit :
P1 x 10
P2 x 5
P3 x 2

Total chez le fournisseur 1 : 131€+12€ : 143 €
Total chez le fournisseur 2 : 133€ + 0 : 133 €
Total chez le fournisseur 3 : 95€ + 35€ : 130€

A priori, le plus intéressant est le fournisseur 3 SAUF QUE :
En prenant P2 et P3 chez F3 et P1 chez F2 on obtient :
chez F2 (P1): 10x3 (port gratuit > 25) soit 30€
chez F3 (P2+P3): 9x5 + 5x2 +35 = 90€

L'option la plus intéressante est donc celle ci pour un total de 120€

P1 serait encore moins cher chez F1 mais avec les frais de ports ca dépasse le montant chez F2

Il est donc parfois plus intéressant d'utiliser plusieurs fournisseurs pour réduire le cout au client.
Mon soucis est de faire calculer la meilleure option à l'ordinateur.
Dans le cas de 3 fournisseur et 3 produits c'est jouable.
Il faut imaginer qu'il puisse y avoir 50 produits et 25 fournisseurs avec des quantités et des prix très variables.
Le nombre de combinaisons se compte dessuite en milliards ...
Même si l'ordinateur est rapide, je ne peux pas me permettre de perdre beaucoup de temps sur ce calcul !

Quelqu'un aurait-il une solution pour calculer rapidement la meilleure option (sans tester toutes les combinaisons) ?


Merci de votre patiente !

Nicolas



MangaII
Messages: 3
Enregistré le: 07 Mai 2008, 09:53

par MangaII » 09 Mai 2008, 10:54

A priori, pas grand monde n'a d'iée ...

Je cherche si il est possible d'utiliser un algorithme de pathfinding, mais je ne suis pas sur que ce soit très applicable !
Si quelqu'un en sait quelque chose ...

Nico

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 22 Aoû 2005, 23:53

par Patastronch » 09 Mai 2008, 17:58

Modélise ton problème avec un programme linéaire et fait un simplex.

MangaII
Messages: 3
Enregistré le: 07 Mai 2008, 09:53

par MangaII » 11 Mai 2008, 08:54

euh ... merci ... mais là, je vois pas trop comment faire çà !
Je n'ai jamais fait de simplex et pour la modélisation linéaire, je ne vois pas trop ce que ca peut donner dans ce cas de figure.

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 22 Aoû 2005, 23:53

par Patastronch » 11 Mai 2008, 13:04

L'algorithme du simplex permet de résoudre efficacement (bien qu'il ne soit pas polynomial) les programmes linéaire convexe.

Pour modéliser ton problème en programme linéaire il te faut fixer ta fonciton objective, en l'occurence ici sera le cout cumulé de chaque produit commandé chez les fournisseurs ajouté aux frais de ports (j'ai pas réfléchis pour les frais de port, mais ca demande surement un peu de reflexion, car la fonction objective doit être une fonction linéaire idéalement, sinon ca demande l'usage d'un algo plus lent).

Ensuite tu modélises tes contraintes qui sont ici tres simple.

Exemple sans les frais de ports (j'ai pas la motivation de me pencher sur cette question désolé) :

Fonction objective : minimiser la fonction => x1 * 2 + x2 * 19 + x3 * 8 + x4 * 3 + x5 * 17 + x6 * 9 + x7 * 4 + x8 * 9 + x9 * 5

sous les contraintes suivantes :
x1+x4+x7 > n1
x2+x5+x8 > n2
x3+x6+x9 > n3

Où n1, n2 et n3 sont les quantité désirées pour les produits P1,P2 et P3
Bon, ensuite il te faudra peut etre utiliser une autre variante algorithmique que le simplex, car tu cherches une solution entiere, c'est a dire que tu interdis d'acheter 1.3 produits P1 chez le fournisseur 1.

Enfin bon, l'idée est la, modéliser ton probleme sous forme d'un programme linéaire (voir quadratique si on ne peut vraiment pas linéariser les frais de ports) et utiliser un algorithme de résolution en fonction de tes contrinte comme le simplex (mais je crois que c'est uniquement dans le cas des variables continue, donc il faudra surment en utiliser un autre, surtout si les frais de port ne se linéarisent pas).

Bon courage.

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite