Ограничения неравенства несовместимы с зависимой переменной - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь выполнить оптимизацию, которая берет список фиксированных ставок почасовой оплаты, c, и корректирует вывод x между значениями 0-100. Переменная y используется для расчета общей стоимости, которая представляет собой простую линейную зависимость от x. Тем не менее, минимальное количество побочного продукта, z, должно быть произведено, что связано с y.

Другими словами, я хочу выяснить, сколько я должен выводить каждый час (x), чтобы минимизировать мои затраты (c* y) при сохранении минимального значения z> 2500. Моя проблема в том, что я не думаю, что мои ограничения работают. Вот мой код:

import numpy as np
from scipy.optimize import minimize

c = np.array([31.05,31.38,31.28,30.86,30.76,30.92,30.62,33.98,57.97,44.08,36.49,36.68,37.47,37.44,36.63,35.74,36.77,37.32,41.49,37.38,37.39,37.58,35.76,31.90])

x0 = np.array([90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90])

z = 0.0315796 * y + 59.27303146

cons = [{'type': 'ineq', 'fun': lambda z: z.sum()-2500}]

def costs(x0, c):
    y = 46.23676376 * x0 -2603.33698013
    z = 0.0315796 * y + 59.27303146
    return c.dot(y)

bounds = [(0,100) for x in x0]

res = minimize(
    costs,
    x0,
    args=(c),
    constraints=cons,
    bounds=bounds,
)
print(res)

Я получаю сообщение об ошибке «Несовместимые ограничения неравенства». Как правильно ограничить мою переменную z?

...