adjusting value in the function........
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (3 件)
Aleksander
2011 年 3 月 29 日
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 件のコメント
Jan
2011 年 3 月 28 日
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
2011 年 3 月 28 日
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
参考
カテゴリ
Help Center および File Exchange で Genetic Algorithm についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!