Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Produktionsplan

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Produktionsplan (4747 mal gelesen)
newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 14. Jan. 2008 15:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


forcast.gif


kundentakt.gif


prodplan.gif

 
Hallo zusammen,

ich bin neu hier im Forum und möchte gleich eine Frage an die Profis stellen, da ich zu meinem Thema nicht passentes gefunden habe.

Ich möchte einen Produktionsplan nach Forcast erstellen.

Hier zu habe ich eine Tabelle Forcast in der die Menge der zu fertigen Typen
eingetragen sind (für 12 Monate, 4 Typen) (siehe Bild forcast.gif).
In einem ersten Schritt berechne ich die Gesamtmenge pro Monat und schreibe diese
in die Tabelle Kundentakt (siehe Bild kundentakt.gif).

Im zweiten Schritt schreibt mir die Methode MetProdpl an Hand der Forcast die einzeln zu fertigen Typen (Typenweise) in die Tabelle ProdPlan (Spalte; Typ und Menge).

Bis zu diesem Schritt habe ich es noch gebracht. Nun möchte ich aber die Spalte Los füllen an Hand einer Zufallszahl.
Das stelle ich mir so vor.
Im ersten Monat sind 76 Teile zu fertigen (siehe Kundentakt) hier sollen dann Zufallszahlen 1 -76 in die Spalte Los eingetragen werden.
Im zweiten Monat sind dann 107 teile zu fertigen hier müssen dann die zufallszahlen beginnen mit 77 - 183 was aus dem Resultiert (76 +107) und so weiter bis der letzte monat eingetragen ist.

Dann soll die Tabelle sortiert werden nach der Spalte Los und zwar so
Los
1
2
3
...

Ich weis nicht wie man eine Zufallszahl erstell und wie man eine Tabelle
sortiert.

Vielen dank für eure Hilfe.

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Jan. 2008 00:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

wenn ich Dich richtig verstanden habe, sollen die Zahlen (1.Bsp 1-76) sich nicht wiederholen, oder ?

dann geht es so :
is
r :real;
i,j :integer;
do
tab.initialisieren(`[2,1]..`[2,*],1.00);
for i:=1 to tab.ydim loop
j :=z_demp(1,tab);
print i,chr(9), j;
tab[2,j]:=0.0;
next;
end;

tab hat 2 Spalten: integer,real

Spalte 1 beinhaltet die Zahlen die 1 X Mal gezogen werden sollen, also 1..76. oder 77.. 183.

Tabellen sortieren kannst Du ueber die Methode "Tabelle.sortieren..."

 


------------------
Der Simulator
WSL, Bruxelles

[Diese Nachricht wurde von Simulator am 15. Jan. 2008 editiert.]

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 15. Jan. 2008 08:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los.gif

 
Erstmal vielen Dank für die schnelle Antwort.

Nach dem ich den Code etwas modifiziert habe, kam ich auch nicht zu dem gewünschten Ergebnis. Ich glaube da habe ich das ganze nicht richtig erklärt.

Noch einversuch.

Nach dem ich die Typen und Mengen in die Tabelle ProPlan geschrieben (Typenweise) habe möchte ich nach dem zufallsprinzip eine Zahl in die Spalte Los schreiben.
Wie du schon festgestellt hast darf die zahl nur einmal vorkommen. Hierzu ist dabei zu beachten das das Füllen der Spalte "Los" zeilenweise erfolgen sollte
da hier die Gesamtmenge pro Monat (Tabelle Kundentakt) berücksichtigt werden muß.
(siehe Bild dor habe ich die Spalte manuell mal gefüllt)
Beisp.
1 Monat Menge 76 Los 1-76
2 Monat Menge 107 Los 77-183
und so weiter...

Anschließend möchte ich die Tabelle nach der Spalte "Los" sortieren und
erhalte eine neue Reihenfolge der zu fertigen Typen.

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Jan. 2008 08:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zeig mal Deine Methode!

------------------
Der Simulator
WSL, Bruxelles

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 15. Jan. 2008 14:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Dies ist der Code für die befüllung der Tabelle ProdPlan
--
is
local zaehler : integer;
  Typ : integer;
  aktZeile: integer;
  Mon : integer;
do
--Tabell leeren
.Daten.ProdPlan.loeschen(`[1,1]..`[*,*]);
-- Schleife für die Monate
From Mon := 1;
Until Mon > .Daten.Forcast_t.xDim
Loop
-- Schleife für die Typenanzahl
From Typ := 1;
Until Typ > .Daten.Forcast_t.yDim
Loop
-- Einlesen der Menge je Typ
aktZeile := .Daten.ProdPlan.yDim + 1;
From zaehler := 1;
Until zaehler  > .Daten.Forcast_t[Mon,Typ]
Loop
.Daten.ProdPlan["Typ",aktZeile] := num_to_str(Typ);
.Daten.ProdPlan["Menge",aktZeile] := 1;
aktZeile := aktZeile + 1;
zaehler := zaehler +1;
end;
Typ := Typ + 1;
end;
Mon := Mon + 1;
end;
end;    

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Jan. 2008 15:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

versuchs mal so

is
tab: table[integer,real];   -------neu
i,j :integer;     -------neu
do
.
.
.


------------- neu

tab.create;
for i:=1 to .Daten.Forcast_t[Mon,Typ] loop
tab[1,i]:=i;
tab[2,i]:=1.0;
next;


------  neu


From zaehler := 1;
Until zaehler  > .Daten.Forcast_t[Mon,Typ]
Loop
.Daten.ProdPlan["Typ",aktZeile] := num_to_str(Typ);
.Daten.ProdPlan["Menge",aktZeile] := 1;
j:=z_demp[1,tab]; -------neu
.Daten.ProdPlan["Los",aktZeile] := j+aktZeile-1; -------neu
tab[2,j]:=0.0; -------neu
aktZeile := aktZeile + 1;
zaehler := zaehler +1;
end;

------------------
Der Simulator
WSL, Bruxelles

[Diese Nachricht wurde von Simulator am 15. Jan. 2008 editiert.]

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 15. Jan. 2008 15:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los1.gif

 
Syntaxfehler in Zeile 27 (siehe bild)

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Jan. 2008 15:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Tausche mal die eckigen Klammern gegen runde Klammern !

------------------
Der Simulator
WSL, Bruxelles

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 15. Jan. 2008 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los1.gif

 
Die Fehlermeldung ist weg abei im Debugg kommt folgende Meldung (siehe bild)

Table[integer,real] : nicht instanziiert

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 15. Jan. 2008 16:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los2.gif

 
sorry habe das falsche Bild erwischt

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Jan. 2008 16:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

das ist keine Fehlermeldung!

Der gelbe Balken zeigt die aktuelle Debug-Zeile der Methode an und keinen Fehler. Sonst wäre die Zeile rot und der Fehler wuerde am unteren Bildrand ausgegeben !
tab ist erst nach tab.create instanziert !

Du solltest die Änderungen in Deine Methode einbauen und nicht versuchen sie einzeln zu testen. Die lokalen Variablen "mon" "Typ".. sind beispielsweise noch ohne einen Wert !

------------------
Der Simulator
WSL, Bruxelles

[Diese Nachricht wurde von Simulator am 15. Jan. 2008 editiert.]

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 16. Jan. 2008 08:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los3.gif

 
Habe jetzt deine Funktion eingebaut. Fehlermeldung:
Zugriff ausserhalb der Listendimension (siehe Bild)

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 16. Jan. 2008 09:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


Code:

tab.create;
for i:=1 to .Daten.Forcast_t[Mon,Typ] loop
tab[1,i]:=i;
tab[2,i]:=1.0;
next;

gehört direkt vor die entsprechende Schleife und nicht am Programmanfang!


------------------
Der Simulator
WSL, Bruxelles

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 16. Jan. 2008 09:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


los4.gif

 
Danke für den Hinweis. Das habe ich jetzt umgesetz. Die Spalte los wird jetzt gefüllt. Es tritt nun folgendes Problem auf.

Die Zahlen in der Spalte Los kommen nun mehrfach vor (siehe Bild.)

Code:

is
local zaehler : integer;
  Typ : integer;
  aktZeile: integer;
  Mon : integer;
  tab: table[integer,real];
  i,j: integer;
do
--Tabell leeren
.Daten.ProdPlan.loeschen(`[1,1]..`[*,*]);
-- Schleife für die Monate
From Mon := 1;
Until Mon > .Daten.Forcast_t.xDim
Loop
-- Schleife für die Typenanzahl
From Typ := 1;
Until Typ > .Daten.Forcast_t.yDim
Loop
tab.create;
for i:= 1 to .Daten.Forcast_t[Mon,Typ] Loop
tab[1,i] := i;
tab[2,i] := 1.0;
next;
-- Einlesen der Menge je Typ
aktZeile := .Daten.ProdPlan.yDim + 1;
From zaehler := 1;
Until zaehler  > .Daten.Forcast_t[Mon,Typ]
Loop
.Daten.ProdPlan["Typ",aktZeile] := num_to_str(Typ);
.Daten.ProdPlan["Menge",aktZeile] := 1;
j := z_demp(1,tab);
.Daten.ProdPlan["Los",aktZeile] := j+aktZeile-1;
tab[2,j] := 0.0;
aktZeile := aktZeile + 1;
zaehler := zaehler +1;
end;
Typ := Typ + 1;
end;
Mon := Mon + 1;
end;
ProdPlan.sortieren(1,2,"auf");
end;

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 16. Jan. 2008 10:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

was steht in .Daten.Forcast_t ?

------------------
Der Simulator
WSL, Bruxelles

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 16. Jan. 2008 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


prodplan_1.gif

 
In der Tabelle Forcast_t stehen die Mengen für 12 Monate je Typ (4 Typen sind es).

Der Code funktioniert auch soweit das er genau so viele Zeilen in der Tabelle (ProdPlan) befüllt wie die Tabelle (Forcast_t) vorgibt.

Es werden genau 1005 Zeilen befüllt, nur es kommen Zahlen mehrfach vor und somit fehlen auch andere.

In der Tabelle Kundentakt habe ich die Mengen pro Monat summiert, addiert man die Spalte kommt man auf 1005.

------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 16. Jan. 2008 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

O.K.

Versuchs mal so:

Code:
is
zaehler : integer;
Typ : integer;
aktZeile: integer;
Mon : integer;
tab: table[integer,real];
i,j,offset: integer;
do
--Tabell leeren
.Daten.ProdPlan.loeschen(`[1,1]..`[*,*]);
-- Schleife für die Monate
From Mon := 1;
Until Mon > .Daten.Forcast_t.xDim
Loop
tab.create;

for i:= 1 to .Daten.Kundentakt["Gesamtmenge",Mon] Loop
tab[1,i] := i;
tab[2,i] := 1.0;
next;
-- Schleife für die Typenanzahl
From Typ := 1;
Until Typ > .Daten.Forcast_t.yDim
Loop
-- Einlesen der Menge je Typ
aktZeile := .Daten.ProdPlan.yDim + 1;

From zaehler := 1;
Until zaehler  > .Daten.Forcast_t[Mon,Typ]
Loop
.Daten.ProdPlan["Typ",aktZeile] := num_to_str(Typ);
.Daten.ProdPlan["Menge",aktZeile] := 1;
j := z_demp(1,tab);
.Daten.ProdPlan["Los",aktZeile] := offset+j;
tab[2,j] := 0.0;
aktZeile := aktZeile + 1;
zaehler := zaehler +1;
end;
Typ := Typ + 1;
end;
offset:= offset+.Daten.Kundentakt["Gesamtmenge",Mon];
Mon := Mon + 1;
end;
.ProdPlan.sortieren(1,2,"auf");
end;


------------------
Der Simulator
WSL, Bruxelles

newplant
Mitglied



Sehen Sie sich das Profil von newplant an!   Senden Sie eine Private Message an newplant  Schreiben Sie einen Gästebucheintrag für newplant

Beiträge: 10
Registriert: 07.01.2008

erstellt am: 16. Jan. 2008 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für die schnelle Unterstützung.   Der Code funktioniert prima.

Jedoch hätte ich eine kleine Bitte. Ein paar Erklärungen zum Code
um ihn besser zu verstehen.

1.
tab: table[integer,real]; --> variable , tempuräre Tabelle?

2.
tab.create; --> erzeugt die tempuräre Tabelle?
for i:= 1 to .Daten.Kundentakt["Gesamtmenge",Mon] Loop
tab[1,i] := i;  --> Spalte für die Zahlen Bsp. 1 Monat, Menge 76; 1-76
tab[2,i] := 1.0; --> Haäufigkeit 1mal????
next;

3.
j := z_demp(1,tab);  --> ????
.Daten.ProdPlan["Los",aktZeile] := offset+j; --> offset ????
tab[2,j] := 0.0;  --> ????

4.
offset:= offset+.Daten.Kundentakt["Gesamtmenge",Mon]; --> Versatz zum nächsten monat? Bsp. 1. monat 76 ??


------------------
MfG
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 16. Jan. 2008 15:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

1.
tab: table[integer,real]; --> lokale Tabelle?, Ja

2.
tab.create; --> erzeugt die temporäre Tabelle?, s. Hilfe
for i:= 1 to .Daten.Kundentakt["Gesamtmenge",Mon] Loop
tab[1,i] := i;  --> Spalte für die Zahlen Bsp. 1 Monat, Menge 76; 1-76, Ja
tab[2,i] := 1.0; --> gleiche Häufigkeit(z.b. 1.0) fuer alle Werte (1-76) 
next;

3.
j := z_demp(1,tab);  --> s. Hilfe
.Daten.ProdPlan["Los",aktZeile] := offset+j; --> S. 4
tab[2,j] := 0.0;  --> Häufigkeit= 0 damit diese Zahl nicht nochmal gezogen wird!

4.
offset:= offset+.Daten.Kundentakt["Gesamtmenge",Mon]; --> Versatz zum nächsten monat? Bsp. 1. monat= 0, 2. monat = 76 

------------------
Der Simulator
WSL, Bruxelles

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz