Bitte um Hilfe für Berechnung

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Bitte um Hilfe für Berechnung

Re: Bitte um Hilfe für Berechnung

von 2004 » Mi, 13.05.2015 00:55

Hallo,

ich freue mich sehr dass mir hier so zahlreich geholfen wurde.
Die Datei von mikeleb ist glaube ich so genau das was ich haben wollte.
Echt sehr gut gemacht!!!
Vielen, lieben Dank dafür.

Gruß

Re: Bitte um Hilfe für Berechnung

von mikeleb » Mo, 11.05.2015 19:29

Hallo balu,

danke für die Blumen :D
Die Unlösbarkeit kann immer wieder auftreten. In diesem Fall spuckt der Algorithmus lauter Nullen aus - da weiß man wenigstens was los ist.

Re: Bitte um Hilfe für Berechnung

von balu » Mo, 11.05.2015 19:13

Hallo mikeleb,

erstmal meinen tiefen Respekt für deinen Code, und natürlich auch für die Datei. Hast echt gut gemacht. :D
Deine überarbeitete Datei hab ich mir noch nicht angeschaut. Kenne also nur die von Sonntag.

Es gibt allerdings ein Problem, wofür Du nix kannst, da es in der Natur der Dinge liegt.
Und zwar können mit den vorgegebenen Werten (15,6 ....) nicht alle Stückelungen gelöst werden. Als einfaches Beispiel dient die 6. Um die zu Stückeln fehlen einfach noch ein paar Werte. An dieses Problem muss jetzt aber 2004 denken. Das ist so gesehen nicht dein Problem.



Gruß
balu

Re: Bitte um Hilfe für Berechnung

von mikeleb » Mo, 11.05.2015 18:42

Hallo R,

und ich hatte mich schon gefreut :(
Aber bin fündig geworden. Ursache sind numerische Abweichungen. Die Rechnung (6,6-4,2)/2,4-1 ergibt (aufgrund der internen Zahlendarstellung) eben leider nicht Null.
Ich habe daher die Rechnerei umformuliert und nun wird auch die 6,6 richtig gelöst (und ich hoffe alle anderen Fälle auch).
Dateianhänge
auswerfer_optimierung.ods
(22.19 KiB) 45-mal heruntergeladen

Re: Bitte um Hilfe für Berechnung

von F3K Total » Mo, 11.05.2015 17:13

Hallo mikeleb,
erstmal: Respekt!
Aber, tut mir leid, 6,6 wird z.B. nicht gelöst (4,2+2,4) :(
Gruß R

Re: Bitte um Hilfe für Berechnung

von mikeleb » So, 10.05.2015 22:20

Hallo,

ich habe mich nun auch der Programmieraufgabe gestellt. Die Rekursion sucht eine Lösung mit möglichst breiten Stücken. Ich bin mir nicht sicher, ob dabei die minimale Anzahl von Stücken herauskommt.
Dateianhänge
auswerfer_optimierung.ods
(22.09 KiB) 38-mal heruntergeladen

Re: Bitte um Hilfe für Berechnung

von balu » So, 10.05.2015 18:33

Hallo 2004,

also so wie ich es mir doch schon dachte.
Kurz und schmerzlos:
  • Der Wert der gestückelt wird, kann im Bereich von 5,3 bis 60 liegen. Mit maximal einer Stelle hinterm Komma.
  • Die Stückelungswerte sind die genannten 15,6 11,8 7,8...
  • Die Stückelung soll mit möglichst wenigen Stückelungswerten vollzogen werden.

Gruß
balu

Re: Bitte um Hilfe für Berechnung

von 2004 » So, 10.05.2015 15:45

Hi Leute,

wie ich sehe kommt es hier so langsam zu extremen Verwirrungen.

Ich will meinen Wunsch deshalb nochmal darlegen.

Ich habe also unterschiedlich breite Stahlauswerfer, die ich je nach Abmessung meines zu schneidenden Materials miteinander kombinieren will um damit auf diese Abmessung zu kommen.
Die Werte ( Breite in mm) der verschiedenen Auswerfer sind die von mir schon genannten (15,6 11,8 7,8 usw.)

Damit dann die Endbreiten im Bereich von 5,3 mm bis 60 mm in 10tel-Schritten. Also 5,3 5,4 5,5 5,6 ...... 59,8 59,9 60,0.

Nun will ich damit z.B. die Endbreite von 39 mm zusammenstellen.

Also wäre optimal 15,6 + 15,6 + 7,8 = 39

Es gibt bei den Endbreiten sicherlich noch sehr viele andere Möglichkeiten der Zusammenstellung, aber ich möchte immer die, bei der die größtmöglichen Breiten genutzt werden. Oder besser gesagt so wenige Auswerfer wie möglich.

Vielleicht kann ich auch noch ein Beispiel nennen, wo so eine Berechnung ebenfalls möglich wäre und die es vielleicht noch verständlicher macht:

Wenn ich also mal von jeder Euro- und Cent-Münze eine größere Anzahl vor mir liegen habe und mir damit einen bestimmten Eurobetrag zusammen stellen will, sagen wir mal 3,10 Euro, so kann ich dies tun, indem ich 6x 50 Cent und 5x 2 Cent nehme. Dann habe ich den Betrag mit 11 Münzen zusammen. Aber ich kann auch 1x 2 Euro, 1x 1 Euro und 1x 10 Cent nehmen und habe somit auch 3,10 Euro aber das mit nur 3 Münzen!!!

Und genau so optimal von der Anzahl her will ich das auch bei den Auswerfern haben.

So, nun hoffe ich, ich konnte das ganze etwas besser rüber bringen.

Gruß.....

Re: Bitte um Hilfe für Berechnung

von balu » So, 10.05.2015 13:11

Hallo R
Ich komme auch nicht weiter. Ist doch schwieriger als ich es erwartet habe.
Weißt Du wo das Problem liegt?
Ganz einfach!
Unser Gehirn sieht die Lösung und auch den Weg, aber bring das mal den ollen Kombudda bei, das er unsere Gedanken in die Tat umsetzt. Der is so plöte das er uns nicht versteht. :lol: Plöter Kombudda!




Gruß
balu

Re: Bitte um Hilfe für Berechnung

von F3K Total » So, 10.05.2015 12:24

Hallo Balu,
balu hat geschrieben:... möchte ich sagen das deine 2. Datei nicht optimal rechnet
Du hast vollkommen Recht.
Ich komme auch nicht weiter. Ist doch schwieriger als ich es erwartet habe.
Gruß R

Re: Bitte um Hilfe für Berechnung

von balu » So, 10.05.2015 12:11

Mahlzeit!

@2004
sag mal willst Du oder kannst Du einfach nicht auf meine frage drauf eingehen?
balu hat geschrieben: Warum muss bei 39 das hier dabei rauskommen?

Code: Alles auswählen

39,0 ---> 15,6 15,6 7,8
Mir ist der Grund für die Vorgabe einfach noch nicht verständlich. Wie Du eben gesehen hast, gibt es laut SOLVER auch noch eine andere möglichkeit. Klär uns mal büdda schön auf.
Ich für meinen Teil hab da ja wohl schon so eine Ahnung, die aber auch vollkommen daneben liegen kann. Also gib jetzt mal büdda schön ne Vernünftige Antwort, damit es nicht mehr zu Missverständnisse kommt.


Ach ja, da ist noch was!
Ich bräuchte dann eine Liste von 5,3 bis 60,0 in 10tel-Schritten.
Ja was denn nun?
In deiner Datei stehen ganz andere Werte, und nun so was.
Werd jetzt mal endlich konkret! clag hat auch so seine Verständigungsprobleme, also nicht nur ich alleine.
Und ja! Es macht schon einen RIESEN Unterschied aus ob man mit nur 13 vorgegebenen Werten (2,4 - 15,6 in unterschiedlicher Steigerung), oder aber mit 548 Werten (5,3 - 60 in 0,1 Schritten) rechnen und arbeiten muss.



@R
clag hatte ja schon gesagt das dein Makro noch nicht "perfekt" ist. Ich will dich und das Makro aber auch nicht schlecht machen, da ich ja selber nix besseres anbieten kann. Also will ich auf keinen Fall mit Steinen werfen, da ja sonst .... Glashaus ... ich...

Auch wenn 2004 bestimmte wichtige Informationen noch immer zurück hält, möchte ich sagen das deine 2. Datei nicht optimal rechnet. Nehmen wir die 66, so ist die Lösung deiner 2. Datei

Code: Alles auswählen

66 ---> 5,6 5,6 5,6 5,6 5,6 5,6 5,6 5,6 5,6 5,6 5,0 5,0
Und das ist wie schon gesagt nicht optimal.
Besser wäre wohl höchstwahrscheinlich.

Code: Alles auswählen

66 ---> 15,6 15,6 15,6 11,8 5,0 2,4
Nun, das bezieht sich jetzt alles nur auf die gegebenen Werte seiner Beispieldatei. Anders wird das aber aussehen, wenn es um ganz andere Werte mit einer ganz anderen Steigerung (0,1) geht. Aber so lange 2004 nix genaueres sagt, würde ich mir auch keine weiteren Gedanken darum machen ob deine Datei oder meine Lösung richtig ist.



Gruß
balu

Re: Bitte um Hilfe für Berechnung

von F3K Total » So, 10.05.2015 10:59

Moin clag,
clag hat geschrieben:klemmt scheinbar bei manchen Vielfachem einer kleineren Lösung 9,5 ja 19 nein ?
Da hast du absolut Recht. Der Algorithmus suchte immer den größtmöglichen ganzzahligen Wert, der hineinpasst, man müsste, wenn kein Erfolg, hier wieder herunterzählen. Das habe ich in der angehängten Version gemacht, und siehe da, es gibt sogar eine bessere Lösung für 66:
10 x 5,6 & 2 x 5.0

Code: Alles auswählen

FUNCTION F_SOLVER(WERTE,ZIELWERT)
    Dim Q as double
    oRangeAnzahl = Thiscomponent.NamedRanges.getByName("ANZAHL").ReferredCells
    Anzahl = oRangeAnzahl.data
    nCounter = 0
    s = 1
    100:
    Rest = Zielwert
    for  i = 0 to uBound(Anzahl)
        Anzahl(i)(0) = 0
    next i
    for i = s to UBOUND(WERTE)
        if i = s then ndelta = nCounter else nDelta = 0
        Q = INT(Rest/Werte(i,1)) - nDelta
        if Q > 0 then
            Anzahl(i-1)(0) = Q  
            Rest = Rest - (Werte(i,1)*Anzahl(i-1)(0))
        endif
    next i
    if Rest > 0.0000001 then
         s = s + 1
         if s > UBOUND(WERTE) then 
             nCounter = nCounter + 1
             if nCounter < Q Then 
                 s = 1
                 goto 100
             endif
             for  i = 0 to uBound(Anzahl)
                 Anzahl(i)(0) = 0
             next i
             oRangeAnzahl.Data = Anzahl
             F_SOLVER = "keine Lösung"
             exit function
         endif
         goto 100
    endif
    oRangeAnzahl.Data = Anzahl 
    F_SOLVER = "OK"
End FUNCTION
Gruß R
Dateianhänge
Auswerfer_berechnen.ods
(14.27 KiB) 37-mal heruntergeladen

Re: Bitte um Hilfe für Berechnung

von clag » So, 10.05.2015 10:08

Hallo 2004,

welche Anzahl und Abmessungen an Distanzringen und stehen denn zur Verfügung?
und welche min - max Abstände müssen einstellbar sein Schritweite ist 1/10mm!?

Kannst du das mal konkretisieren

Re: Bitte um Hilfe für Berechnung

von 2004 » So, 10.05.2015 10:02

Gast hat geschrieben:Hallo,

Ich würde mit der Zeit eine Liste erstellen, mit den per Hand berechneten Werten , die dann mit SVERWEIS() abgefragt werden kann.


Gruß Gast

Hallo,

ja so wie es aussieht wäre das wohl die beste Lösung. Ich bräuchte dann eine Liste von 5,3 bis 60,0 in 10tel-Schritten.

Re: Bitte um Hilfe für Berechnung

von clag » So, 10.05.2015 09:35

Hallo F3K Total,

dein Ansatz sieht erstmal chic aus, die Ergebnisse sind wohl noch nicht optimal

zB
66 = keine Lösung
obwohl
66 = 12*4,8+2*4,2 oder auch die doppelte "33" Lösung ?

edit
klemmt scheinbar bei manchen Vielfachem einer kleineren Lösung 9,5 ja 19 nein ?

Nach oben