Kombinatorik einer Variantenreihe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
NinoBaumann
User
Beiträge: 72
Registriert: Samstag 25. April 2020, 19:03

Hallo,

ich bearbeite derzeit meine Masterthesis und simuliere in ABAQUS Rissprobleme. Dazu muss ich demnächst eine Studie von sehr vielen verschiedenen Modellen angehen. Dazu muss ich sämtliche Kombinationsmöglichkeiten folgender Verhältnisse wissen.

a_t1 = [0.02, 0.1, 0.2, 0.4, 0.6, 0.8, 0.9] -> 7 Verältnisse
a_c = [0.1, 0.2, 0.4, 0.6, 1.0, 1.5, 2.0] -> 7 Verältnisse
t1_t2 = [0.02, 0.2, 0.5, 1.0] -> 4 erältnisse
c/W = [0.1, 0.2, 0.4, 0.6, 0.8] -> 5 erältnisse

Das sind ja dann insgesamt 7*7*4*5=980 Fälle. Wie kann ich das Problem lösen, dass mir Python die Ergebnisse als Array ausspuckt?? Ich würde dir Werte danach gerne in eine .txt Datei schreiben.

[[0.02, 0.1, 0.02, 0.1]
[0.02, 0.1, 0.02, 0.2]
[0.02, 0.1, 0.02, 0.4]
[0.02, 0.1, 0.02, 0.6]
…….etc.

Viele Grüße
Nino
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Python hat ein itertools-Modul, das nimmt dir in diesem Fall die ganze Arbeit ab :)
Das Leben ist wie ein Tennisball.
NinoBaumann
User
Beiträge: 72
Registriert: Samstag 25. April 2020, 19:03

Danke für die Antwort EyDu :) Hier mein Ergebnis für mein Beispiel:

import numpy as np

a_c = [0.1, 0.2, 0.4, 0.6, 1.0, 1.5, 2.0]
a_t1 = [0.02, 0.1, 0.2, 0.4, 0.6, 0.8, 0.9]
t1_t2 = [0.02, 0.2, 0.5, 1.0]
c_W = [0.1, 0.2, 0.4, 0.6, 0.8]

new_array = np.array(np.meshgrid(a_c, a_t1, t1_t2, c_W)).T.reshape(-1,4)
print(new_array)


Grüße
Nino
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Code: Alles auswählen

import itertools
import math


a_c = [0.1, 0.2, 0.4, 0.6, 1.0, 1.5, 2.0]
a_t1 = [0.02, 0.1, 0.2, 0.4, 0.6, 0.8, 0.9]
t1_t2 = [0.02, 0.2, 0.5, 1.0]
c_W = [0.1, 0.2, 0.4, 0.6, 0.8]

data = (a_c, a_t1, t1_t2, c_W)

product = math.prod(map(len, data))
print(product, "Kombinationen")

if input("weiter? (j/y): ").lower() in "jy":
    result = list(itertools.product(*data))

Fehler werden mit einem MemoryError (Systemabsturz) bestraft.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten