0

14 個のネストされたループをベクトル化する方法を知っていますか? (18 の各ブロックの最後はfor、同じブロック内の他のブロックによって事前に決定されます。for読みやすいので使用します)

max2=0
for(M_P in 0:9)
{
for(M_D in 0:(9-M_P))
{
for(M_A in 0:(9-M_P-M_D))
{
  for(M_CC in 0:(9-M_P-M_D-M_A))
  {
    for(M_CD in (9-M_P-M_D-M_A-M_CC))
    {


      for(G_D in 0:9)
      {
        for(G_A in 0:(9-G_D))
        {
          for(G_CC in 0:(9-G_D-G_A))
          {
            for(G_CD in (9-G_D-G_A-G_CC))
            {


              for(S_D in 0:9)
              {
                for(S_A in 0:(9-S_D))
                {
                  for(S_CC in 0:(9-S_D-S_A))
                  {
                    for(S_CD in (9-S_D-S_A-S_CC))
                    {


                      for(Q_P in 0:3)
                      {
                        for(Q_D in 0:(3-Q_P))
                        {
                          for(Q_A in 0:(3-Q_P-Q_D))
                          {
                            for(Q_CC in 0:(3-Q_P-Q_D-Q_A))
                            {
                              for(Q_CD in (3-Q_P-Q_D-Q_A-Q_CC))
                              {
                                    max1=1.1*M_P+2.1*M_D+3.1*M_A+4.1*M_CC+4*M_CD+2*G_D+5*G_A+1.5*G_CC+3*G_CD+5*S_D+4*S_A+3*S_CC+6*S_CD+2*Q_P+3*Q_D+2.2*Q_A+3*Q_CC+4*Q_CD
                                if(max1>max2)
                                {
                                  max2=max1
                                }}}}}}}}}}}}}}}}}}}
print(max2)

この小さな最適化作業を行う必要がありますが、R とプログラミングの両方が初めてなので、それをベトライズする方法がわかりません。基本的に私は 9 スロットの 3 セットと 3 スロットの 1 セットを持っています。スロットには、特定の値を持つある種のバッジを配置できます。これらのネストされたループは、可能なバッジの最適な組み合わせを検索します。もちろん、現在の例ではより高い値のバッジを配置するだけですが、実際のmax1計算はもう少し複雑で自明ではありません (必要に応じてコード全体を提供できます)。

4

0 に答える 0