Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Phyton Script- Optimierung von Stablängen


  • Please log in to reply
24 replies to this topic
mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012
Hallo Mitglieder,

ich habe ein Phytonscript für eine Optimierung von Stablängen.
Ich hätte es gerne in ahk übersetzt, vielleicht gibt es jemenden der mir evtl. helfen kann.

Lg Mirco!

Spoiler


strobo
  • Members
  • 359 posts
  • Last active: Mar 10 2015 08:13 PM
  • Joined: 19 Jun 2012
Hallo,
wenn du (ein bisschen) Python kannst, könnte ich dir ein paar Umformatierungs-Regeln mitgeben.
Regards,
Babba

mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012
Leider kann ich kein Phyton. Ich habe mich damit noch nicht beschäftigt.

hier mal der Link zur Original Datei http://ubuntuone.com...bcuDEF8EneQWX2C

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
sorry aber ohne Einrückungen schau ich mir es garnicht erst an
in Python sind Einrückungen sehr wichtig damit werden die Anweisungen gruppiert
deshalb solltest du das script ohne Spoiler hier einfügen

mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012
habe mal einen Link im vorherigen post eingefügt

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
habs mir angesehen die übersetzung ist durchaus machbar
ein bischen aufwendig sind die listenfunktionen richtig umzusetzen
was willst du denn mit dem script machen ??

mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012
Ich wollte mir mein eigenes Optimierungs Programm zusammen bauen, mit ner kleinen gui. In erster Linie für die Stablängenoptimierung zur Materialbestellung.
Mein Hotkeyprogramm, welches ich vor einiger Zeit mal geschrieben hatte, ist soweit fertig und ich nutze es Täglich. Ich wollte hier den code schon immer mal Posten aber der ist nicht so ansehnlich und ganz sicher noch verbesserungswürdig.

mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012
Hey lasso, hast Du schon was erreichen können?

Ich habe hier noch ein Script gefunden welches evtl. nicht ganz so kompliziert ist.

http://ubuntuone.com...HFjKywgrFmOb33C

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

naja ich hab im moment wenig zeit für so späßchen

das was ich gemacht habe ist recht bescheiden

und möglicherweise fehlerhaft aber kannst vieleicht ja selber mal schauen

unter Approximationsalgorithmus und Bin Packing findest du auf google weitere infos icon_wink.gif

 

testfile wird einfach auf das script gezogen

 4 Stück 812mm lang 
 5 Stück 1210mm lang 
 3 Stück 23cm lang
 12 Stück 341mm lang

und das script

  FileRead,p,%1%
  l:=[],k:=[],sk:=[],s:=1,in:=1,m:=6000
  if(!ErrorLevel){
    while(RegExMatch(p,"sm)(.*?(\d+)\D+(\d+|\d+\.\d+)([dcm]+?m?).*?)(\d|)",o,s))
    ,s+=Strlen(o1),x.= o3*(O4="m"?1000:(O4="dm"?100:(O4="cm"?10:1))) " " o2 "`n"{
    }Sort x,RN
    Loop,parse,x,%A_Space%`n
      if(!(A_Index&1&&l.Insert(tg:=A_LoopField)))
        loop % A_LoopField-1
          l.Insert(tg)
    for i,v in l
      while(v),(in>=sk.MaxIndex())?(sk.Insert(0),k[in,1]:=0):""{
        ((v+sk[in])<=m)?(k[in].Insert(v),sk[in]+=v,in:=1,v:=0):++in
      }
    Loop % k.MaxIndex(){
      r .= "stange " (i:=A_Index) "     ->zuschnitte->"
      Loop % k[i].MaxIndex()-1
        r .= k[i,A_Index+1] " | " 
      r .= " rest = " m-sk[i] "mm`n"
    }
    msgbox % r
  }else
  msgbox feher beim öffnen von datei %1%


IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007

Optimierungs-Algorithmen sind nicht gerade das einfachste Gebiet, und ob sich eine Skript-Sprache für ein Problem dieser Komplexitätsklasse eignet ist auch sehr fraglich. Immerhin sind die meisten Optimierungsprobleme von der Klasse O(n!), d.h. relativ schnell nicht mehr durch stures probieren zu lösen. Stattdessen kann man sich durch einen klugen Algorithmus der optimalen Lösung um die 90%-95% annähern.

 

lassos algo hat eine Komplexität von O(n^2), was zwar nicht so schlimm ist wie vorher erwähnte O(n!) (n Fakultät) aber immerhin quadratisch wächst. Welche Eingabegrössen werden hier erwartet?

 

 

Jedenfalls scheint mir - da es hier um pure Rechenleistung geht - AHK (ausnahmsweise) die falsche Plattform zu sein.



mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Ich weiß, es ist für mich, an der stelle, eine unlösbare Aufgabe da ich selbst nicht der große Programmierer bin.

Aber es müsste zumindest eine relativ "einfache" variante geben so etwas umzusetzen und bei dem Code von lasso sehe ich, ehrlich gesagt, kein stück durch... 

 

Ps: das Script gibt einen Fehler in Reihe 12 aus?



mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Könnte jemand mir dies mal erklähren bzw. sagen warum das script einen fehler ausgibt?



lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

es gibt doch bestimmt eine fehlermeldung oder ??

bei mir läuft es



mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Error at line 12.

 

Line Text:  while(v),(in>=sk.MaxIndex())?(sk.Insert(0),k[in,1]:=0):""{
((v+sk[in])<=m)?(k[in].Insert(v),sk[in]+=v,in:=1,v:=0):++in
}
Loop % k.MaxIndex(){
  r...

Error: Missing ")"

 

The Program will exit.



mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Oh ich glaube das hat sich erledigt. Ich habe mal die neue Version von AHK installiert und nun läuft es auch bei mir.

 

Danke.