Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Verteilungsalgorithmus gesucht (https://www.delphipraxis.net/159708-verteilungsalgorithmus-gesucht.html)

OG Karotte 9. Apr 2011 10:45

Verteilungsalgorithmus gesucht
 
Hi,
ich bin auf der Suche nach einem Algorithmus mit dem ich eine optimale Verteilung von Resourcen (Gütern) berechnen kann. Mal 'n Beispiel:

Ich habe diverse Grundresourcen (z.B.: Eisen, Holz, Lehm) und diverse Produktionsstraßen (Werkzeuge, Fahrzeuge, Gebäude) . Nun möchte ich die vorhandenen Resourcen so effektiv auf die Produktionsstraßen verteilen, das entweder alle ausgelastet sind und/oder alle Resourcen aufgebraucht sind. Und ja, das ganze ist für ein Spiel :D.

Ich möchte nun keinen fertigen Code, sondern nur den Namen/Bezeichnung des gesuchten Algorithmus und vlt. ein zwei Links wo diese Art von Algorithmen gut erklärt sind. Erarbeiten möchte ich mir den Code dann schon selbst :D

alfold 9. Apr 2011 11:07

AW: Verteilungsalgorithmus gesucht
 
Na ja, ob man nun unbedingt alles mit einem algo lösen muss?
Beispiel:
1Fahrzeug benötigt 10 Anteile Eisen, wieviele Fahrzeuge will/muss ich bauen.
1Werkzeug benötigt 1 Anteil Eisen, wieviele Werkzeuge will/muss ich bauen.

Wenn ich also 100 Eisen habe ergibt sich aus den obengenannten der algoritmus:wink:
Muss ich also keinen suchen!
oder hab ich da was falsch verstanden?

Gruss alfold

nuclearping 9. Apr 2011 11:29

AW: Verteilungsalgorithmus gesucht
 
Traveling Salesman-Problem?

patti 9. Apr 2011 11:29

AW: Verteilungsalgorithmus gesucht
 
Hm, vielleicht geht das in die Richtung Rucksackproblem... Das Ganze müsste man halt etwas abwandeln, aber vielleicht hilft dir der Ansatz ja schonmal weiter ;-)

Maik81ftl 9. Apr 2011 12:16

AW: Verteilungsalgorithmus gesucht
 
Hmmm, wenn ich mir mal so de Ressis anschaue, könnte dies ein Tool für ein BrowserGame (Die Stämme, oder so) werden.

wenn dem so ich, schau ich mal in meinen Scripten, ob i ggf. was finde.

mschaefer 9. Apr 2011 13:03

AW: Verteilungsalgorithmus gesucht
 
Üblicherweise sind das Probleme der Produktionsplanung mit linearer Optimierung.
Die Theorie ist sicher etwas trockener als die Anwendeung. Oft wird zur Produktionsplanung der Simplexalgorithmus als linarer Optimierungsalgorithmus verwendet. Eine Einführung mit Delphiprogramm in LP ist im Link zu finden. Professionel wird auch LP mit SAS eingesetzt. Etwas einlesen muß man sich da allerdings.

Grüße

Dragon27 9. Apr 2011 13:54

AW: Verteilungsalgorithmus gesucht
 
Hallo,

unter Umständen kann man das mit einer Abwandlung von Laplace berechnen.
Ich würde wie folgt vorgehen:

Die verschiedenen Produktionsstraßen produzieren doch sicherlich ein Gut. Jedes Gut wird einen anderen Nutzen haben. Wenn es ein Spiel ist, das wirtschaftlich orientiert ist,
wird der Nutzen wahrscheinlich der höchtse Gewinn sein.

Also sagen wir nun du hast 3 Güter:

Gut1: minimaler Gewinn 80 Euro maximaler Absatz 10 Stück
Gut2: minimaler Gewinn 30 Euro maximaler Absatz 15 Stück
Gut3: minimaler Gewinn 10 Euro maximaler Absatz 30 Stück

So nun ist es ja so, dass der Absatz bei dir wsl. variabel berechnet wird, zum einen weil der Computer, der die Resourcen kauft, nicht immer alles kauft. Auch ein Mensch würde nicht immer 10 Stück á 20 Euro kaufen. Also würde ich noch eine Wahrscheinlichkeit mit reinrechnen. Wie wahrscheinlich ist es, dass jemand Gut1 ab einer gewissen Stückzahl kauft ;-). Geht jetzt stark in in die VWL. Aber du kannst dir ja sicherlich vorstellen, dass der Nutzen eines Produktes mit der gekauften Anzahl abnimmt. Sprich 1 Brot nützt dir viel aber was machst du als Privatperson mit 20 Broten ^^. Wie du siehst werden mindestens 18 Brote sinnlos und verderben. Sie haben keinen Nutzen.

Lange Rede kurzer Sinn.

Pseudocode:
Code:
while (MaximalerAbsatz<=ProduzierteGüter1) and (Nutzen>0) do begin
  //Produzieren
end;
while (MaximalerAbsatz<=ProduzierteGüter2) and (Nutzen>0) do begin
  //Produzieren
end;
while (MaximalerAbsatz<=ProduzierteGüter3) and (Nutzen>0) do begin
  //Produzieren
end;
Die Reihenfolge der Schleifen ergibt sich aus dem maximalen Gewinn ;-). Bei Gut1 hast du den meisten Gewinn ---> zuerst produzieren.

Bezüglich Nuten von Produkten: 1. Gossensches Gesetz
Bezüglich Gewinnmaximum: Gewinnmaximierung

Falls du Fragen zu den Formeln hast, helfe ich gerne ;-)

OG Karotte 9. Apr 2011 14:31

AW: Verteilungsalgorithmus gesucht
 
Na da sind doch einige nette Ansätze dabei :thumb:

@patti: Ja, in diese Richtung hatte ich auch schon gedacht. Aber es ist dann doch m.E. zuweit von der Aufgabenstellung entfernt :(

@alfold: Sorry, ist wohl nicht so ganz korrekt "rüber gekommen": Ich benötige natürlich mehrere verschiedene Resourcen in unterschiedlicher Menge auf den einzelnen Produktionsstraßen, daher ja mein Prob mit dem Finden der optimalen Auslastung.

@Maik81ftl: Ja dafür auch, aber eben nicht nur :D Solltest Du da (DS-Skript) aber was finden, dann teile es mir ruhig mit ;)

@all: Ich werd' mich mal mit den einzelnen Teilen befassen und wenn ich etwas nicht versteh' dann weiß ich ja wo ich fragen kann ;)

Danke bis dato.

alfold 9. Apr 2011 15:12

AW: Verteilungsalgorithmus gesucht
 
Das ist mir schon klar, mit den unterschiedlichen Source für die Produktion!
Spekulation:
Lassen wir Zeit für die Herstellung und Menge mal aussen vor!
Dann ist es ja einfach der algo!

Nehm ich jetzt die Zeit für die Herstellung dazu, wird es schon komplizierter!
Bei gleicher Resourceverteilung auf die Produktionsstrasse
Beispiel:
1Fahrzeug 60sec
1Werkzeug 10sec

Würde also die Produktion von Werkzeugen bei gleicher Verteilung vorzeitig beendet sein.
Weil die Resource dafür schon aufgebracht ist!
Kommt jetzt die Menge noch dazu, die evtl nur produziert werden soll um auch Gewinn zu machen naja.

Dafür also ein allgemein verbindlichen Algo zu finden dürfte nicht leicht sein!
Wenn, dann muss man den Algo auseinandernehmen und für Dein Prog anpassen!

Bis Du dies geschafft hast, hast Du evtl Dein eigenen geschrieben:wink:

Das wollte ich mit den simplen Beispiel von oben ja nur sagen.

Gruss alfold

Blup 11. Apr 2011 09:11

AW: Verteilungsalgorithmus gesucht
 
Wenn jede Produktionsstrasse nur ein Produkt herstellt, ist der Ansatz simpel.
Für eine Resource:
Code:
n1 : Strasse 1 Verbrauch je Zeiteinheit z.B. 5 Einheiten / 20 Sekunden
n2 : Strasse 2 ...
n3 : Strasse 3 ...
t : Produktionszeit
m : Gesamtmenge der Resource
m1 : Strasse1 Anteil der Resource
m2 : Strasse2 ...
m3 : Strasse3 ...

m = n1 * t + n2 * t + n3 * t
m = (n1 + n2 + n3) * t
t = m / (n1 + n2 + n3)

m1 = n1 * t
m2 = n2 * t
m3 = n3 * t


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz