|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 926
|
Che tipo di algoritmo risolve questo problema semplice?
Ho un budget di 10 euro, e con questo budget devo comprare 20 caramelle.
Devo comprare obbligatoriamente 5 caramelle del tipo A, 10 del tipo B e 5 del tipo C. Posso comprare più volte la stessa caramella. (Ogni caramella è identificata da una coppia di valori, il costo e il grado di bontà/qualità, caramelle dello stesso tipo possono avere coppia di valori diversi) In che modo riesco a giungere alla combinazione ottimale? Per combinazione ottimale si intende le 20 caramelle che riesco ad acquistare con 10 euro che mi diano un grado di bontà/qualità totale maggiore. Posso comprare più volte la stessa caramella. Qual'è l'algoritmo che serve a me? (Ho dato un'occhiata agli algoritmi studiati in ricerca operativa per grafi, percorsi minimi, ecc. ma non ho trovato nulla) Inoltre, quando mi ritrovo di fronte a questi problemi, non riuscendoci ad arrivare logicamente, qual'è il metodo migliore per ricercare la soluzione? Grazie p.s. Adesso sto dando un'occhiata al problema del consumatore e della scelta ottima del paniere... Calcolando per ogni caramella il grado di appetibilità, ovvero il rapporto qualità prezzo (qualità/costo) si riesce ad ordinare le caramelle più convenienti per ogni tipo. Ovviamente prendendo le 5 caramelle più convenienti per ogni tipologia si potrebbe non spendere l'intero budget, oppure sforare il budget. Inoltre si deve tener conto della relazione tra i vari tipi di caramelle, cioè rinunciare ad una certa caramella di tipo A mi permetterebbe di acquistare una caramella di tipo B che mi permetterebbe di raggiungere la scelta ottimale.
__________________
Intel COre 2 Duo E5200 2.5Ghz 2Mb - Arctic Cooling Freezer 7PRO PWM 775 - ASROCK 775 P43R1600Twins-110dB - ATI HD4850 Gainward Golden Sample 512MB - DDR2 800Mhz 4GB CORSAIR TWIN2X KIT CL5 rt. (2x2GB) - COOLERMASTER Elite 330 Midi Black - ARCTIC COOLING Fan 12 PWM rt 120x120 - Corsair CMPSU-450VXEU 450W - SEAGATE 500GB ST3500320AS 7200rpm 32MB 7200.11 - DVD-RW Pioneer DVR-216D-BK Nero SATA - ASUS LCD 22" VW222U 2ms Ultima modifica di Alello : 25-08-2013 alle 12:02. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 926
|
__________________
Intel COre 2 Duo E5200 2.5Ghz 2Mb - Arctic Cooling Freezer 7PRO PWM 775 - ASROCK 775 P43R1600Twins-110dB - ATI HD4850 Gainward Golden Sample 512MB - DDR2 800Mhz 4GB CORSAIR TWIN2X KIT CL5 rt. (2x2GB) - COOLERMASTER Elite 330 Midi Black - ARCTIC COOLING Fan 12 PWM rt 120x120 - Corsair CMPSU-450VXEU 450W - SEAGATE 500GB ST3500320AS 7200rpm 32MB 7200.11 - DVD-RW Pioneer DVR-216D-BK Nero SATA - ASUS LCD 22" VW222U 2ms |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
ho l'impressione che il problema sia mal posto.
se hai 3 tipi di caramelle con 3 tipi di bontà e sei obbligato a comprare 5 A, 10 B e 5 C e hai un massimo di 20 caramelle, non c'è niente da ottimizzare. la bontà totale sarà data da bontàA*5+bontàB*10+bontàC*5. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 926
|
Quote:
p.s. Hai ragione, era spiegato male. Ho corretto, grazie.
__________________
Intel COre 2 Duo E5200 2.5Ghz 2Mb - Arctic Cooling Freezer 7PRO PWM 775 - ASROCK 775 P43R1600Twins-110dB - ATI HD4850 Gainward Golden Sample 512MB - DDR2 800Mhz 4GB CORSAIR TWIN2X KIT CL5 rt. (2x2GB) - COOLERMASTER Elite 330 Midi Black - ARCTIC COOLING Fan 12 PWM rt 120x120 - Corsair CMPSU-450VXEU 450W - SEAGATE 500GB ST3500320AS 7200rpm 32MB 7200.11 - DVD-RW Pioneer DVR-216D-BK Nero SATA - ASUS LCD 22" VW222U 2ms |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
in questo caso ipotizzando che
A1,A2,A3,A4... sono le varie tipologie caramelle di tipo A e analogamente B1,B2...B1,B2 puoi metterlo cosi A(n) = quantità di quella caramella di tipo A x(n) = bontà di quella caramella di tipo A B(n) = quantità di quella caramella di tipo B y(n) = bontà di quella caramella di tipo B C(n) = quantità di quella caramella di tipo C z(n) = bontà di quella caramella di tipo C obiettivo max sommatoria A(n)*x(n) + B(n)*y(n) + C(n)*z(n) vincoli sommatoria A(n) = 5 sommatoria B(n) = 10 sommatoria C(n) = 5 A(n) + B(n) + C(n) = 20 anche se è un vincolo ridondante credo in quanto si deduce già dai 3 sopra. A,B,C numeri interi positivi (altrimenti ti salta fuori un valore 0,7 A che non ha senso per quanto riguarda un algoritmo mi pare di ricordare che per l'ottimizzazione intera quelli più gettonati sono branch & bound, piani di taglio, gomory. però sono cose che ho studiato tempo fa e non ricordo benissimo... tra l'altro casualità vuole che quell'esame non l'ho passato e devo darlo a settembre quindi a breve ricomincerò a studiarlo
Ultima modifica di OoZic : 25-08-2013 alle 13:15. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
A me sembra un tipico problema di Linear Optimization (o Linear Programming).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
E' il cosiddetto problema dello zaino
https://en.wikipedia.org/wiki/Knapsack_problem dovresti trovare tutto quello che ti serve nel tuo libro di testo (o con due clic partendo dalla pagina qui sopra...)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:29.




















