Forum: Offtopic Mathe (Excel) Rätsel - Akkus als 4p4s selektieren.


von IncreasingVoltage .. (increasingvoltage)


Angehängte Dateien:

Lesenswert?

Hi,

ich bin gerade dabei ein 4s4p LiFe Akkupack zu bauen. Dabei wäre es 
natürlich sinnvoll, die einzelnen parallelen Packs möglichst auf die 
selbe Kapazität zu bringen, um ein schnelles Laden ohne langes 
Balancieren zu ermöglichen. Und Entladen nahe 0% wird auch sicherer, da 
kein Pack zu früh unter Vmin fallen sollte, während andere Packs noch 
20% drin haben.

BMS ist klar und kommt natürlich rein.

Frage:

Gibt es eine Möglichkeit, excel dazu zu bringen, selber die 
Kombinationen an Zellenverschaltungen auszuprobieren, um bei jedem der 
4p etwa auf die selbe Gesamtkapazität zu kommen?

Bestimmt gibt es einen Weg, aber ich (Mathe und Excel Experte...) habe 
keine Ahnung wie.

Wie würdet Ihr diese Aufgabe angehen?

Danke schon mal und schönes WE!

: Bearbeitet durch User
von Mike B. (mike_b97) Benutzerseite


Lesenswert?

wenn ich das richtig verstehe sollte es (4^4-4)/2=126 mögliche 
Zellenverschaltungskombinationen geben

alle hintereinander aufschreiben lassen

dann den Durchschnitt aller 4 Zellen dieser Kombi errechnen

dann die Summe aller absoluten Deltas pro Zelle zum Durchschnitt

und dann das Minimum aus dieser Summen anzeigen lassen (bedingte 
Formatierung->Farbskala o.ä. geht da gut)

von IncreasingVoltage .. (increasingvoltage)


Lesenswert?

Mike B. schrieb:
> wenn ich das richtig verstehe sollte es (4^4-4)/2=126 mögliche
> Zellenverschaltungskombinationen geben
>
> alle hintereinander aufschreiben lassen
>
> dann den Durchschnitt aller 4 Zellen dieser Kombi errechnen
>
> dann die Summe aller absoluten Deltas pro Zelle zum Durchschnitt
>
> und dann das Minimum aus dieser Summen anzeigen lassen (bedingte
> Formatierung->Farbskala o.ä. geht da gut)

Danke!

Ich verstehe alles weitestgehend, nur der erste Schritt ist für mich 
noch ein Hindernis.

Welche Formel muss ich aufstellen, um alle Zellenkombinationen aufzählen 
zu lassen?

Sorry für die dumme Frage, aber bin echt nicht mehr so fit in Mathe.

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Ich würde annehmen, dass man dem Ziel schon recht nahe kommt, wenn man 
die Zellen der Kapazität nach sortiert und dann von aussen anfangend 
jeweils die 2 stärksten und die 2 schwächsten Zellen kombiniert.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

IncreasingVoltage .. schrieb:
> Gibt es eine Möglichkeit, excel dazu zu bringen, selber die
> Kombinationen an Zellenverschaltungen auszuprobieren, um bei jedem der
> 4p etwa auf die selbe Gesamtkapazität zu kommen?

Mit den vordefinierten Excel-Funktion geht das vermutlich nicht, aber du
könntest in VBA einen Algorithmus programmieren, der sämtliche mögliche
Kombinationen durchrechnet und daraus das Optimum bestimmt.

Wenn ich dich richtig verstanden habe, möchtest du jeweils p=4 Zellen zu
einer Gruppe parallel und s=4 dieser Gruppen in Serie schalten. Für die
erste dieser dieser Gruppen gibt es

Möglichkeiten, die p Zellen aus dem Gesamtvorrat von s·p Zellen
auszuwählen. Für die zweite Gruppen stehen nur noch s·p-p Zellen zur
Auswahl, also gibt es dafür

Möglichkeiten. Für die dritte Gruppe gibt es entsprechend

Möglichkeiten usw.

Für die letzte (d.h. die s-te) Gruppe gibt es nur noch

d.h. eine einzige Möglichkeit.

Die Anzahl n der möglichen Kombinationen für die gesamte Anordnung der
Zellen ist das Produkt der vorgenannten Anzahlen dividiert durch die
Anzahl s! der möglichen Permutationen der Gruppen in der Serienschaltung
(die Reihenfolge der einzelnen Gruppen in der Serienschaltung spielt ja
keine Rolle). Also ist

Für s=p=4 ist n=2627625. Diese Zahl ist nicht so arg groß, so dass eine
gute Chance besteht, brute-force-mäßig alle Kombinationen in akzeptabler
Zeit durchrechnen lassen zu können.

Da ich weder Excel habe noch VBA beherrsche, kann ich dir diesbezüglich
leider nicht weiterhelfen. Sozusagen als Proof-of-Concept habe ich den
Algorithmus mal in Haskell implementiert, nicht besonders effizient,
aber gut genug, um damit ein paar Beispielberechnungen für s≤4 und p≤4
durchführen zu können (für größere s und p steigt die Rechenzeit schnell
an).

Hier sind eine paar Erläuterungen zu dem Algorithmus für den Fall, dass
du ihn in VBA nachprogrammieren möchtest:

Die Funktion combis generiert eine Liste aller n Kombinationen. Sie
nutzt dafür die Hilfsfunktion choose, die alle Möglichkeiten liefert,
aus einer Liste von Zellen (repräsentiert durch ihre Kapazitäten) k
Zellen auszuwählen. choose liefert dabei nicht nur die ausgewählten
Zellen, sondern auch jeweils eine Liste mit den verbleibenden Zellen.

Die Funktion combis wählt nun mit Hilfe von choose einen Satz von p
Zellen für die erste Gruppe aus und ruft sich rekursiv auf, um dasselbe
auch für die s·p-p verbleibenden Zellen zu tun. Die Rekursion bricht ab,
wenn alle Zellen "verbraucht" sind.

Um die beste Kombination zu ermitteln, wird auf alle Kombinationen die
Funktion range angewandt. Diese berechnet die Gesamtkapazität jeder
der s Gruppen als Summe der Einzelkapazitäten und bestimmt davon die
Differenz aus dem Maximum und dem Minimum. Diese Differenz ist ein Maß
für die "Unbalanciertheit" der Gruppen untereinander und sollte deswegen
möglichst klein sein. Die Kombination mit der geringsten /range/-Wert
landet schließlich in der Variable best, die mittels der Funktion
printSums zusammen mit den berechneten Summenkapazitäten jeder Gruppe
ausgegeben wird.

Die Anzahl p der in jeder Gruppe parallel geschalteten Zellen sowie die
gemessenen Kapazitäten der s·p Zellen werden beim Programmstart von
stdin als Integer-Zahlenwerte eingelesen. Am besten schreibt man alle
diese Werte vorher in eine Textdatei battdata.txt und ruft das Programm
aus der Konsole mit

1
battarrange <battdata.txt

auf.

Die Kapazitätswerte in der angehängten Datei battdata.txt kommen aus dem
Gauß-Zufallsgenerator mit den Parametern x̅=2500 und σ=40, so dass sie
statistisch den 13 Werten in deinem Excel-Screenshot ähnlich sind.

Nach etwa 3s (auf i5-Prozessor) erscheint folgendes Ergebnis:

1
2448 + 2518 + 2514 + 2546 = 10026
2
2548 + 2521 + 2439 + 2516 = 10024
3
2461 + 2492 + 2508 + 2564 = 10025
4
2490 + 2514 + 2530 + 2490 = 10024

Das sieht doch gar nicht schlecht aus, oder?

Die Unterschiede der Gruppenkapazitäten von nur ±1 sind typisch bei
diesen Kapazitätsstreuungen und zeigen, dass es sich durchaus lohnt,
sich Gedanken über die optimale Anordnung der Zellen zu machen. Die
Kapazitäsänderungen durch Alterung dürften sehr viel größer sein, aber
mit etwas Glück altern alle Zellen etwa gleich schnell, so dass die
Gruppenkapazitäten nicht zu sehr auseinanderlaufen.

Wenn du kein Haskell installieren und das Programm auch nicht in VBA
umschreiben möchtest, kann ich für dich gerne ein paar Programmläufe
durchführen, wenn du deine Kapazitätsdaten hier postest.

: Bearbeitet durch Moderator
von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

Yalu X. schrieb:
> Das sieht doch gar nicht schlecht aus, oder?

In der Tat.
Und es ist meiner Milchmädchenmethode (jeweils die 2 schlechtesten mit 
den 2 besten Zellen zu kombinieren) deutlich überlegen.

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Joe F. schrieb:
> Und es ist meiner Milchmädchenmethode (jeweils die 2 schlechtesten mit
> den 2 besten Zellen zu kombinieren) deutlich überlegen.

Dafür liefert dein empirisches Verfahren auch bei 5×5 Zellen sofort ein
anständiges Ergebnis, während man bei meinem mehr als zwei Monate darauf
warten muss. Und bis mein Programm die optimale Anordnung von 6×6 Zellen
ausspuckt, sind diese längst zu Staub zerfallen :)

von Peter M. (r2d3)


Lesenswert?

Hallo IncreasingVoltage,

IncreasingVoltage .. schrieb:
> ich bin gerade dabei ein 4s4p LiFe Akkupack zu bauen. Dabei wäre es
> natürlich sinnvoll, die einzelnen parallelen Packs möglichst auf die
> selbe Kapazität zu bringen, um ein schnelles Laden ohne langes
> Balancieren zu ermöglichen.

benutzt Du die Nennkapazitäten der Akkus, oder die Kapazität bei 
Erreichen der bei Dir individuellen Abschaltspannung für Dein Projekt?

Die letztere Größe ist nämlich die relevante.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.