您好我有以下代码进行linprog优化。
for j = 1:2
for i = 1:24
for K = 1:3
for M = 1:3
PV_output(:,:,:) = real(PV_power_output(:,:,:));
WT_output(:,:,:) = WT_power_output(:,:,:);
PVenergy = sum(sum(PV_output(:,:,1)));
WTenergy = sum(sum(WT_power_output(:,:,1)));
f= [((CRF*CC_PV)/PVenergy)+OM_PV; ((CRF*CC_WT)/WTenergy)+OM_WT];
A(:,:,:) = [-PV_output(:,:,K) -WT_output(:,:,M)];
b(:,:) = -Demand(j,i);
lb = zeros(2,1);
ub = [max_PV_area/PV_area max_WT_area/WT_area]';
end
end
end
end
x(:,j,i,K,M) = linprog(f,A,b,[],[],lb,ub)
WT_output和PV_output是3维365x24阵列,需求是365x24
我正在尝试为需求的每个365x24元素和每个维度优化x1和x2,以便找到最佳的K和M组合
然而,由于代码目前的情况,我不断收到错误 - “A中的行数必须与b的元素数相同。”
有人有任何建议吗?
答案 0 :(得分:0)
The documentation of linprog
声明:
x = linprog(f,A,b)求解min f'* x,使得A *x≤b。
因此,显然A中的行数必须与b的元素数相同,因为A可以是矩阵,而b是向量
如果你的问题是“为什么我的身材不好?”只是尝试在每一步打印矢量/矩阵的大小,以便查看错误的位置(例如,你忘记转置矩阵会发生很多事情)
答案 1 :(得分:0)
您的工作空间对A和B的大小有何看法? ChrisJamesC对..它也发生在我身上..我忘了在执行操作时转置矩阵。尝试通过放置断点来检查每个步骤的工作区。这可能会有所帮助