gpt4 book ai didi

algorithm - 一种简化以下代码的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:42 24 4
gpt4 key购买 nike

我有以下用 Matlab 编写的代码,用于查找三个单元的组合 MW:单元 1、2 和 3。逻辑如下:

合并第1单元的总数,存储。

合并第 2 单元的总数,存储它。

合并第 3 单元的总数,存储它。

合并单元 1 和单元 2 的总和,存储它。

合并单元 1 和单元 2 以及单元 3 的总和,存储它。

合并单元 1 和单元 3 的总和,存储它。

合并单元 2 和单元 3 的总和,存储它。

从程序上讲,我正在按照以下步骤进行操作:

%Max MW for each unit
maxMW = [200 60 50];

%Min MW for each unit
minMW = [50 15 15]


%Load Pattern in MW
%1-2 3-4 5-6 7-8
loadPattern = [250 320 110 75]

%Full load production cost for each unit
productionCost = [15.4 16.0062 16.800 18.060 18.900]

combination(1) = maxMW(1)
combination(2) = maxMW(2)
combination(3) = maxMW(3)
combination(4) = maxMW(1)+maxMW(2)
combination(5) = maxMW(1)+maxMW(2)+maxMW(3)
combination(6) = maxMW(2)+maxMW(3)
combination(7) = maxMW(1) + maxMW(3)

有没有办法简化 combination(i) block ?

最佳答案

如果顺序不重要,那么这段代码:

M=[1 2 3];
S=0;
for i=1:length(M)
S=S+nchoosek(3,i);
end
combinations=sum((arrayfun(@str2num,num2str(dec2bin(1:S))).*repmat(M,S,1))');

给出这个:

combinations(1)=M(3)
combinations(2)=M(2)
combinations(3)=M(2)+M(3)
combinations(4)=M(1)
combinations(5)=M(1)+M(3)
combinations(6)=M(1)+M(2)
combinations(7)=M(1)+M(2)+M(3)

关于algorithm - 一种简化以下代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com