php for循环嵌套好复杂,怎样简化很多重for循环嵌套?

本帖最后由 豆花0817 于 2020-12-13 21:35 编辑

比如下面这样,有6个变量a1到a6总和为N=65,希望找到使求得的总成本TC最小时候,这6个变量取值为多少?

这里我采取最笨的遍历方法,但是要很久很久的时间,有什么方法可以加快计算速度,或者取代for循环?

新人请教,不吝赐教!!

s=4;

N=65;

for a1=1:N

a2=1:N-a1

a3=1:N-a1-a2

a4=1:N-a1-a2-a3

a5=1:N-a1-a2-a3-a4

a6=N-a1-a2-a3-a4-a5;

if a6>=1                                                                      % 每个变量至少为1

d1=max(a1-s,0);

t1 = d1 / s * unit;

TTC1 = t1 * alpha / unit;

SEC1 = max((60 - 0 - t1) * beta / unit,0);

SLC1 = max((0 + t1 - 60) * gama / unit,0);

TC1= TTC1 + SEC1 + SLC1;                                  %前面这些公式是计算TC的值

d2 = max(a2 + d1 - s,0);

t2 = d2 / s * unit;

TTC2 = t2 * alpha / unit;

SEC2 = max( (60 - 10 - t2) * beta / unit,0);

SLC2 = max((10 + t2 - 60) * gama / unit,0);

TC2= TTC2 + SEC2 + SLC2;

d3 =max( a3 + d2 - s,0);

t3 = d3 / s * unit;

TTC3 = t3 * alpha / unit;

SEC3 = max( (60 - 20 - t3) * beta / unit,0);

SLC3 = max((20 + t3 - 60) * gama / unit,0);

TC3=TTC3 + SEC3 + SLC3;

d4 =max( a4 + d3 - s,0);

t4 = d4 / s * unit;

TTC4 = t4 * alpha / unit;

SEC4 = max( (60 - 30 - t4) * beta / unit,0);

SLC4 = max((60 + t4 - 60) * gama / unit,0);

TC4=TTC4 + SEC4 + SLC4;

d5 =max( a5 + d4 - s,0);

t5 = d5 / s * unit;

TTC5 = t5 * alpha / unit;

SEC5 = max( (60 - 40 - t5) * beta / unit,0);

SLC5 = max((40 + t5 - 60) * gama / unit,0);

TC5=TTC5 + SEC5 + SLC5;

d6 =max( a6 + d5 - s,0);

t6 = d6 / s * unit;

TTC6 = t6 * alpha / unit;

SEC6 = max( (60 - 50 - t6) * beta / unit,0);

SLC6 = max((50 + t6 - 60) * gama / unit,0);

TC6=TTC6 + SEC6 + SLC6;

k=TC1+TC2+TC3+TC4+TC5+TC6;

TC=[TC,k];

mm=min(TC);                %找到最小TC结果

A=[A,a1];                  %存储每个结果

B=[B,a2];

C=[C,a3];

D=[D,a4];

E=[E,a5];

F=[F,a6];

G=[D,TC1];

H=[H,TC2];

I=[I,TC3];

J=[J,TC4];

K=[K,TC5];

L=[L,TC6];

end

end

end

end

end

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值