我在使用scipy库解决优化问题时遇到了一个“维度”问题,代码如下
# Constantes
# Constantes de eficiencia de los conversores del EH
n_Q = 0.4
n_W = 0.3
n_AB = 0.8
n_C = 3
n_R = 0.7
# Constantes de máxima capacidad de flujo de energía
C_max_CHP_g = 400
C_max_CHP_e = 120
C_max_CHP_t = 160
C_max_AB = 400
C_max_CERG = 300
C_max_WARG = 300
# Precio del gas
P_g = 0.04 #kW/h
# Librerias necesarias
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
# Matrices de incidencia
A1 = np.array([[0,0,1,0,0,0,0,0,0,0,0,0],
[0,0,0,0,-1,-1,0,0,0,0,0,0],
[0,0,0,0,0,0,-1,-1,0,0,0,0]])
A2 = np.array([[0,0,0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,-1,-1,0,0]])
A3 = np.array([[0,1,0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,-1,0]])
A4 = np.array([[0,0,0,0,0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,-1]])
# Matrices de carácteristicas
H1 = np.array([[n_Q,1,0],
[n_W,0,1]])
H2 = np.array([n_AB,1])
H3 = np.array([n_C,1])
H4 = np.array([n_R,1])
# Matrices de incidencia
X = np.array([[1,1,0,0,0,0,0,0,0,0,0,0],
[0,0,1,1,0,0,0,0,0,0,0,0]]) # Entrada
Y = np.array([[1,0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1],
[0,0,0,0,0,0,1,0,0,1,0,0]]) # Salida
# Matrices de flujo de energía
Z1 = np.dot(H1,A1)
Z2 = np.dot(H2,A2)[np.newaxis]
Z3 = np.dot(H3,A3)[np.newaxis]
Z4 = np.dot(H4,A4)[np.newaxis]
# Matriz de flujo de energía del EH
Z = np.transpose(np.concatenate((Z1.T,Z2.T,Z3.T,Z4.T),axis=1))
# Matrices para de acoplamiento (Input-to-Output)
R = np.concatenate((-np.eye(2),np.zeros((5,2))),axis=0)
Q = np.concatenate((X,Z),axis=0)
# Matriz de acoplamiento aumentada (J)
J_1 = np.concatenate((np.zeros((3,2)),Y),axis=1)
J_2 = np.concatenate((R,Q),axis=1)
J = np.concatenate((J_1,J_2),axis=0)
# Vector de maxima capacidad
C_max = np.array([C_max_CHP_g,C_max_CHP_e,C_max_CHP_t,C_max_AB,C_max_CERG,C_max_WARG])
# Demanda
Vout = np.array([150,0,400,0,0,0,0,0,0,0])[np.newaxis]
Vout = Vout.T
# Definición de funciones
def objective_function(V):
return 110*V[0] + P_g*V[1]
# Restricciones
cons=({'type': 'eq',
'fun': lambda V: np.dot(J,V) - Vout},
{'type': 'ineq',
'fun': lambda V: np.sum(np.dot(A1,V[2:14])) - np.sum(C_max[0:2])},
{'type': 'ineq',
'fun': lambda V: np.sum(np.dot(A2,V[2:14])) - C_max[3]},
{'type': 'ineq',
'fun': lambda V: np.sum(np.dot(A3,V[2:14])) - C_max[4]},
{'type': 'ineq',
'fun': lambda V: np.sum(np.dot(A4,V[2:14])) - C_max[5]})
# Condicion inicial
x0 = np.zeros((14,1))
minimize(objective_function,x0,constraints=cons)
这是以下错误:ValueError:所有输入数组必须具有相同数量的维度,但索引0处的数组具有2个维度,而索引1处的数组具有1个维度
但是我检查了很多次尺寸,我看不出问题所在,我感谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐