adjusting value in the function........
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This is my initial:
function V = fitnessFcn(Q)
deltad = -24.268; X=0.202;
V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));
Answer: V = fitnessFcn(rand(1,30))
V =
0.4335
>> V = fitnessFcn(rand(1,30))
V =
0.4956
>> V = fitnessFcn(rand(1,30))
V =
0.7894
>> V = fitnessFcn(rand(1,30))
V =
0.6970
>> V = fitnessFcn(rand(1,30))
V =
0.5132
>> V = fitnessFcn(rand(1,30))
V =
0.7035
>> V = fitnessFcn(rand(1,30))
V =
0.8027
>> V = fitnessFcn(rand(1,30))
V =
0.7466
>> V = fitnessFcn(rand(1,30))
V =
0.8897
>> V = fitnessFcn(rand(1,30))
V =
0.7190
>> V = fitnessFcn(rand(1,30))
V =
0.8302
>> V = fitnessFcn(rand(1,30))
V =
0.4334
>> V = fitnessFcn(rand(1,30))
V =
0.3439
>> V = fitnessFcn(rand(1,30))
V =
0.8189
>> V = fitnessFcn(rand(1,30))
V =
0.6515
>> V = fitnessFcn(rand(1,30))
V =
0.8410
>> V = fitnessFcn(rand(1,30))
V =
0.8377
>> V = fitnessFcn(rand(1,30))
V =
0.7555
>> V = fitnessFcn(rand(1,30))
V =
0.4869
>> V = fitnessFcn(rand(1,30))
V =
0.2456
>> V = fitnessFcn(rand(1,30))
V =
1.0383
So when I run the program, the answer for V will get a random number until I get the value in range 0.95<V<1.05.
After editing:
function V = fitnessFcn(Q)
deltad = -24.268; X=0.202;
V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));
if (V <= 1.05 V >= 0.95) true else false end
Answer:
V = fitnessFcn(rand(1,30))
ans =
1
V =
0.6990 (this value still not in range of 0.95 until 1.05)
How about if I want the answer between 0.95<V<1.05 automatically means that it will give the answer correct based on the range (0.95<V<1.05). Can anyone help me on this??
0 commentaires
Réponses (3)
Aleksander
le 29 Mar 2011
just put a for loop around your while statement for example (and this is quick and dirty - might want to make it more efficient and 'nice':
b=[];
for i=1:30
while
statement
end
V=[V b]
end
5 commentaires
Jan
le 28 Mar 2011
This is a strange line:
if (V <= 1.05 V >= 0.95) true else false end
What does it mean? Perhaps you want this:
if (0.95 <= V) && (V <= 1.05)
reply = true;
else
reply = false;
end
Or shorter:
reply = (0.95 <= V) && (V <= 1.05);
Aleksander
le 28 Mar 2011
From what I can tell, there's nothing in your statement that tells your program to continue executing until the condition 0.95<=V<=1.05 is true. I'm not sure what you're trying to do, but look copy and run this code for example. It will always produce a number within your range. you can "beautify" it but the point is that there is something in there that changes the value until the condition is true:
Q = rand(1,30);
deltad = -24.268;
X=0.202;
V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));
while (0.95 > V) || (V > 1.05)
Q = rand(1,30);
deltad = -24.268;
X=0.202;
V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));
end
V
Voir également
Catégories
En savoir plus sur Genetic Algorithm dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!