我正在尝试使用 fmincon 来解决优化问题。参考下面的代码,我想(通过矩阵 A 和 b)施加不等式约束:
(x(1,1)+...+x(1,nA)*m_max_A +(x(1,nA+1)+...+x(1,nA+nB)*m_max_B
我尝试按照下面的文字编写代码,但它给了我错误 A must have 75 columns.
Ax我看不懂
我的推理是:N = 5 , (nA+nB) = 15,
A 必须是:(1x15) 并且是 X a (5x15)(认为 X= X' 用于乘法)
然后在最后一种情况下我尝试了以下定义,但无论如何它说 A 必须有 75 列(75 = 5x15),所以我可能错过了一些东西。
谁能解释一下原理?
mtot = [15, 14, 13, 15, 16]; % Esempio di vettore con N elementi
% 矿石数量 N = 长度(mtot);
% Inizializzazione dei valori di partenza per na_P e nb_P nA = 5; nB = 10;
% Definizione dei vincoli per na_P e nb_P m_A_max = 3; %portata massima 压缩机 A m_B_max = 2; %portata massima 压缩机 B
%Vettore portate di design per A e B mAB = [m_A_max * ones(1,nA),m_B_max * ones(1,nB)];
%aggiungi vincolo su m_max processata dai compressori A e B che può essere x0 = .5.*ones(N,nA + nB);
%vincoli di minimo e massimo 每 X
lb = 0.3*ones(N,nA+nB);
ub = ones(N,nA+nB);
%vincoli di disuguaglianza A = repmat([m_A_max * ones(1,nA), m_B_max * ones(1,nB)], N, 1); b = [mtot(1)'];
%vincoli di uguaglianza Aeq = []; beq = [];
% Risolvere il problema di ottimizzazione options = optimoptions('fmincon','Display','iter', 'MaxIterations', 10000, 'TolFun', 1e-8); fun = @(x) operation_V4(x,nA,nB, mAB, mtot, N);
[x,fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, [], 选项);
如果有人能向我解释施加 Axe 的原理,我将不胜感激
提前致谢