如果必须优化的向量的维度为 (NxnA+nB),如何在 Matlab 上使用 fmincon 设置不等式约束

问题描述 投票:0回答:0

我正在尝试使用 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 的原理,我将不胜感激

提前致谢

matlab optimization local nonlinear-optimization inequality
© www.soinside.com 2019 - 2024. All rights reserved.