can you add probability to a for loop?
2 ビュー (過去 30 日間)
古いコメントを表示
I have a very long and complex fitness function that I want to add even more complexity to, and I'm wondering if I can shortcut it.
The basic idea is that an individual has to choose between two patches to forage in and the patches can now have a varying probability, either high or low, of finding food.
I want the combination of probabilities to be different from each other, that is
p1 = prob of finding food in patch 1 = hi or lo
p2 = prob of finding food in patch 2 = hi or lo
(p1,p2) combinations
30% chance of (hi,lo)
25% chance of (hi,hi)
25% chance of (lo,lo)
20% chance of (lo,hi)
The most straight forward way would just be adding it up
total fitness Fd = 0.3(F1) + 0.25(F2) + 0.25(F3) + 0.2(F4)
My code for fitness is already very long with only one combination of finding food probabilities. Is there a way I could do a for loop with these combinations and add in that probability or do I have to go the long way around?
2 件のコメント
回答 (1 件)
dpb
2024 年 7 月 27 日
編集済み: dpb
2024 年 7 月 27 日
Are F1, F2, ..computationally different other than the two probabilities I gather from the above?
If not, encapsulate the calculation in a function and just call the function with the combinations and return in an array
HL=[0.9 0.3];
P=unique(combnk([HL HL],2),'rows');
W=[0.25; 0.20; 0.30; 0.25];
N=size(W,1);
F=zeros(N,1);
for i=1:N
F(i)=functionF(P(i,:));
end
Fd=dot(W,F);
4 件のコメント
dpb
2024 年 7 月 27 日
Isn't guaranteed that it can be done; I've not read the code thoroughly enough to fully follow the logic, but there's at least a chance.
I'd be pretty sure it could be turned into the looping construct with the function first shown, however, which would go a long way towards getting you to the point you need...
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!