аргумент должен быть строкой или числом, а не 'LpAffineExpression' - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь использовать python функцию IRR с максимизацией PULP, но я получаю следующую ошибку

TypeError: аргумент float () должен быть строкой или числом, а не 'LpAffineExpression' TypeError Traceback ( последний последний вызов) в 11 name [6] * rate [6] * rateList2 [2] + name [7] * rate [7] * rateList2 [2] + name [8] * rate [8] * rateList2 [2 ] + имя [9] * рейтинг [9] * курсыList2 [2] + имя [10] * рейтинг [10] * тарифыList2 [2] + имя [11] * рейтинг [11] * тарифыList2 [2] + 12 имя [ 12] * Rate [12] * RateList2 [2] + Имя [13] * Rate [13] * RateList2 [2] + Имя [14] * Rate [14] * RateList2 [2] + Имя [15] * Rate [ 15] * RateList2 [2] + имя [16] * Rate [16] * RateList2 [2] + имя [17] * Rate [17] * RateList2 [2] +

---> 13 имя [18] * рейтинг [18] * курсыList2 [2])]) 14 15

problem += np.irr([(-19660528.00),
        (name[0]*rate[0] + name[1]*rate[1] + name[2]*rate[2] + name[3]*rate[3] + name[4]*rate[4] + name[5]*rate[5] + 
        name[6]*rate[6] + name[7]*rate[7] + name[8]*rate[8] + name[9]*rate[9] + name[10]*rate[10] + name[11]*rate[11] +
        name[12]*rate[12] + name[13]*rate[13] + name[14]*rate[14] + name[15]*rate[15] + name[16]*rate[16] + name[17]*rate[17] + 
        name[18]*rate[18]),
       (name[0]*rate[0]*ratesList1[1] + name[1]*rate[1]*ratesList2[1] + name[2]*rate[2]*ratesList2[1] + name[3]*rate[3]*ratesList2[1] + name[4]*rate[4]*ratesList2[1] + name[5]*rate[5]*ratesList2[1] + 
        name[6]*rate[6]*ratesList2[1] + name[7]*rate[7]*ratesList2[1] + name[8]*rate[8]*ratesList2[1] + name[9]*rate[9]*ratesList2[1] + name[10]*rate[10]*ratesList2[1] + name[11]*rate[11]*ratesList2[1] +
        name[12]*rate[12]*ratesList2[1] + name[13]*rate[13]*ratesList2[1] + name[14]*rate[14]*ratesList2[1] + name[15]*rate[15]*ratesList2[1] + name[16]*rate[16]*ratesList2[1] + name[17]*rate[17]*ratesList2[1] + 
        name[18]*rate[18]*ratesList2[1]),
       (name[0]*rate[0]*ratesList1[2] + name[1]*rate[1]*ratesList2[2] + name[2]*rate[2]*ratesList2[2] + name[3]*rate[3]*ratesList2[2] + name[4]*rate[4]*ratesList2[2] + name[5]*rate[5]*ratesList2[2] + 
        name[6]*rate[6]*ratesList2[2] + name[7]*rate[7]*ratesList2[2] + name[8]*rate[8]*ratesList2[2] + name[9]*rate[9]*ratesList2[2] + name[10]*rate[10]*ratesList2[2] + name[11]*rate[11]*ratesList2[2] +
        name[12]*rate[12]*ratesList2[2] + name[13]*rate[13]*ratesList2[2] + name[14]*rate[14]*ratesList2[2] + name[15]*rate[15]*ratesList2[2] + name[16]*rate[16]*ratesList2[2] + name[17]*rate[17]*ratesList2[2] + 
        name[18]*rate[18]*ratesList2[2])])

проблема + = (имя [0] + имя [1] + имя [2] + имя [3] + имя [4] + имя [5] + имя [6] + имя [7] + имя [8] + имя [9] + имя [10] + имя [11] + имя [12] + имя [13] + name [14] + name [15] + name [16] + name [17] + name [18]) <= sum (marketMix ['GLA']), "1-е ограничение" </p>

1 Ответ

0 голосов
/ 08 января 2020

Функция numpy irr() принимает в качестве аргумента список значений. Вместо этого вы передаете список линейных выражений, содержащих переменные, которые подлежат оптимизации. irr() не готов справиться с этим. Предполагается, что все аргументы могут быть приведены в float. Вместо использования функции irr() вам придется явно указать соответствующее выражение.

...