Beste medetweakers,
Voor een website waarmee ik bezig ben loop ik tegen een efficiency probleem aan. Het betreft een website welke virtuele items van games e.d. heeft. Deze virtuele items staan op verschillende accounts(warehouses). Nu als iemand een levering van virtuele items wilt hebben kan het zijn dat de items die deze persoon wilt van verschillende accounts moeten worden afgehaald.
Nu is dit een vrij bekend probleem, zie bijvoorbeeld deze voorbeeld op stackoverflow http://stackoverflow.com/...-from-multiple-warehouses. Hierbij heb ik ookal enkele voorbeelden gevonden om het "minimum set cover" probleem om te lossen zoals een PHP voorbeeld hier http://stackoverflow.com/...897/minimum-set-cover-php.
Je zou denken oh top! kan je gelijk overnemen! maar helaas mist voor mij hier nog een gedeelte. Namelijk de hoeveelheid op voorraad.
Het kan namelijk voorkomen dat "warehouse" 1 10 items van A heeft, en warehouse B heeft er 5.en C heeft er 3. De klant wilt er 11. Dus zou die de gegevens van A en B, of A en C kunnen halen. Maar daarintegen wilt de klant ook nog een ander item hebben die weer anders voorradig is.
Ik zoek dus een algoritme die de beste combinatie van "warehouses" vindt. Dat wil zeggen zo min mogelijk aantal warehousen nodig voor de transactie.
Een PHP voorbeeld van als voorraad geen probleem zou zijn:
Echter zou bij mij de mainset al een multidimensionale array worden en de subsets zullen arrays van drie diep hebben, voorraad zou namelijk meespelen.
Mijn vraag is nu dus of iemand mij de juiste weg op kan wijzen om dit probleem op te lossen.
Groet
Marco
Voor een website waarmee ik bezig ben loop ik tegen een efficiency probleem aan. Het betreft een website welke virtuele items van games e.d. heeft. Deze virtuele items staan op verschillende accounts(warehouses). Nu als iemand een levering van virtuele items wilt hebben kan het zijn dat de items die deze persoon wilt van verschillende accounts moeten worden afgehaald.
Nu is dit een vrij bekend probleem, zie bijvoorbeeld deze voorbeeld op stackoverflow http://stackoverflow.com/...-from-multiple-warehouses. Hierbij heb ik ookal enkele voorbeelden gevonden om het "minimum set cover" probleem om te lossen zoals een PHP voorbeeld hier http://stackoverflow.com/...897/minimum-set-cover-php.
Je zou denken oh top! kan je gelijk overnemen! maar helaas mist voor mij hier nog een gedeelte. Namelijk de hoeveelheid op voorraad.
Het kan namelijk voorkomen dat "warehouse" 1 10 items van A heeft, en warehouse B heeft er 5.en C heeft er 3. De klant wilt er 11. Dus zou die de gegevens van A en B, of A en C kunnen halen. Maar daarintegen wilt de klant ook nog een ander item hebben die weer anders voorradig is.
Ik zoek dus een algoritme die de beste combinatie van "warehouses" vindt. Dat wil zeggen zo min mogelijk aantal warehousen nodig voor de transactie.
Een PHP voorbeeld van als voorraad geen probleem zou zijn:
PHP:
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
| $MainSet=array(1, 2, 3, 4, 5, 6, 7); $SubSet=array(array(1,4), array(2, 5), array(3, 6), array(1, 2, 3), array(4, 5, 6)); $UncoveredElements=$MainSet; $CoveringSets=array(); while (count($UncoveredElements)>0){ $S=SubSetS($UncoveredElements, $SubSet); if (is_array($S)){ $UncoveredElements=array_diff($UncoveredElements, $S); $CoveringSets[]=$S; }else break; //finish work } echo "Sets that cover MainSet are:"; var_dump($CoveringSets); //Subset S is chosen that covers as many uncovered elements as possible function SubSetS($UncoveredElements, $SubSetArr){ $max=0; $s=array(); foreach($SubSetArr as $SubSet){ $intersectArr=array_intersect($UncoveredElements, $SubSet); $weight=count($intersectArr); if ($weight>$max){ $max=$weight; $s=$SubSet; } } if ($max>0) return $s; else return 0; } |
Echter zou bij mij de mainset al een multidimensionale array worden en de subsets zullen arrays van drie diep hebben, voorraad zou namelijk meespelen.
Mijn vraag is nu dus of iemand mij de juiste weg op kan wijzen om dit probleem op te lossen.
Groet
Marco
3X Multiplus II 10KVA, 2x MPPT RS 450/200, 48v 82kWh LiFePO4, 21kwp PV