Seite 1 von 1

Kombinatorik einer Variantenreihe

Verfasst: Freitag 26. Februar 2021, 13:47
von NinoBaumann
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

Re: Kombinatorik einer Variantenreihe

Verfasst: Freitag 26. Februar 2021, 15:01
von EyDu
Python hat ein itertools-Modul, das nimmt dir in diesem Fall die ganze Arbeit ab :)

Re: Kombinatorik einer Variantenreihe

Verfasst: Montag 1. März 2021, 12:07
von NinoBaumann
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

Re: Kombinatorik einer Variantenreihe

Verfasst: Mittwoch 3. März 2021, 10:07
von DeaD_EyE

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.