Максимальное значение для заданной емкости

#python

#python

Вопрос:

Я пытаюсь написать функцию, которая вернет максимальное значение для заданной емкости из списка элементов.Если два или более элементов имеют одинаковое значение, найдите наилучшую возможную комбинацию. Функция будет похожа function(capacity,item_list) , и ей нужно вернуть значение max_value. Пример ввода: (‘имя’, вес, значение)

 item_list = [('item1', 2, 20), ('item2', 3, 20), ('item3', 2, 50), ('item4', 6, 80)]
item_list2 = [('item1', 8, 100), ('item2', 4, 100), ('item3', 4, 100)]
  

Ожидаемый результат function(5,item_list) для списка for 1 и function(10, item_list2) :

 70
200
  

Я успешно получил ожидаемый результат для данного примера.Тем не менее, я продолжаю проваливать какой-то скрытый входной тест.
Я делаю это так: сортирую список в порядке убывания значения, если элемент имеет одинаковое значение, будет преобладать элемент с меньшим весом.

 item_list = [('item4', 6, 80),('item3', 2, 50),('item1', 2, 20),('item2', 3, 20)]
  

Моя проблема здесь в том, что иногда комбинация элементов с меньшим значением будет больше, чем у элемента с более высоким значением, но большим весом. Я просто не знаю, как решить эту проблему.
Я очень признателен, если кто-нибудь может дать мне некоторые рекомендации и направить меня к какому-нибудь ресурсу для чтения. Я предпочитаю простое кодовое решение, потому что я все еще новичок во всем этом. Спасибо!

Комментарии:

1. просто google «рюкзак 0/1»

2. я пробовал, но код слишком сложный для моего понимания.

3. опубликуйте код, который вы пробовали

4. Это проблема с рюкзаком, которая является сложной. Лучший подход — использовать выпуклую оптимизацию. pulp Модуль хорош для этого. Вот руководство по ит, которое решает аналогичную проблему, которую вы должны быть в состоянии адаптировать для этого. (Когда учебная задача минимизирует затраты, вы максимизируете стоимость товара. Когда он устанавливает минимальное питание, вы устанавливаете максимальный вес.)