Issues with lowest par contract from equally profitable in MiniMaxDOS
=====================================================================
*Note: all issues below concern the MiniMaxDOS component of BigDeal, which writes JFR-encoded double-dummy data to PBN files. BigDeal's par contract/score implementation used for printing/preview from within BigDeal is a separate subsystem, irrelevant to the following.*
MiniMaxDOS usually assumes that, from all equally profitable contracts, the lowest one is selected as par contract.
That is not the case, though, if the number of tricks to be taken from both hands of the same side for the determined par contract, differs. Below are some of the examples taken from a test set.
Example 1
---------
W/None |
♠ K7
♥ AK87
♦ A87
♣ AJ52
|
|
|
♠ 9843
♥ 53
♦ QT4
♣ Q983
|
|
♠ AJ5
♥ QT9
♦ 9532
♣ T76
|
|
|
♠ QT62
♥ J642
♦ KJ6
♣ K4
|
|
| NT | ♠ | ♥ | ♦ | ♣ |
N | 10 | 10 | 11 | 10 | 10 |
S | 11 | 10 | 11 | 10 | 10 |
W | 2 | 3 | 2 | 3 | 3 |
E | 2 | 3 | 2 | 3 | 3 |
|
North makes 4NT, South makes 5NT. Neither West nor East have a profitable sacrifice against 3NT from North/South.
`MiniMaxDOS` reports `4NT South, +460` as par contract, instead of `3NT North/South, +460`.
Example 2
---------
N/EW |
♠ Q52
♥ KQ974
♦ AQ
♣ AKT
|
|
|
♠ T73
♥ 32
♦ JT5
♣ Q8764
|
|
♠ AKJ94
♥ AT6
♦ K8642
♣ ==
|
|
|
♠ 86
♥ J85
♦ 973
♣ J9532
|
|
| NT | ♠ | ♥ | ♦ | ♣ |
N | 8 | 3 | 9 | 4 | 7 |
S | 3 | 3 | 8 | 3 | 7 |
W | 4 | 10 | 4 | 9 | 6 |
E | 4 | 10 | 4 | 9 | 6 |
|
East/West make 4 Spades. 4 NT and 5 Hearts are both two down from North, but not from South.
`MiniMaxDOS` reports `5Hx North, -300` as par contract, instead of `4NTx North, -300`.
Example 3
---------
W/EW |
♠ Q
♥ KT97
♦ J953
♣ 9754
|
|
|
♠ 94
♥ AQ642
♦ Q72
♣ T83
|
|
♠ AKJT3
♥ J3
♦ T64
♣ AQ2
|
|
|
♠ 87652
♥ 85
♦ AK8
♣ KJ6
|
|
| NT | ♠ | ♥ | ♦ | ♣ |
N | 4 | 4 | 5 | 6 | 7 |
S | 4 | 4 | 5 | 7 | 6 |
W | 8 | 8 | 7 | 5 | 6 |
E | 9 | 8 | 7 | 6 | 6 |
|
East makes 3NT. North can sacrifice in 4 Clubs (but not in 4 Diamonds) and South can sacrifice in 4 Diamonds (but not in 4 Clubs), both three down.
`MiniMaxDOS` reports `4Dx South, -500` as par contract, instead of `4Cx South, -500`.
Example 4
---------
W/None |
♠ J5
♥ T872
♦ KT76
♣ K32
|
|
|
♠ KT93
♥ K54
♦ A
♣ AT986
|
|
♠ Q87642
♥ 9
♦ 84
♣ Q754
|
|
|
♠ A
♥ AQJ63
♦ QJ9532
♣ J
|
|
| NT | ♠ | ♥ | ♦ | ♣ |
N | 6 | 3 | 10 | 9 | 3 |
S | 6 | 3 | 10 | 10 | 3 |
W | 6 | 10 | 3 | 3 | 10 |
E | 6 | 10 | 3 | 3 | 10 |
|
East/West make 4 Spades. Both North and South can sacrifice in 5 Hearts, down one, but South can sacrifice in 5 Diamonds, down one, too.
`MiniMaxDOS` reports `5Hx South, -100` as par contract, instead of `5Dx South, -100`.
Example 5
---------
E/EW |
♠ 9865
♥ Q98
♦ AJT4
♣ 84
|
|
|
♠ KQ732
♥ AJ2
♦ K53
♣ AK
|
|
♠ J4
♥ KT76
♦ Q98
♣ J762
|
|
|
♠ AT
♥ 543
♦ 762
♣ QT953
|
|
| NT | ♠ | ♥ | ♦ | ♣ |
N | 3 | 3 | 3 | 3 | 5 |
S | 3 | 3 | 3 | 3 | 5 |
W | 10 | 10 | 10 | 9 | 8 |
E | 9 | 9 | 10 | 8 | 8 |
|
West makes 4NT, East makes 3NT. North/South do not have a level 4 sacrifice.
`MiniMaxDOS` reports `4NT West, -630` as par contract, instead of `3NT West, -630`.
Summary
-------
Example 5 is explicable. Reporting 4NT as par contract may be useful to indicate the one trick difference between declaring from both hands.
Unfortunately, that does not explain Example 1, where par contract is reported a level lower than highest makeable contract and not two levels lower.
The behavior is inconsistent with Example 4, where the contract which differs for both hands is not indicated as par, and Examples 2-3 show that kind of indication to be problematic, when more than one different, in terms of level and denomination, contract differs in both hands.
This all leads to conclusion that rather than a handy feature, this behavior is just a minor deviation from accepted conventions.
Double Dummy Solver resolves Examples 1 and 5 correctly, and Examples 2-4 does not apply to it, because of preferring highest possible sacrifice from equally profitable.
Raw PBN example data
--------------------
```
[Board "Example 1"]
[Dealer "W"]
[Vulnerable "None"]
[Deal "N:K7.AK87.A87.AJ52 AJ5.QT9.9532.T76 QT62.J642.KJ6.K4 9843.53.QT4.Q983"]
[Board "Example 2"]
[Dealer "N"]
[Vulnerable "EW"]
[Deal "N:Q52.KQ974.AQ.AKT AKJ94.AT6.K8642. 86.J85.973.J9532 T73.32.JT5.Q8764"]
[Board "Example 3"]
[Dealer "W"]
[Vulnerable "EW"]
[Deal "N:Q.KT97.J953.9754 AKJT3.J3.T64.AQ2 87652.85.AK8.KJ6 94.AQ642.Q72.T83"]
[Board "Example 4"]
[Dealer "W"]
[Vulnerable "None"]
[Deal "N:J5.T872.KT76.K32 Q87642.9.84.Q754 A.AQJ63.QJ9532.J KT93.K54.A.AT986"]
[Board "Example 5"]
[Dealer "E"]
[Vulnerable "EW"]
[Deal "N:9865.Q98.AJT4.84 J4.KT76.Q98.J762 AT.543.762.QT953 KQ732.AJ2.K53.AK"]
```