QCQP error of fmincon: Row dimension of A is inconsistent with length of b.

3 ビュー (過去 30 日間)
Faisal Alghamdi
Faisal Alghamdi 2020 年 5 月 8 日
コメント済み: Faisal Alghamdi 2020 年 5 月 26 日
I have the following problem and I need to minimize the cost C with these constraints:
% Minimize C(dp)
% Decision variable = dp
% subject to:
% R(dp) >= C(dp)
% w >= 0
% pmin*l <= (po*l + dp) <= pmax*l % not needed
% l*dp <= 0 % not needed
I got the following error:
Error using fmincon (line 307)
Row dimension of A is inconsistent with length of b.
Please, help!
% po is constant price dollars per cubic feet $/CF
po = 3;
% is a vector of price for each hour
p = zeros(1,24);
% dp is a vector of price change from the default price po
dp = zeros(1,24); % Decision variable
% l is vector with all components one
l = ones(1,24);
% J is the price elasticity matrix (PEM)
J = zeros(24);
J = [-6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6 3;
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -6];
% f is a vector of the day-ahead demand forecast (for now, actual demand will be used)
% f = zeros(1,24);
% use D (actual demand) as f, for testing
D = [235.20 126.32 73.16 242.16 257.36 553.27 436.89 652.46 457.64 300.99 312.12 340.37 251.22 259.53 187.42 252.68 340.34 424.82 279.40 330.57 362.92 484.82 229.90 231.88];
f = D;
% Definde p & w
p = po .* l + dp;
% w is the water use profile
w = f + J .* dp;
%% Utility parameters
% Cost coefficients
b = 1000;
c = zeros(1,24);
c = 2.2*l;
d = 1;
wt = 140;
pmin = 1;
pmax = 5;
o = zeros(1,24);
% Revenue R
% Cost C
R = p.' .* w;
C = b + c.' .* w + d .* max(w - w.'.*l, o).' * max(w - w.'.*l, o); % Objective function
%% Optimization
% Minimize C(dp)
% Decision variable = dp
% subject to:
% R(dp) >= C(dp)
% w >= 0
% pmin*l <= (po*l + dp) <= pmax*l % not needed
% l*dp <= 0 % not needed
A = C;
b = R;
dp0 = ones(1,24);
func = @C;
fmincon(func,dp0,A,b)

回答 (1 件)

Guru Mohanty
Guru Mohanty 2020 年 5 月 13 日
Hi, I Understand you are trying to minimize C with the discission variable dp. To use fmincon function ie min(f) the condition is
" A*dp => b". In your case 'A' is a 24x24 matrix and 'dp' 1x24 matrix. 'B' should be a 24x1 matrix, but in your scenario, it is a 24x24 matrix. This leads to Dimension Inconsistency Error. After changing dimension the code should work.
  1 件のコメント
Faisal Alghamdi
Faisal Alghamdi 2020 年 5 月 26 日
Thanks for your help.
I changed the size of B but the code still not working.
I am getting this error:
"Unrecognized function or variable 'C'."
B = R(:,1);

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeParallel Computing についてさらに検索

タグ

製品


リリース

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by