<jupyter_start><jupyter_text>Das Rucksack-Problem für die richtige Priorisierung  Richtig PriorisierenBei einem Engpass stellt sich häufig die Frage nach einer Priorisierung. Das kann z.B. bedeuten wir haben verschiedene Produkte - jedes dieser Produkte hat einen unterschiedlichen Gewinn wie auch eine unterschiedliche Fertigungszeit - und eine feste verfügbare Zeit. Mathematisch ist das ein bekanntes Problem - das Rucksackproblem Dynamic programming Zur Lösung dieses Problems gibt es verschiedene Ansätze - einer davon ist dynamic programming. Zur genauen Verfahrensbeschreibung "dynamic programming knapsack" googlen.  Eingabez.B. nehmen wir 3 Objekte mit einer Fertigungszeit von je 4sec, 5sec, 2sec<jupyter_code>itemWeight = [4,5,2]<jupyter_output><empty_output><jupyter_text>jedes Objekt hat einen Wert von je 5€, 6€, 3€<jupyter_code>itemValues = [5,6,3]<jupyter_output><empty_output><jupyter_text>die maximale Kapazität wird jetzt festgelegt<jupyter_code>capacity=9
def backpack(maxWeight,items):
    matrix = [[0 for col in range(maxWeight+1)] for row in range(len(items[0]))]
    for row in range(len(items[0])): 
       
        for col in range(maxWeight+1):
            if items[0][row] > col:  
                matrix[row][col] = matrix[row-1][col] 
            else:
                
                matrix[row][col] = max(matrix[row-1][col], matrix[row-1][col-items[0][row]]+ items[1][row])

    packed = []
    col = maxWeight
   
    for row in range(len(items[0])-1,-1,-1):
        if row == 0 and matrix[row][col] != 0:
            packed.append(row+1)
        if matrix[row][col] != matrix[row-1][col]:
            packed.append(row+1)
            col -= items[0][row]
    print('Maximales Ergebnis ist ', matrix[len(items[0])-1][maxWeight])
    for i in packed:
        print('Nehme Objekt Nummer: ',i)
    
    

items = [itemWeight,itemValues]
backpack(capacity,items)<jupyter_output>Maximales Ergebnis ist  11
Nehme Objekt Nummer:  2
Nehme Objekt Nummer:  1
{'fraction_non_alphanumeric': 0.10685483870967742, 'fraction_numerical': 0.02066532258064516, 'mean_word_length': 3.681603773584906, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '366013', 'license': 'MIT', 'n_tokens_mistral': 683, 'n_tokens_neox': 676, 'n_words': 178, 'path': 'Priorisierung - oder das Rucksackproblem.ipynb', 'repo_name': 'MLYengineering/montecarlo', 'size': '1984'}