मुझे लगता है कि यह एक शेड्यूलिंग समस्या है, लेकिन मुझे इस पर भी यकीन नहीं है! मैं जो चाहता हूं वह गैर-ओवरलैपिंग खरीद निर्णयों के इष्टतम अनुक्रम को ढूंढना है, जब मुझे उनके मूल्य का पूरा ज्ञान हो और भविष्य में कौन से अवसर आ रहे हैं।गैर-ओवरलैपिंग खरीद का इष्टतम अनुक्रम
कल्पना करें कि एक थोक व्यापारी जो विभिन्न वस्तुओं को बेचता है जिन्हें मैं अपनी दुकान के लिए खरीदना चाहता हूं। किसी भी समय उनके पास कई विशेष ऑफ़र चल सकते हैं; मैं पूरी कीमत पर बेचूंगा, इसलिए उनकी छूट मेरा लाभ है।
मैं लाभ को अधिकतम करना चाहता हूं, लेकिन पकड़ यह है कि मैं एक समय में केवल एक ही चीज़ खरीद सकता हूं, और क्रेडिट जैसी कोई चीज़ नहीं, और बदतर, डिलीवरी देरी होती है। अच्छी खबर यह है कि जैसे ही उन्हें वितरित किया जाता है, मैं वस्तुओं को बेच दूंगा, और फिर मैं अपना पैसा फिर से खर्च कर सकता हूं। तो, सभी विकल्पों के माध्यम से एक रास्ता हो सकता है: मैं सोमवार को 100 किलो सेब खरीदता हूं, उन्हें मंगलवार को वितरित किया जाता है। मैं फिर रविवार को 20 नन वेशभूषा, उचित रूप से पर्याप्त, खरीदता हूं। मैं कुछ दिनों तक छोड़ देता हूं, जैसा कि मुझे पता है कि बुधवार को उन्हें भारी छूट पर फेरारी मिलेगी। इसलिए मैं उनमें से एक खरीदता हूं, इसे निम्नलिखित मंगलवार को दिया जाता है। और इसी तरह।
आप लाभदायक लाभ पर विचार कर सकते हैं या नहीं। एल्गोरिदम आज के विशेष प्रस्तावों में से किसी एक को चुनने, या एक दिन का इंतजार करने के बीच प्रत्येक चरण में एक निर्णय के लिए आता है क्योंकि कल कुछ बेहतर आ रहा है।
चलिए अमूर्त है कि थोड़ा सा। खरीदें और डिलीवरी दिन-बाद-युग बन जाते हैं। लाभ खरीद मूल्य द्वारा विभाजित बिक्री मूल्य के रूप में लिखा जाता है। अर्थात। 1.00 का मतलब तोड़ना भी है, 1.10 का मतलब 10% लाभ है, 2.0 का मतलब है कि मैंने अपना पैसा दोगुना कर दिया।
buy delivery profit
1 2 1.10 Apples
1 3 1.15 Viagra
2 3 1.15 Notebooks
3 7 1.30 Nun costumes
4 7 1.28 Priest costumes
6 7 1.09 Oranges
6 8 1.11 Pears
7 9 1.16 Yellow shoes
8 10 1.15 Red shoes
10 15 1.50 Red Ferrari
11 15 1.40 Yellow Ferrari
13 16 1.25 Organic grapes
14 19 1.30 Organic wine
नोट: अवसरों खरीद दिन पर केवल मौजूद हैं (यदि कोई उन्हें खरीदता है जैसे कार्बनिक अंगूर शराब में बनाया हो!), और मैं प्रसव के रूप में एक ही दिन में बेचने के लिए मिलता है, लेकिन मेरी नहीं खरीद सकते हैं अगले दिन तक अगले आइटम। इसलिए मैं अपने नन वेशभूषा टी = 7 पर नहीं बेच सकता और तुरंत टी = 7 पर पीले जूते खरीद सकता हूं।
मुझे उम्मीद थी कि वहां एक ज्ञात सर्वश्रेष्ठ एल्गोरिदम मौजूद है, और इसके लिए पहले से ही एक आर मॉड्यूल है, लेकिन एल्गोरिदम या अकादमिक साहित्य भी अच्छा होगा, जैसा कि किसी भी अन्य भाषा में कुछ भी होगा। गति मायने रखती है, लेकिन मुख्य रूप से जब डेटा बड़ा हो जाता है, तो मैं जानना चाहता हूं कि यह ओ (एन) है, या जो भी हो।
वैसे, क्या अधिकतम संभव वितरण विलंब होने पर सबसे अच्छा एल्गोरिदम बदलता है? जैसे
buy,delivery,profit,item
1,2,1.10,Apples
1,3,1.15,Viagra
2,3,1.15,Notebooks
3,7,1.30,Nun costumes
4,7,1.28,Priest costumes
6,7,1.09,Oranges
6,8,1.11,Pears
7,9,1.16,Yellow shoes
8,10,1.15,Red shoes
10,15,1.50,Red Ferrari
11,15,1.40,Yellow Ferrari
13,16,1.25,Organic grapes
14,19,1.30,Organic wine
या JSON के रूप में:
{"headers":["buy","delivery","profit","item"],"data":[[1,2,1.1,"Apples"],[1,3,1.15,"Viagra"],[2,3,1.15,"Notebooks"],[3,7,1.3,"Nun costumes"],[4,7,1.28,"Priest costumes"],[6,7,1.09,"Oranges"],[6,8,1.11,"Pears"],[7,9,1.16,"Yellow shoes"],[8,10,1.15,"Red shoes"],[10,15,1.5,"Red Ferrari"],[11,15,1.4,"Yellow Ferrari"],[13,16,1.25,"Organic grapes"],[14,19,1.3,"Organic wine"]]}
या एक अनुसंधान डेटा फ्रेम के रूप में:
structure(list(buy = c(1L, 1L, 2L, 3L, 4L, 6L, 6L, 7L, 8L, 10L,
11L, 13L, 14L), delivery = c(2L, 3L, 3L, 7L, 7L, 7L, 8L, 9L,
10L, 15L, 15L, 16L, 19L), profit = c(1.1, 1.15, 1.15, 1.3, 1.28,
1.09, 1.11, 1.16, 1.15, 1.5, 1.4, 1.25, 1.3), item = c("Apples",
"Viagra", "Notebooks", "Nun costumes", "Priest costumes", "Oranges",
"Pears", "Yellow shoes", "Red shoes", "Red Ferrari", "Yellow Ferrari",
"Organic grapes", "Organic wine")), .Names = c("buy", "delivery",
"profit", "item"), row.names = c(NA, -13L), class = "data.frame")
लिंक
अगरdelivery - buy <= 7
यहाँ सीएसवी के रूप में उपरोक्त डेटा है
Are there any R Packages for Graphs (shortest path, etc.)? (igraph एक shortest.paths समारोह प्रदान करता है और सी पुस्तकालय के अलावा, एक R package और एक अजगर इंटरफ़ेस है)
बस स्पष्ट होना - आप आइटम 1 को तब तक नहीं खरीद सकते जब तक आइटम 1 वितरित नहीं किया जाता है? –
"सर्वश्रेष्ठ पथ" का विचार तुरंत मुझे गतिशील प्रोग्रामिंग सोचता है। –
@VaughnCato यह सही है। (जैसा ऊपर बताया गया है, मैं अपने नन वेशभूषा टी = 7 पर नहीं बेच सकता और तुरंत टी = 7 पर पीले जूते खरीद सकता हूं; मुझे टी = 8 के लिए इंतजार करना होगा और इसके बजाय लाल जूते प्राप्त करना होगा।) –