Example #1
0
class BackpackTests(unittest.TestCase):
    def setUp(self):
        self.backpack = Backpack(7)
        self.backpack.clear()

    def test_empty(self):
        self.assertEqual(self.backpack.current_weight, 0)

    def test_insert(self):
        self.backpack.insert(Item('1', 2, 4))
        self.assertEqual(self.backpack.full_price, 4)
        self.assertEqual(self.backpack.current_weight, 2)
        self.assertEqual(self.backpack.items[0].name, '1')

    def test_clear(self):
        self.backpack.insert(Item('1', 2, 4))
        self.backpack.clear()
        self.assertEqual(self.backpack.full_price, 0)
        self.assertEqual(self.backpack.current_weight, 0)
        self.assertEqual(self.backpack.items, [])

    def test_greedy_alg(self):
        list_of_items = [
            Item('1', 2, 1),
            Item('2', 2, 3),
            Item('3', 3, 2),
            Item('4', 1, 1)
        ]
        self.assertEqual(DZ.greedy(list_of_items, self.backpack), (7, 10))

    def test_standart_alg(self):
        list_of_items = [
            Item('1', 2, 1),
            Item('T.E.A.', 2, 3),
            Item('3', 3, 2),
            Item('4', 1, 1)
        ]
        W = [list_of_items[i].weight for i in range(len(list_of_items))]
        P = [list_of_items[i].price for i in range(len(list_of_items))]
        self.assertEqual(DZ.standart(W, P, self.backpack, list_of_items),
                         (7, 10))
Example #2
0
    items = l
    items.sort(key=lambda x: x.price_cooficient)
    for i in items:
        while True:
            if not backpack.insert(i):
                break
    return backpack.current_weight, backpack.full_price


if __name__ == "__main__":
    list_of_items = [
        Item('1', 2, 1),
        Item('2', 2, 3),
        Item('3', 3, 2),
        Item('4', 1, 1)
    ]
    W = [list_of_items[i].weight for i in range(len(list_of_items))]
    P = [list_of_items[i].price for i in range(len(list_of_items))]
    #list_of_items = [Item("item " + str(i), random.random() * 100, random.random() * 1000, i) for i in range(1000)]
    static_list = list_of_items[:]
    bp = Backpack(7)
    t1 = time.time()
    print(standart(W, P, bp, list_of_items))
    t2 = time.time()
    print("sta algorythm time: " + str(t2 - t1))
    bp.clear()
    #greedy
    t1 = time.time()
    print(greedy(list_of_items, bp))
    t2 = time.time()
    print("greedy algorythm time: " + str(t2 - t1))