0

嗨,我有以下代码,我认为这些代码索引错误,所以我没有得到我正在寻找的答案

Diesel_matrix = xlsread('test_diesel.xlsx','Sheet2');

Diesel_supply = Diesel_matrix(:,1); % Power output of diesel generator

hourly_cost = Diesel_matrix(:,2);  % Diesel cost of running genreator at that output




 for z = 1:21

 A    = [-PV_supply -WT_supply -Diesel_supply(z)*ones(24,1)];

   f = [CRF_PV*CC_PV; CRF_WT*CC_WT; (CRF_Diesel_generator*CC_Diesel)+sum(hourly_cost(1:z))]  ;


 b = -Demand;

 [x,fval,exitflag] = linprog(f,A,b,[],[],lb,ub)
 end

我试图只循环矩阵A的第三列。我想循环矩阵A的每行“Diesel_supply”中的所有行

目前,该代码适用于 21 组 x 输出,但第 3 列是第 1、2、3 行等,直到“Diesel_supply”的第 21 行。Wheras 我正在尝试将它用于第 1 行和第 2 行以及第 3 和第 4 行等,直到“Diesel_supply”的第 21 行。这将允许我检查“Diesel_Supply”中的所有元素

4

1 回答 1

0

根据@user643469 和我在聊天中的对话(请参阅评论部分中的链接),然后查看 linprog 的文档,我认为您需要将每次 z 迭代的结果存储在数据结构中,然后选择最好的循环结束。

据我了解,生成器有 21 种不同的模式可以运行,它受到 24 种不同的约束。每种模式都会稍微改变约束。

代替

[x,fval,exitflag] = linprog(f,A,b,[],[],lb,ub)

利用

val = linprog(f,A,b,[],[],lb,ub)
results(z) = val;

循环完成后,您将得到一个尺寸为 4x21 的结果矩阵,其中第一列包含 x 值,第二列包含 fval 值,第三列包含 exitflag 值。然后,您可以通过这个“结果”矩阵来确定您可用于运行生成器的 21 种模式中的哪一种。

于 2012-07-12T04:14:26.650 回答