| 

.NET C# Java Javascript Exception

5
Ich bin schon die ganze Zeit am grübeln aber ich komme nicht weiter. Ich hoffe ihr habt ein vorschlag der bei mir, den "Internen Schalter" umlegt und es endlich "Klick" macht.

Ich habe eine Klasse geschrieben die von diversen Großlieferanten, über deren Webschnittstellen, deren Lagerbestand abfragt und mir lokal für eine Warenwirtschaft speichert.

Nun ist es so das bei einigen Großlieferanten +30K Artikelbestände vorhanden sind und ich natürlich nicht mein Skript Tag und Nacht laufen lassen möchte, bis er sich durch alle Datensätze gearbeitet hat.

Ich habe schon daran gedacht jedem Produkt eine Art "Punktestand" zu geben, anhand dieser dann entschieden wird, in welchen Intervall der Bestand neu angefragt werden soll.
Jeh mehr Punkte desto kleiner die Zeitspanne zum nächsten Abfragen.

Nach dem Beispiel:
Artikel A: Bestand 10
Artikel A: Bestand 9 -> Punkt -2
Artikel A: Bestand 11 -> Punkt +1

(fixtiv werte)

Nun stehe ich komplett auf den schlauch und weiß keine andere möglichkeit sowas zu realisieren, bzw ob es sinnvoll ist, mein oben genanten Ansatz realisiert zu bekommen.

Hat wer eine ergänzende Idee oder eine bessere, mir bei meinen Frage zu helfen?
News:
21.03.2011
Marco Rieger 820 8
Bietet die Schnittstelle keine Möglichkeit, einen Timestamp mitzugeben, so dass das ERP bereits entscheiden kann, welche Datensätze überhaupt übermittelt werden?
Daniel Kuppitz 21.03.2011
verstehe nicht ganz worauf du hinaus möchtest - könntest das bissel genauer beschreiben?
Marco Rieger 22.03.2011
3 Antworten
2
Das könnte man als einfachen Basis-Code verwenden.

var schwellwert = 10;
if(ArtikelMenge < schwellwert && ArtikelInfoVon > Now()-1) Execute Abruf()
else if(ArtikelMenge >= schwellwert && ArtikelInfoVon > Now()+3) Execute Abruf()


So .. nun ist die 10 hier aber ein fester Wert. Ich würde stattdessen schauen wie häufig ich den Artikel im letzten Monat (oder mehr) bereits bestellt hatte und dadurch ermitteln wie wahrscheinlich es ist das der artikel auch von anderen häufig bestellt wird.

var schwellwert = Math.Max(10,select count(*) from tblBestellungen where ArtikelId = ... and BestellDatum > Now()-30)


Alternativ könnte man das Programm auch die erste Woche durchlaufen lassen und schauen wie oft sich die Liefermenge innerhalb von 7 Tage geändert hat.

Runde 1: ArtikelMenge = 10
Runde 2: ArtikelMenge = 10
Runde 3: ArtikelMenge = 10
Runde 4: ArtikelMenge = 8
Runde 5: ArtikelMenge = 8
Runde 6: ArtikelMenge = 4
Runde 7: ArtikelMenge = 10

Wir haben also 4 Änderungen in 7 Tagen. Das bedeutet des Abrufintervall für diesen Artikel könnte sich auf 7/4 = alle 1,75 Tage belaufen. Das Abrufintertervall würd ich jeden Woche für 1000 Artikel neu berechnen so das du alle 8 Wochen eine Überprüfung des Abrufintervalls hast.
Außerdem würd ich eine Neue Überprüfung starten wenn die ArtikelMenge < 5 fällt. Das hat den Vorteil das du dann auch gleich mitbekommst wenn der Artikelbestand aufgefüllt wurde.


Sind jetzt nur ein paar Gedanken ins Unreine gewesen aber das Prinzip könnte man so angehen.
21.03.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
2
Wahrscheinlichkeit nach Laplace ist definiert als die Anzahl der für ein Ereignis "günstigen" Ergebnisse dividiert durch die Zahl der insgesamt möglichen Ergebnisse. Für den fairen Würfel ist die Wahrscheinlichkeit, eine 6 zu würfeln, also 1 / 6 (ein Sechstel).

Die Wahrscheinlichkeit, ob sich ein Artikelbestand ändert, ist wahrscheinlich an und für sich recht hoch, wenn man bspw. davon ausgeht, dass ein Bestand von 1000 Artikeln um 1 reduziert wird. Die Änderungsrate wäre allerdings marginaler, als wenn ein Bestand von 10 Artikeln um 1 reduziert wird. Daher würde ich in Dein Modell die Änderungsrate (Volatilität) als Gewicht mit einbeziehen, nicht nur die Wahrscheinlichkeit, dass sich überhaupt etwas ändert.

Ich muss zugeben, dass ich Deine Frage noch nicht hundertprozentig erfasst habe:
Du willst bei Deiner Abfrage nur die Werte neu holen, die sich der Wahrscheinlichkeit nach häufiger verändern, oder nur die Werte holen, die sich signifikant verändern?

Grüße
CRegenschein
22.03.2011
CRegenschein 645 2 9
1
Danke für die eure Antworten vorweg.

@ Floyd
Danke für den Ansatz mein Flipchart des Büros füllt sich. Zusatzdaten wollte ich eig. aus der Berechnung auslassen, da der aufwand dann doch zu groß wird.

Mit deinen Ansatz ist mir gleich was eingefallen

Datenbank Felder:

1. Bestellnr wird im System hinterlegt
Dankenbank nach Insert

Bestellnr | Lieferstatus | Änderung | DateTime der Letzten Änderung Rücksetzens | NextAbfrage | AbfrageRatio
112233445 + null + 0 + 20.03.2011 11:15 | fixWert | null


DB.Nextabfrage ist ein Fixwert zb NOW() + 1 Tag, da noch kein DB.AbfrageRatio Wert zur verfügung steht


2. Parser greift Artikel auf und sieht das NOW() >= DB.Nextabfrage ist und Ruft den Artikelbestand vom Lieferanten ab.
Artikelbestand ist nun = 10.
=> DB.AbfrageRatio wird noch nicht berechnet da der Lieferstatus zuletzte == null ist.
=> DB.Nextabfrage wieder fixer Wert NOW() + 1 Tag


3. Parser greift Artikel auf weil NOW() >= Nextabfrage

=> DB.Artikelbestand zb. -5
=> DB.Änderung =+ 1
=> DB.Nextabfrage FIXWERT weil DB.AbfrageRatio == null => + 1 Tag

Das Script sollte dann nach zb 7 Tagen versuchen den Prozentualen Wert zu erstellen.
Ratio = ( DATEDIFFERENZ( NOW(), DB.DateTime der Letzten Änderung Rücksetzens  ) / DB.Änderung )


Ist jetzt nur ein Gedankengang der mir nach deinem Post durch den Kopf ging.

______________

@ CRegenschein

Genau dieser Ansatz ist mir auch eingefallen, um das problem mit einzubeziehen könnte man doch Artikelmengen in Gruppen fassen und einen fixen Wert auf den DB.Nextabfrage draufpacken.

Artikelmenge => FixWert
0-10 => + 0Tage
0-50 => + 1Tag
50-500 => +3 Tage
500-1000 => +5 Tage
>1000 => +7 Tage


Zu deiner Frage mit welchen Wert ich mir eigentlich holen möchte, würde ich erstmal sagen die Werte die sich der Wahrscheinlichkeit nach häufiger ändern , die andere Variante würde, so glaube ich, nach sich ziehen dass die Artikel häufiger abgefragt
werden müssten um genaue Daten zu errechnen.
22.03.2011
Marco Rieger 820 8

Stelle deine Algorithmus-Frage jetzt!