初始非线性约束函数评估中的失效。FMINCON无法继续。

10次浏览(最近30天)
我有以下的代码,我收到一个错误在第一个非线性约束,我检查了矩阵和尺寸是有序的。我很感谢你的帮助。
问题的定义
他的工作效率很高
n_Q = 0.4;
n_W = 0.3;
n_AB = 0.8;
n_C = 3;
n_R = 0.7;
康斯坦斯有能力和我们交谈
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;
C_max = [C_max_CHP_g C_max_CHP_e、C_max_CHP_t C_max_AB, C_max_CERG, C_max_WARG);
偶合矩阵
A1 = [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 = [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 = [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 = [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
H1 = [n_Q 1 0;
n_W, 0, 1];
H2 = [n_AB, 1];
H3 = [n_C, 1];
H4 = [n_R, 1];
偶合矩阵
X = (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
[1, Y = 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
矩阵energía
Z1 = H1 * A1;
Z2 = H2 * A2;
Z3 = H3 * A3;
Z4 = H4 * A4;
我的女儿,energía, del EH
Z = [z1 ', z2 ', z3 ', z4 '];
输入-输出矩阵
R = [-eye(2);zero (2)];
Q = [X, Z];
法语:法语(J)
J_1 = [0 (3,2) Y);
J_2 = (R, Q);
J = [J_1; J_2];
需求的信息等于能量
气体的百分比
P_g = 0.04;%千瓦/小时
% Precio electricidad
P_e =[40岁,20岁,35岁,40岁,60110120115年,75年,80120年,90年,70年,60岁,40)/ 1000;%千瓦/小时
% Demandas
D_h = [0200320400580550520500470420320200];
D_e = [0150210180175180210160];
D_c =[0, 0、25、50、75125150125、75年,50岁,25岁,0];
电力为您服务
P_tiempo = (1:1:24);时间的流逝%时间的流逝
%定义energía eléctrica的精度矢量(参考)
P_e_vect_1 = 0(1、长度(P_tiempo));el矢量
P_e_vect_1 (P_tiempo > = 0) & (P_tiempo < = 2)) = P_e (1);
P_e_vect_1 (P_tiempo > 2) & (P_tiempo < = 6)) = P_e (2);
P_e_vect_1 (P_tiempo > 6) & (P_tiempo < = 7)) = P_e (3);
P_e_vect_1 (P_tiempo > 7) & (P_tiempo < = 8)) = P_e (4);
P_e_vect_1 (P_tiempo > 8) & (P_tiempo < = 9)) = P_e (5);
P_e_vect_1 (P_tiempo > 9) & (P_tiempo < = 10)) = P_e (6);
P_e_vect_1 (P_tiempo > 10) & (P_tiempo < = 12)) = P_e (7);
P_e_vect_1 (P_tiempo > 12) & (P_tiempo < = 13)) = P_e (8);
P_e_vect_1 (P_tiempo > 13) & (P_tiempo < = 15)) = P_e (9);
P_e_vect_1 (P_tiempo > 15) & (P_tiempo < = 19)) = P_e (10);
P_e_vect_1 (P_tiempo > 19) & (P_tiempo < = 20)) = P_e (11);
P_e_vect_1 (P_tiempo > 20) & (P_tiempo < = 21)) = P_e (12);
P_e_vect_1 (P_tiempo > 21) & (P_tiempo < = 22)) = P_e (13);
P_e_vect_1 (P_tiempo > 22) & (P_tiempo < = 23)) = P_e (14);
P_e_vect_1 (P_tiempo > 23) & (P_tiempo < = 24)) = P_e (15);
需求向量eléctrica
P_e_vect_d_1 = 0(1、长度(P_tiempo));
P_e_vect_d_1 (P_tiempo > = 0) & (P_tiempo < = 8)) = D_e (1);
P_e_vect_d_1 (P_tiempo > 8) & (P_tiempo < = 12)) = D_e (2);
P_e_vect_d_1 (P_tiempo > 12) & (P_tiempo < = 15)) = D_e (3);
P_e_vect_d_1 (P_tiempo > 15) & (P_tiempo < = 18)) = D_e (4);
P_e_vect_d_1 (P_tiempo > 18) & (P_tiempo < = 19)) = D_e (5);
P_e_vect_d_1 (P_tiempo > 19) & (P_tiempo < = 20)) = D_e (6);
P_e_vect_d_1 (P_tiempo > 20) & (P_tiempo < = 24)) = D_e (7);
对制冷量要求向量的定义
P_c_vect_d_1 = 0(1、长度(P_tiempo));
P_c_vect_d_1 (P_tiempo > = 0) & (P_tiempo < = 9)) = D_c (1);
P_c_vect_d_1 (P_tiempo > = 9) & (P_tiempo < = 10)) = D_c (2);
P_c_vect_d_1 (P_tiempo > = 10) & (P_tiempo < = 12)) = D_c (3);
P_c_vect_d_1 (P_tiempo > = 12) & (P_tiempo < = 13)) = D_c (4);
P_c_vect_d_1 (P_tiempo > = 13) & (P_tiempo < = 14)) = D_c (5);
P_c_vect_d_1 (P_tiempo > = 14) & (P_tiempo < = 15)) = D_c (6);
P_c_vect_d_1 (P_tiempo > = 15) & (P_tiempo < = 16)) = D_c (7);
P_c_vect_d_1 (P_tiempo > = 16) & (P_tiempo < = 17)) = D_c (8);
P_c_vect_d_1 (P_tiempo > = 17) & (P_tiempo < = 18)) = D_c (9);
P_c_vect_d_1 (P_tiempo > = 18) & (P_tiempo < = 19)) = D_c (10);
P_c_vect_d_1 (P_tiempo > = 19) & (P_tiempo < = 24)) = D_c (11);
向量的定义
P_h_vect_d_1 = 0(1、长度(P_tiempo));
P_h_vect_d_1 (P_tiempo > = 0) & (P_tiempo < = 6)) = D_h (1);
P_h_vect_d_1 (P_tiempo > = 6) & (P_tiempo < = 7)) = D_h (2);
P_h_vect_d_1 (P_tiempo > = 7) & (P_tiempo < = 8)) = D_h (3);
P_h_vect_d_1 (P_tiempo > = 8) & (P_tiempo < = 12)) = D_h (4);
P_h_vect_d_1 (P_tiempo > = 12) & (P_tiempo < = 13)) = D_h (5);
P_h_vect_d_1 (P_tiempo > = 13) & (P_tiempo < = 14)) = D_h (6);
P_h_vect_d_1 (P_tiempo > = 14) & (P_tiempo < = 16)) = D_h (7);
P_h_vect_d_1 (P_tiempo > = 16) & (P_tiempo < = 17)) = D_h (8);
P_h_vect_d_1 (P_tiempo > = 17) & (P_tiempo < = 21)) = D_h (9);
P_h_vect_d_1 (P_tiempo > = 21) & (P_tiempo < = 23)) = D_h (10);
P_h_vect_d_1 (P_tiempo > = 23) & (P_tiempo < = 24)) = D_h (11);
串联的需求向量
输出电压= [P_e_vect_d_1; P_c_vect_d_1 P_h_vect_d_1];
输出电压=[电压输出;0 (7,24)]';
%%优化问题
save_results = [];
t = 1:长度(P_tiempo)
costo的功能
@(V) P_e_vect_1(t)*V(1) + P_g*V(2);
% Restricciones
nonlcon = @restricciones;
Aeq = J;
说真的=输出电压(t):);
%的身体进行调整
x0 = 1(14日1);
% Parametros临时演员
一个= [];
b = [];
1磅= 0(14日);%这样差
乌兰巴托= [];
res = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon);
Save_results = [Save_results, res];
结束
% desigualdad的限制
函数测查[c] = restricciones (V)
A1 = [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 = [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 = [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 = [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
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;
C_max = [C_max_CHP_g C_max_CHP_e、C_max_CHP_t C_max_AB, C_max_CERG, C_max_WARG);
c(1) = A1*V(3:14) - C_max(1:3)';问题来了
c(2) = A2*V(3:14) - ones(2,1)*C_max(4);
c(3) = A3*V(3:14) - ones(2,1)*C_max(5);
c(4) = A4*V(3:14) - ones(2,1)*C_max(6);
c (5) = a1 * V (3:14);
c (6) = a2 * V (3:14);
c (7) = a3 * V (3:14);
c (8) = a4 * V (3:14);
测查= [];
结束

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2021年9月2日
c(1) = A1*V(3:14) - C_max(1:3)';问题来了
A1是3 × 12。V是14 × 1,但是从它中选择了12个元素,所以V(3:14)是12 × 1。A1 * V(3:14)然后是(3 x 12) *(12 * 1)给出一个3 x 1的结果。
C_max(1:3)。'是3 x 1。
从3x1中减去3x1就得到3x1的结果。但是你试图将3 x 1的结果存储到一个位置c(1)
如果你试图构建一个在每个点上有3个约束的系统,然后赋值给c(:,1), c(:,2)等等,这样在最后c将是3 x 8。然后在最后,c = c(:),这样就可以按照正式要求输出一个向量。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年9月2日
c{1} = A1*V(3:14) - C_max(1:3)';
c = A2*V(3:14) - C_max(4);
c = c *V(3:14) - C_max(5);
c{4} = A4*V(3:14) - C_max(6);
c {5} = a1 * V (3:14);
c {6} = a2 * V (3:14);
c {7} = a3 * V (3:14);
c {8} = a4 * V (3:14);
c = cell2mat (c);

登录评论。

更多的答案(0)

标签

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

翻译的