Где питон видит функцию вместо числа с плавающей запятой в моем коде с помощью linprod? ⇐ Python
-
Anonymous
Где питон видит функцию вместо числа с плавающей запятой в моем коде с помощью linprod?
Я использую linprog для оптимизации линейной задачи в следующем коде (я удалил все переменные с самого начала, чтобы сделать его короче, но это всего лишь простые числа (например, ctaxa = 40):
из scipy.optimize import linprog Aub = [[-1,-1,0,0],[0,0,-1,-1],[1,1,1,1],[0,-1,0,-1]] буб = [-200,-250,1495,-500] Aeq = [[1,0,1,0]] бек = [800] защита TC(Qa1,Qa2,Qb1,Qb2): Qa = Qa1+Qa2 Qb = Qb1+Qb2 QCO2ea2 = Qa2*Envir_burden_a*Epa QCO2eb2 = Qb2*Envir_burden_b*Epb Qhga2 = Кол-во_hg*Qa2 Qhgb2 = Кол-во_hg*Qb2 Са = (QCO2ea2 + Qa2*Et2 + Qhga2*Ethga)*ctaxa Cb = (QCO2eb2 + Qb2*Et2 + Qhgb2*Ethgb)*ctaxb Cтакс = Ca+Cb Thg = Qty_hg*Qa*costthga + Qty_hg*Qb*costthgb Tbio = (Qa1+Qb1)*costt1 + (Qa2+Qb2)*costt2 PCbio = Qa*costproda + Qb*costprodb возврат PCbio+Tbio+Thg+Ctax res = linprog(TC,A_ub=Aub, b_ub=bub,A_eq=Aeq,b_eq=beq) и я получаю следующее сообщение об ошибке:
> Traceback (самый последний вызов — последний): > > Файл ~\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 в compat_exec > exec(код, глобальные переменные, локальные переменные) > > Файл c:\users\estel\onedrive\documents\sef\methods_for_the_anaанализ_of_energy_systems\lca\optimisation_linprogv2.py:67 > res = linprog(TC,A_ub=Aub, b_ub=bub,A_eq=Aeq,b_eq=beq) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog.py:628 в linprog > lp,solver_options = _parse_linprog(lp, options, meth) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog_util.py:1026 в _parse_linprog > lp = _clean_inputs(lp._replace(A_ub=A_ub, A_eq=A_eq)) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog_util.py:290 в _clean_inputs > c = np.array(c, dtype=np.float64, copy=True).squeeze() > > Ошибка типа: аргумент float() должен быть строкой или действительным числом, а не «функцией». Я не понимаю, в чем дело. У вас есть идея, пожалуйста?
Я проверил скобки и объединил все функции в одну, чтобы было как можно меньше «функций», но я все равно получаю то же сообщение (в начале PCbio, Tbio, Thg и Ctax рассчитывались через отдельные функции).
Я использую linprog для оптимизации линейной задачи в следующем коде (я удалил все переменные с самого начала, чтобы сделать его короче, но это всего лишь простые числа (например, ctaxa = 40):
из scipy.optimize import linprog Aub = [[-1,-1,0,0],[0,0,-1,-1],[1,1,1,1],[0,-1,0,-1]] буб = [-200,-250,1495,-500] Aeq = [[1,0,1,0]] бек = [800] защита TC(Qa1,Qa2,Qb1,Qb2): Qa = Qa1+Qa2 Qb = Qb1+Qb2 QCO2ea2 = Qa2*Envir_burden_a*Epa QCO2eb2 = Qb2*Envir_burden_b*Epb Qhga2 = Кол-во_hg*Qa2 Qhgb2 = Кол-во_hg*Qb2 Са = (QCO2ea2 + Qa2*Et2 + Qhga2*Ethga)*ctaxa Cb = (QCO2eb2 + Qb2*Et2 + Qhgb2*Ethgb)*ctaxb Cтакс = Ca+Cb Thg = Qty_hg*Qa*costthga + Qty_hg*Qb*costthgb Tbio = (Qa1+Qb1)*costt1 + (Qa2+Qb2)*costt2 PCbio = Qa*costproda + Qb*costprodb возврат PCbio+Tbio+Thg+Ctax res = linprog(TC,A_ub=Aub, b_ub=bub,A_eq=Aeq,b_eq=beq) и я получаю следующее сообщение об ошибке:
> Traceback (самый последний вызов — последний): > > Файл ~\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 в compat_exec > exec(код, глобальные переменные, локальные переменные) > > Файл c:\users\estel\onedrive\documents\sef\methods_for_the_anaанализ_of_energy_systems\lca\optimisation_linprogv2.py:67 > res = linprog(TC,A_ub=Aub, b_ub=bub,A_eq=Aeq,b_eq=beq) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog.py:628 в linprog > lp,solver_options = _parse_linprog(lp, options, meth) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog_util.py:1026 в _parse_linprog > lp = _clean_inputs(lp._replace(A_ub=A_ub, A_eq=A_eq)) > > Файл ~\anaconda3\Lib\site-packages\scipy\optimize\_linprog_util.py:290 в _clean_inputs > c = np.array(c, dtype=np.float64, copy=True).squeeze() > > Ошибка типа: аргумент float() должен быть строкой или действительным числом, а не «функцией». Я не понимаю, в чем дело. У вас есть идея, пожалуйста?
Я проверил скобки и объединил все функции в одну, чтобы было как можно меньше «функций», но я все равно получаю то же сообщение (в начале PCbio, Tbio, Thg и Ctax рассчитывались через отдельные функции).