Нужны подсказки по настройке scipy .linprog/.milpPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нужны подсказки по настройке scipy .linprog/.milp

Сообщение Anonymous »

У меня задача оптимизировать стоимость продукта, например, найдя оптимальное сочетание баллончиков с краской разного объёма и цены для окраски данного квадрата.
Самый простой пример:

Код: Выделить всё

pdict = {'Can_9ltr':[9, 0.17, 4870],
'Can_4.5ltr':[4.5, 0.17, 2910],
'Can_1ltr':[1, 0.17, 632],
'Can_2.25ltr':[2.25, 0.17, 1790]}
где list[0] — объем конкретной банки, list[1] — расход краски на квадратный метр, а list[2] — цена за банку.
Фактически я получил вполне рабочее решение с помощью библиотеки Pulse:

Код: Выделить всё

{'Target_value': 30,
'Optimal_set': {'Can_1ltr': {'CPU': 632, 'Amount': 1.0, 'Cost': 632.0},
'Can_2.25ltr': {'CPU': 1790, 'Amount': 0.0, 'Cost': 0.0},
'Can_4.5ltr': {'CPU': 2910, 'Amount': 1.0, 'Cost': 2910.0},
'Can_9ltr': {'CPU': 4870, 'Amount': 0.0, 'Cost': 0.0}},
'Cost_total': 3542.0}
Код ниже:

Код: Выделить всё

import pulp
import math

pdict = {'Can_9ltr':[9, 0.17, 4870],
'Can_4.5ltr':[4.5, 0.17, 2910],
'Can_1ltr':[1, 0.17, 632],
'Can_2.25ltr':[2.25, 0.17, 1790]}
square = 30

def calculator(prod_dict, target_value):
prods = list(prod_dict.keys())
costs = {}
for key in prod_dict:
costs[key] = prod_dict[key][2]
exps = {}
for key in prod_dict:
exps[key] = prod_dict[key][0]/prod_dict[key][1]
upperBound = math.ceil(target_value/max([prod_dict[a][0]/prod_dict[a][1] for a in prod_dict]))\
*max([prod_dict[a][0]/prod_dict[a][1] for a in prod_dict])
prob = pulp.LpProblem('optimal_count', pulp.LpMinimize)
prods_vars = pulp.LpVariable.dicts('prods', prods, lowBound=0, cat=pulp.LpInteger)

prob += (pulp.lpSum([costs[i] * prods_vars[i] for i in prods]),"total_cost")
prob += (pulp.lpSum([exps[i] * prods_vars[i] for i in prods]) >= target_value, "lowerBound")
prob += (pulp.lpSum([exps[i] * prods_vars[i] for i in prods]) 

Подробнее здесь: [url]https://stackoverflow.com/questions/79292374/need-hints-for-tuning-scipy-linprog-milp[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка с возможностью scipy.linprog? (A_ub @ x0 <= b_ub).all() имеет значение True ---но--- linprog(np.zeros_like(x0), A
    Гость » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Гость
  • Эффективно получайте теневые цены в scipy linprog
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Scipy MILP функция
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Функция MILP Scipy [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Функция MILP Scipy [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»