Why am I getting a Parse error for a sequence?

조회 수: 8 (최근 30일)
Bohdan Schatschneider
Bohdan Schatschneider 2021년 7월 27일
댓글: Star Strider 2021년 7월 28일
I get the following errors when trying to write the code below: "Parse error at 1:usage may be invalid Matlab syntax"
"File: RunGA.m Line: 44 Column: 12
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other syntax
error. To construct matrices, use brackets instead of parentheses."
Code:
for it 1:MaxIt
end
The 'it' stands for iteration, the 1 is for iteration 1, and MaxIt is for the maximum number of iterations (which is 100 defined elsewhere).
The complete 'for' loop is here if needed:
%Main Loop of GA: (this does crossover and mutation)
for it 1:MaxIt %this starts 'for' loop and runs for MaxIt times.
popc = repmat(empty_individual, nC/2, 2); %generates the population of children/offspring. Two's make it easire to sort in matrix.
%Crossovers to be performed:
for k = 1:nC/2
%Select Parents for Crossover/offspring production.
q = randperm(nPop); % here we are selecting to parents at random for nPop and also ensuring that they are different parents.
p1 = pop(q(1)); %this takes the 1st member of the population from the random permutation above as parent #1 (p1).
p2 = pop(q(2)); %this takes the 2nd member of the population from the random permutation above as parent #2 (p2).
%Perform Crossover: uses definitions from SinglPoinCrossover file to define offspring and parents.
[popc(k, 1).Position, popc(k, 2).Position] = SinglePointCrossover(p1.Position, p2.Position); %popc(k, 1).Position = y1 and popc(k, 2).Position = y2, and 'parent1.Position' and 'parent2.Position' is x1 and x2 from SinglePointCrossover.m.
%line above tells us the posiiton of the 1st offspring in the kth column and 1st row and the 2nd offspring in the kth column and 2nd row
end
%Covert popc to single-column matrix: get popc ready for mutation step.
popc = popc(:); %the '(:)' Fn turns any matrix into a single column matrix.
%Mutation: this randomly changes bits in offspring genetics.
for l = 1:nC %this is an iteration of all members of popc.
%Perform Mutation: This uses the code in 'Mutate.m' to change the value of the lth offspring.
popc(l).Position = Mutate(popc(l).Posiiton, mu); %this mutates the lth element of our offspring pop (popc)with mutation rate, mu.
%Evalute the Cost of popc(l):
popc(l).Cost = CostFunction(popc(l).Position);
%Compare Solution to Best Solution Ever Found:
if popc(l).Cost < bestsol.Cost
bestsol = popc(l); %this says if pop(l) < bestsol, pop(l) becomes bestsol(this is garaunteed because of bestsol is initially = infininty)%b/c of this, bestsol gets updated regularly as better solutions are found.
end
end
%Update best cost of iteration: this takes the costs from pop(i)and popc(l) for each iteration and establishes the best cost value.
bestcost(it) = bestsol.Cost;
%Merge Populations: Here we'll merge pop(i) and popc values to sort and evaluate.
pop = [pop; popc]; %here we concatonated the pop and popc 1x1 matrices vertically (note the ';' in the concatonation).
end

답변 (1개)

Star Strider
Star Strider 2021년 7월 28일
It’s missing an equal (=) sign:
for it = 1:MaxIt %this starts 'for' loop and runs for MaxIt times.
.
  댓글 수: 2
Bohdan Schatschneider
Bohdan Schatschneider 2021년 7월 28일
HA!!! I stared at that for 2 hours trying to figure it out. Thanks.
Star Strider
Star Strider 2021년 7월 28일
My pleasure!
.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by