Gefinkelte Aufgabenstellung, Hirnschmalz gefragt

Zuviel Werbung?
-> Hier kostenlos registrieren
Im Prinzip schon, doch nehmen wir Deine und die Vorschläge von Lipperlandstern zu einem weiteren Gedankenexperiment:

450 kW
450 kW
320 kW
160 kW
160 kW

Bei Anforderung von 320 kW und Abarbeitung von oben nach unten, ist es klar und richtig, dass der 320 kW Kompressor angefordert wird.

Bei Anforderung von z.B. 410 kW, würden nach der Beschreibung von Lipperlandstern, so wie ich es verstanden habe, jedoch der 320 kW und der 160 kW Kompressor angefordert werden, was aber nicht richtig ist, da sollte auch der 450 kW Kompressor starten.

Bei Anforderung von 70 kW, würde gar keiner mehr starten.

Wie gesagt, es ist nicht so einfach, wie es aussieht.

Aber vielen Dank für Eure Anregungen, ich werde mir alles noch einmal durch den Kopf gehen lassen, sonst kann ich immer noch dem Kunden den Airleader empfehlen. Der scheint ja wirklich sehr gut zu sein.

Was mein Kunde dazu sagen wird, weiß ich jetzt schon.

Aber bis morgen ist noch viel Zeit...

LG
 
Bei Anforderung von z.B. 410 kW, würden nach der Beschreibung von Lipperlandstern, so wie ich es verstanden habe, jedoch der 320 kW und der 160 kW Kompressor angefordert werden, was aber nicht richtig ist, da sollte auch der 450 kW Kompressor starten.

Bei Anforderung von 70 kW, würde gar keiner mehr starten.

Ich würde bei einer Summenbildung prüfen, welcher Wert am nächsten an meinem Wunschziel dran ist. Im konkreten Fall vorheriger Wert kontra Summe der folgenden. Damit hättest du dann auch das 70kW-Thema erschlagen.

Aber du hast schon recht. Einfach ist es nicht ... das sagt ja auch schon die Überschrift dieses Thread aus ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um die 70kW zu Erfüllen ist ja nun wirklich nur eine Bedingung zu erfüllen.... ist der kleinste Kompressor zu klein dann starte den kleinsten Kompressor...

aber mit der anderen Bedingungen hast du schon recht... da wäre schon noch einiges an Aufwand zu betrieben... aber unlösbar ist es nicht.

Viel Spass beim basteln.....
 
Vielen Dank an Alle

Recht herzlichen Dank an Alle nochmal!

Mich beruhigt es, dass wir offenbar einer Meinung sind, dass es eben nicht ganz einfach ist. Hier ist es eben immer dann, wenn man glaubt eine Lösung zu haben, dies dann testet, und dann draufkommt, dass es bei irgendeinem Fall wieder nicht klappt.

Schönen Abend, ich muss mir noch für morgen eine gute Ausrede einfallen lassen.

Liebe Grüße
 
Das ist das klassische Rucksackproblem, und das ist NP-vollständig.
Schau mal mit diesem Stichwort in die Wikipedia. Dann kommst Du
eventuell auch auf ein Argument, warum es mit der SPS nicht unbedingt
machbar ist (zumindest nicht in einem Zyklus).

Ich könnte mir denken, dass in den Geräten von Airleader die dynamische
Programmierung werkelt...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...vielleicht doch nicht so dumm bin

Das ist das klassische Rucksackproblem, und das ist NP-vollständig.
Schau mal mit diesem Stichwort in die Wikipedia. Dann kommst Du
eventuell auch auf ein Argument, warum es mit der SPS nicht unbedingt
machbar ist (zumindest nicht in einem Zyklus).

Danke für Deine Anregung. Wenn ich nun so meinen vor ca. 2 Stunden begonnen Code so betrachte, ähnelt der sehr dem von Wikipidea. Zumdindest bin ich wieder bei meinen verschachtelten Schleifen gelandet und mehrdimensionalen Array. Ich wollte eben das Problem nicht ausprogrammieren, sondern irgendwie mathematisch lösen.

... Dann kommst Du eventuell auch auf ein Argument, warum es mit der SPS nicht unbedingt machbar ist (zumindest nicht in einem Zyklus).

Dürfte mit Codesys kein Problem sein, und die SPS ist schnell genug.

Also zurük zum Start.


Dynamische Programmierung, Sachen gibt's...

LG
 
Ja richtig, mit 16 Kompressoren müsste es noch gehen.
Wünsche Dir noch viel Spaß, ich darf jetzt zum Abendessen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich habe so etwas einmal für Verdichter- und Vakuummaschinen gemacht.
Ich habe einen Faktor mir gebildet, der in allen Kopressoren entahlten ist.
Nicht u klein, damit die Multiplikation und das Suchen nicht zu aufwendig wird.
Also in deinem Fall würde ich den Faktor 8 zunext annehmen.
Die notwendige Anforderung durch den Faktor teilen und dann schauen wieviele Teile du brauchst..
Mit diesem Multiplikator dann aus der Lister der vorhandenen Maschinen aussuchen. Werden 320 kw gebraucht werden, dann kann ggF 2X160kW oder einer mit 320 kW zugeschalten werden.
In einem DB steht drin welche Kompressoren verfügbar sind mit deren Faktor.
Dann abwechselnd entsprechend zuschalten.

Vielleicht hilft es

bike
 
Ja, ich hätte vielleicht einmal die Suchfunktion bemühen sollen. Aber ich wusste nicht, wonach ich suchen hätte sollen...

Bis morgen schaffe ich das locker, ich habe mir nun nämlich einen Zettel geschrieben, bis wann ich das Problem gelöst haben muss, und da steht als Termin: Morgen *ROFL*(so ist das halt, nach der angekündigten Menge Bier)

Nochmal vielen Dank für Eure Hilfe,

Ihr seid SUPER.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, ich hätte vielleicht einmal die Suchfunktion bemühen sollen. Aber ich wusste nicht, wonach ich suchen hätte sollen...

Bis morgen schaffe ich das locker, ich habe mir nun nämlich einen Zettel geschrieben, bis wann ich das Problem gelöst haben muss, und da steht als Termin: Morgen *ROFL*(so ist das halt, nach der angekündigten Menge Bier)

Nochmal vielen Dank für Eure Hilfe,

Ihr seid SUPER.

So jetzt ist quasi morgen und ich geh ins Bett. Im Anhang findest Du eine Quick and Dirty Lösung (der Code ist extrem Lang und viel Copy Paste).

Sind auch sicher noch einige Käfer drin.
 

Anhänge

  • AirPower.zip
    5,1 KB · Aufrufe: 43
D a n k e

Zotos, Du bist der Wahnsinn. Da Dank Dir nun heute morgen ist, werde ich das beim Kunden gleich austesten.
:TOOL:

Ich werde Dir Bescheid geben.

Schlaf' Dich schön aus,

LG
 
Ich finde die Umsetzung ja noch nicht so prickelnd. Das ganze basiert auf dem Code aus dem Thread von Steve81 da ging es aber um die Kombination 2..4 Bits von 20 und nicht wie hier 1..16 von 16.

Der Grundgedanke ist das man zu erst alle Kombinationen mit 1Bit aus 16Bits ausprobiert (sprich jeder Kompressor alleine) dann 2Bits aus 16Bits (immer zwei Kompressoren) usw. Somit bekommt man automatisch den Vorrang von wenigen Kompressoren gegenüber mehreren Kompressoren bei gleicher Gesamtleistung.
Ich hatte gestern keinen Bock mehr was zu Böcken im Quellcode geführt hat.

Min- und Max-Leistung berücksichtigen (weniger gefordert als der kleinste Kompressor und mehr Leistung als alle zusammen).
Auch die Abbruchbedingung wenn man im Toleranzfenster ist war schludrig. Ich hab die Sachen mal ausgebügelt und diesem Thread angehängt. Ich war und bin auch zufaul um die Kommentare anzupassen ich habe mich darauf beschränkt die Bitübergänge richtig zu bezeichnen (von 1zu2 Bits usw.)

Der Code basiert aber immer noch auf der Abfrage einzellner Bits was den Code fürchterlich aufbläht. Vielleicht hat einer in Mathe besser aufgepasst und kann mir mal einen Tipp geben:
Wie kann ich noch nacheinander erst alle Kombinationen aus einem dann aus zwei und dann aus drei Bits in einem WORD durchspielen?
 

Anhänge

  • AirPower2.zip
    5,1 KB · Aufrufe: 36
Zuviel Werbung?
-> Hier kostenlos registrieren
@Zotos

Ich bin zurück vom Kunden, und habe Dein Programm so wie es ist, nach einigen Vorabtest's im Büro, einfach mal so implementiert. Im Prinzip schaut es ganz gut aus, speziell von der Inbetriebnahme-Visu bin ich hin und weg. Ich habe gestern auch noch den von Dir genannten Thread überflogen, um Eure ursprüngliche Aufgabe zu verstehen. Beim jetzigen Code besteht nun folgendes Problem: Wird eine Leistung angefordert, die kleiner als die Hälfte der geringsten zur Verfügung stehenden ist, wird gar keine Leistung mehr angefordert. Aber, keinen Kompressor zu starten, macht sich nicht so gut.. Da aber je nach Vergügbarkeit von Kompressoren sich die kleinste Leistung ändern kann, habe ich mein herumgebastele an Deinem Code sehr schnell wieder beendet. Wäre diese Änderung für Dich viel Arbeit? Muss natürlich nicht umsonst sein!
So weit ich Deinen Code durchschaue, werden nun alle Möglichkeiten "durchprobiert", bewertet und davon das Ergebnis abgeleitet. Ist natürlich Zykluszeit raubend, wobei ich bei Ausführung des Codes eine lächerliche Erhöhung der Zykluszeit von ca. 0,6 ms auf max. 1,5 ms feststellen konnte! Hast Du "hobbymäßig" schon einmal über die Lösung über dynamische Programmierung unter Verwendung des Algorithmus von Nemhauser und Ullmann nachgedacht? (wurde bereits 1969 erfunden) Was ich u.a. bei Einsatz eines solchen Algorythmus sowieso nicht verstehe, ist die zweite Liste mit der Bewertung der Kombinationen. Aber ist nur so ein Gedanke...

Während ich das hier schreibe, habe ich gerade gesehen, daß Du einen weiteren Beitrag erstellt hast.

Danke nochmal inzwischen, vielleicht kann ich mich ja irgendwie revanchieren?

Liebe Grüße
 
Was ist denn eigentlich das Entscheidungskriterium, wenn kein Wert so richtig passt? Ich mein wenn eine Kombination von zweien um 20 daneben liegt eine Kombination aus dreien um 15. Welche soll dann genonmmen werden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist denn eigentlich das Entscheidungskriterium, wenn kein Wert so richtig passt? Ich mein wenn eine Kombination von zweien um 20 daneben liegt eine Kombination aus dreien um 15. Welche soll dann genonmmen werden?

Wie der Oberchefe bereits angemerkt hat erledigt das der Parameter mit der Toleranz. Wenn die Toleranz in dem Beispiel >= 20 ist werden zwei Kompressoren angeworfen, wenn die Toleranz kleiner ist werden die drei verwendet. Wenn die zwei Kompressoren bereits im Toleranzbereich liegen wird auch nicht weiter gesucht ob man mit 3,4,5... ein besseres Ergebnis erreichen könnte (die Suche bricht dann ab).
 
OK, ich habe mir das Programm nicht angesehn (mea culpa), liegt aber vielleicht daran, dass ich nicht recht weiß mit welchem Werkzeug ich Dateien mit der Endung .pro zu öffnen habe.

OK, noch ne Zusatzfrage: Wenn ich es recht verstanden habe werden bis zu vier Ausgänge (Pneumatikanschlüsse) bedient. Werden alle mit einem mal angesteuert oder kann sich der Solldruck auch mit der Zeit ändern. D.h. Anschluss A gibt 430, nach 3 Stunden wird er auf 350 reduziert, die anderen Sollwerte bleiben aber so wie sie waren. Dann müsste man doch entweder alles komplett neu berechnen oder von der verbleibenden Kompressoren die passenden Auswählen.
 
Zurück
Oben