dpb <email@example.com> wrote in message <firstname.lastname@example.org>... > On 1/20/2013 11:11 AM, Michael Doukas wrote: > > "Michael Doukas" wrote in message > > <email@example.com>... > >> I have the following code (it is for a Tabu search algorithm): > >> > >> 1: InitialSol=generator; > 2: lsol=size(InitialSol,2); > >> 3: List=zeros(l,lsol); > >> 4: i=0; > >> 5: > 6: while i<=l > >> 8: Sol=tweak(InitialSol); > >> 9: % check if tweaked child already exists in the tabu list > >> 10: if ismember(Sol,List)==0 > >> 12: List=circshift(List,1); > 13: List(i,:)=Sol; > >> 14: i=i+1; > >> 15: end > >> 16: end > >> But it reaches line 13 and throws: > >> Subscript indices must either be real positive integers or logicals. > ... > > Quite a few problems here... > > The immediate problem is that you initialized i to zero and so the first > time there's a new entry added the subscript for L(i,:) is L(0,:). > > Either initialize i=1; or move the increment to be before the first usage. > > But, the ismember() usage isn't right, anyway...remember the 'rows' > optional argument? Plus, it returns a logical array which will be T iff > each member is T. If the idea is to not have any duplicates in L, then > > if ~any(ismember(Sol,List,'rows') > > doc any > doc equal > > --
Yes, in the meanwhile I figured it out on my own. Thank you anyway for your great help.