Info
Cette question est clôturée. Rouvrir pour modifier ou répondre.
multiple selections from an iteration
    1 vue (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I'm running this code.
part_machine=[1  0  0  1  0  1  1
          0  1  1  1  0  0  1
          1  0  0  1  1  0  0
          1  0  0  0  1  0  1
          1  1  0  0  0  1  0
          0  1  0  0  0  1  1];
      demand=[600;550;620;500;590;600];
      numIterations=100;
      for k=1:numIterations
          rand_cell=randi([0,1],7,3);
          if all(sum(rand_cell,2)==1);
         Part_cell(k)=part_machine*rand_cell;
          end
         Part_cell(Part_cell>=1)=1
          no_of_movements=sum(Part_cell,2)-1;
          movement_cost(k)=sum(bsxfun(@times,no_of_movements,demand));
      end
      minval=min(movement_cost);
      [rand_cell minval(ones(7,1))]
the idea behind this code is * generate rand_cell * select that rand_cell in which sum of rows is 1 * multiply Part_machine matrix with that rand_cell * then apply the other functions on part_machine matrix * then at the end select the minval from all iterations * result is displayed with that rand_cell matrix which has generated the minimum value
now the result I'm getting is like this
ans =
             1           0           1        6920
             1           0           0        6920
             0           1           0        6920
             1           1           0        6920
             1           1           1        6920
             1           1           1        6920
             1           0           1        6920
it is not the rand_cell matrix according to condition
all(sum(rand_cell,2)==1)
where is the problem?
2 commentaires
Réponses (1)
  Jan
      
      
 le 19 Déc 2016
        After
rand_cell = randi([0,1],7,3);
the condition
if all(sum(rand_cell,2)==1)
  Part_cell(k)=part_machine*rand_cell;
end
is very unlikely. The body of this IF-Block is most likely not entered.
But if it is satisfied
no_of_movements = sum(Part_cell, 2) - 1
replies zeros only.
To get a random matrix with one 1 per row:
index     = randi([1,3], 1, 7);
Part_cell = zeros(7, 3);
Part_cell(sub2ind([7,3], 1:7, index)) = 1;
2 commentaires
Cette question est clôturée.
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


