Henk wrote:Some people use Most Valuable Victim/Least Valuable Aggressor to improve capture moves order. But is Static Exchange Evaluation not always better.
So when to use SEE and when to use MVV/LVA ?
I can imagine MVV/LVA takes less time to compute.
The key thing to understand is that there is no 'right' or 'wrong' way, and the choice of either MVV/LVA or SEE is the result of a tradeoff.
SEE
better predictor of best capture. the capture with the highest SEE is not always the best capture, but it's more often a good predictor than MVV/LVA. Both methods are local (only lookng at what happens on the target square) so they are both blind to many other things.
MVV/LVA
Trying to capture the biggest pieces first, also means that the subtree has a lower branching factor (less big pieces on the board means less legal moves on average).
[*] You need to experiment this for yourself to really understand it. This will be a good opportunity to put your own brain at work rather than asking people to do things for you:
- create a position that gives you a qsearch() explosion.
- try SEE sorting in your qsearch()
- try MVV/LVA
- which is best? have a look at the deep lines that are exploding the tree, and try to understand why.
Of course, MVV/LVA is also faster to compute. But that's trivial and uninteresting. Look at node count rather than time.
I've done quite a bit of experiment in my engine, and have concluded that, as far as DiscoCheck is concerned:
- SEE is best for ordering captures in the search()
- MVV/LVA is best for ordering captures in the qsearch()
PS: To demonstrate that you are not a Troll, you need to do your homework [*] before you answer to this post. So please do your homework before to answer any nonsense.
Thank you for answering my question.
What do you mean with homework [*] ? And why does it all be made so difficult to ask questions. I also do not mind short answers.
Henk wrote:Some people use Most Valuable Victim/Least Valuable Aggressor to improve capture moves order. But is Static Exchange Evaluation not always better.
So when to use SEE and when to use MVV/LVA ?
I can imagine MVV/LVA takes less time to compute.
The key thing to understand is that there is no 'right' or 'wrong' way, and the choice of either MVV/LVA or SEE is the result of a tradeoff.
SEE
better predictor of best capture. the capture with the highest SEE is not always the best capture, but it's more often a good predictor than MVV/LVA. Both methods are local (only lookng at what happens on the target square) so they are both blind to many other things.
MVV/LVA
Trying to capture the biggest pieces first, also means that the subtree has a lower branching factor (less big pieces on the board means less legal moves on average).
[*] You need to experiment this for yourself to really understand it. This will be a good opportunity to put your own brain at work rather than asking people to do things for you:
- create a position that gives you a qsearch() explosion.
- try SEE sorting in your qsearch()
- try MVV/LVA
- which is best? have a look at the deep lines that are exploding the tree, and try to understand why.
Of course, MVV/LVA is also faster to compute. But that's trivial and uninteresting. Look at node count rather than time.
I've done quite a bit of experiment in my engine, and have concluded that, as far as DiscoCheck is concerned:
- SEE is best for ordering captures in the search()
- MVV/LVA is best for ordering captures in the qsearch()
PS: To demonstrate that you are not a Troll, you need to do your homework [*] before you answer to this post. So please do your homework before to answer any nonsense.
Thank you for answering my question.
What do you mean with homework [*] ? And why does it all be made so difficult to ask questions. I also do not mind short answers.
I did not see [*] so you do not need to answer it again
Michel wrote:Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
I don't want to search for days getting answers to my questions.
Searching is exhausting. And at the end you may find that no good answer was present.
How do you prefer that we do the work for you?
Do you want us to use google and the search function of this forum to find the relevant threads and post links here so that you only have to click them?
Or do you prefer that we simply repeat here what has already been written many times on this forum and elsewhere?
If you know the answer right away, you may consider if you would like to answer the question, if you do not want to keep the answer [as] [a] secret.
I know the answer and it is not a secret, but I am not willing to take away from you the enriching experience of doing a tiny bit of research. I therefore stick to the above didactic reply.
Besides, I really don't see why I or anyone else should make an effort to help someone who explicitly states that he himself does not want to make an effort. Why should I type something out that you could have found anywhere on the internet if you only had tried?
There is such a thing as forum etiquette. It is not only about using civil language. It is also about showing respect to other forum members in the sense of only asking them to spend time on helping you out if you have first made a genuine effort yourself.
Michel wrote:Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
I don't want to search for days getting answers to my questions.
Searching is exhausting. And at the end you may find that no good answer was present.
How do you prefer that we do the work for you?
Do you want us to use google and the search function of this forum to find the relevant threads and post links here so that you only have to click them?
Or do you prefer that we simply repeat here what has already been written many times on this forum and elsewhere?
If you know the answer right away, you may consider if you would like to answer the question, if you do not want to keep the answer [as] [a] secret.
I know the answer and it is not a secret, but I am not willing to take away from you the enriching experience of doing a tiny bit of research. I therefore stick to the above didactic reply.
Besides, I really don't see why I or anyone else should make an effort to help someone who explicitly states that he himself does not want to make an effort. Why should I type something out that you could have found anywhere on the internet if you only had tried?
There is such a thing as forum etiquette. It is not only about using civil language. It is also about showing respect to other forum members in the sense of only asking them to spend time on helping you out if you have first made a genuine effort yourself.
It doesn't make sense to reinvent the wheel. If you are far behind you want quick answers to common questions. Of course there is always the lack of time and energy. Chess programming is not always the most important thing to do.
Henk wrote:It doesn't make sense to reinvent the wheel.
And that's why we have Google and the forum search function.
If you are far behind you want quick answers to common questions. Of course there is always the lack of time and energy. Chess programming is not always the most important thing to do.
No reasons to bother us with RTFM-type questions.
You'll have to adjust to how this forum works, which means not posting this type of questions in rapid succession while showing unwillingness to invest some effort yourself.
Henk wrote:It doesn't make sense to reinvent the wheel.
And that's why we have Google and the forum search function.
If you are far behind you want quick answers to common questions. Of course there is always the lack of time and energy. Chess programming is not always the most important thing to do.
No reasons to bother us with RTFM-type questions.
You'll have to adjust to how this forum works, which means not posting this type of questions in rapid succession while showing unwillingness to invest some effort yourself.
Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
I don't want to search for days getting answers to my questions.
Searching is exhausting. And at the end you may find that no good answer was present.
Come off it!!!
I don't want to spend years learning to write a chess program. Take stockfish, add your ancestors name Henry Von The Belt, Son of Von Von, former king of Austria in 1000 BC!!!!