2

毎回選択される1つの数値()を除いて、P数値のセット( )に対して呼び出される変数を計算するプログラムを作成しようとしています。i=1:10ind

初回Pは計算されi=1:10、たとえば、数値4が選択されindて使用され、次の反復に含まれることは望ましくありません。したがって、この次の反復Pは。に対して計算する必要がありますi=[1:3 5:10]

どうすればこれを処理できますか?私がこれまでに持っているのは:

for i=1:10

    i=1:i
        t = sum(Job(i,2))
    i=1:10
        P = mean(Job(i,2))
        Index= Job(i,4)/Job(i,2)*exp(-max(Job(i,1)-Job(i,2)-t,0)/2*P)
        X=max(Index)
        ind=find(Index >= X)
    completion_time(Job(ind,3))= machine_free_time + Job(ind,2)
    machine_free_time = completion_time(Job(ind,3))
    Lateness(Job(ind,3))= completion_time(Job(ind,3)) - Job(ind,1)
    Tardiness(Job(ind,3))= max(Lateness(Job(ind,3)),0)
end
4

3 に答える 3

1

これを行う2つの方法:

  1. ベクトルから要素を削除する

    idcs = 1:10; % initially all values are included from 1 to 10
    for ii=1:10
        idx = choose one out of idcs
        % do your calculation
        % remove idx from idcs
        idcs(idcs==idx)=[];
    end
    
  2. 2番目のベクトルを使用して、すでに使用されている値を保持します。

    idcs = 1:10;
    valused=false(size(idcs));
    for ii=1:10
        idx = choose one out of idcs(~valused)
        % do your calculation
        % set the used value to true
        valused(idcs=idx)=true;
    end
    

したがって、たとえば、この2番目の方法を実行しようとしていることで使用するには、次のようになります。

vector_i = 1:10
vector_i_used = false(size(vector_i));

for kk=1:10 % main loop
    P = calculateP( vector_i(~vector_i_used) );
    % ...
    ind = calculateInd(P, vector_i(~vector_i_used));
    vector_i_used(vector_i==ind) = true;
end
于 2012-12-10T17:44:37.937 に答える
0

別のアプローチを提案します。値がすでに含まれているかどうかを確認し、すでにテストしている場合は含めないでください。コードと理解はあなたに任せますnewDoneが、このアプローチはうまくいくはずです。

alreadyDone=false(10,1);
for i=1:10
   if (alreadyDone(i))
      %Do stuff here
   end
   alreadyDone(newDone)=true;
end
于 2012-12-10T17:43:46.220 に答える
0

if / thenステートメントを使用して、ループ内の目的のインデックスをスキップします。

   skipThisIndex = [];
   for ii=1:10
      if ii~=skipThisIndex
         %  Do calculations
      end
      %Determine which index you want to skip next
      skipThisIndex = indexToSkipNext;
   end
于 2012-12-10T17:54:28.963 に答える