Optymalizacja/main.py
2024-04-01 19:33:42 +02:00

39 lines
739 B
Python

from plecak import *
import copy
l = 4
dostepne = [Item() for _ in range(l)]
for x in dostepne:
print(x.waga, x.wartosc)
cap = 10
def knapsack(dostepne, cap):
def rekurencja(i, waga, val, alfa):
nonlocal max_val
if i >= len(dostepne) or waga==cap:
if val > max_val:
max_val = val
return
if val >= alfa:
return
if waga + dostepne[i].waga <= cap:
rekurencja(i+1, waga + dostepne[i].waga, val + dostepne[i].wartosc, alfa)
rekurencja(i+1, waga, val, alfa)
max_val = float("-inf")
rekurencja(0, 0, 0, 25)
return max_val
best = knapsack(dostepne, cap)
print("----------\n" + f'wartość plecaka: {best}\n')