Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename menu item NR Digits to Serial NR #269

Closed
w7sst opened this issue Feb 23, 2024 · 40 comments · Fixed by #273
Closed

Rename menu item NR Digits to Serial NR #269

w7sst opened this issue Feb 23, 2024 · 40 comments · Fixed by #273
Assignees
Labels
enhancement New feature or request

Comments

@w7sst
Copy link
Owner

w7sst commented Feb 23, 2024

Suggest consider use "random" instead of "normal." Also "Serial NR" instead of "NR Digits" to be a little more precise of what's being set.

Serial NR -- Random, 1 to 9999 (use the word "random" instead of "normal")
Serial NR -- 1 to 99
Serial NR -- 100 to 999
Serial NR -- 1000 to 9999

73 Jim K6OK

Originally posted by @K6OK in #174 (comment)

@w7sst w7sst self-assigned this Feb 23, 2024
@w7sst w7sst added the enhancement New feature or request label Feb 23, 2024
@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

I have moved this topic to a new Issue. We can continue this conversation here. Bob, I have not forgotten the Leading Zeros - I'm just limited on time availability right now. Let's do this step first and then come back to Leading Zeros.

@K6OK @f6fvy @WR7Q @scotthibbs

@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

How does this look?
image

@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

This variation will show the leading zero and express MRCE's intent to send the leading zeros for the first two choices...
image

@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

And for extra credit, I'll try to get Custom Range... implemented tonight using a MessageBox to query the user for a simple range (e.g. 247-963) and then store the string in the .ini file.

image

If you have any suggestions for text in the MessageBox, please let me know. I'll post late tonight what I come up with.

@WR7Q @f6fvy @scotthibbs @K6OK

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 23, 2024 via email

@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

I wanted to show you what I have running so far...

image

  1. I changed the first item to 001 to N (default) to show that the value N is growing and not static like the others. N increases as the simulation runs.
  2. The Custom Range menu item now includes the current min-max values. This lets the user see the current values.
  3. The min-max values are retained in the .INI file.

I have to admit, I am not very skilled at UI, so this next dialog can be improved in the future, but it does get the job done for now. Here is the Custom Range... dialog:
image

Now that the UI is done, I'll get the backend coded sometime tomorrow.

Let me know what you think. Tnx, Mike

@scotthibbs @WR7Q @K6OK @f6fvy @jr8ppg

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 23, 2024

That'll do for now. There's always room for improvement in the future, and refinement when the subject of leading zeros will come up. Tnx Mike.

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 23, 2024 via email

@w7sst
Copy link
Owner Author

w7sst commented Feb 23, 2024

My preference would be to have the 1-99 as the default with or without a leading zero.

Hi Bob, thank you for your feedback. We need to keep the default as the first menu item to keep backward compatibility of the features. We want the MRCE behavior to match the original as much as possible. We are recognizing areas of functionality where the behaviors have drifted apart and we will work to address these differences.

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 23, 2024 via email

@K6OK
Copy link
Collaborator

K6OK commented Feb 24, 2024

Mike -- Looks great! I vote for 001 to N as the default as you show. That closely matches 1.68.

Bob -- "I understand, but the original was 1 to 44."

If I read the 1.68 source code correctly (that's a big IF) the serial numbers were generated by this code

Result := 1 + Round(Random * Tst.Minute * Skills);

The default contest length is 60 minutes. Skills can range from 1 to 3. Random can range from 0 to 1. So in the 59th minute of contest the sent SN can range from 1 to 178. If the contest length is set to 15 minutes then the SN can range from 1 to 46.

73 Jim K6OK

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 24, 2024 via email

@w7sst
Copy link
Owner Author

w7sst commented Feb 24, 2024

Jim, you beat me to it. Thank you for looking this up.

I'm thinking through the idea of increasing these numbers to allow higher serial numbers during a typical simulation. Something greater than 178 max serial number. It would be nice if the serial numbers peaked out in the thousands somewhere.

@w7sst
Copy link
Owner Author

w7sst commented Feb 24, 2024

We would also want to relabel the first menu pick to something like: 1 to 3*ElapsedTime

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 24, 2024

Even if it's mathematically correct, it's rather confusing. Why not use "Default", without specifying anything as it was previously the case, knowing that the other choices allow a more precise range?

@K6OK
Copy link
Collaborator

K6OK commented Feb 24, 2024

Jim, you beat me to it. Thank you for looking this up.

I'm thinking through the idea of increasing these numbers to allow higher serial numbers during a typical simulation. Something greater than 178 max serial number. It would be nice if the serial numbers peaked out in the thousands somewhere.

Mike -- That original 178 was a very good choice to simulate the first hour of WPX. Maybe a few speed demons might hit 250 with 2BSIQ. You don't hear 4 digit SN's until the 2nd day. Laurent has a good point about keeping the language simple. How about

Serial NR > Start of Contest (Default) <-- use the original 1.68 formula
Mid-Contest (100-999)
End of Contest (1000 to 9999)
Custom Range

73 Jim K6OK

p.s. -- Did a quick check for fun, I believe the highest serial no. sent by a Single Op was 4,871 by CR3DX (OM3GI, op.) in 2021. He averaged a rate of 135 Q's per hour for 36 hours.

@w7sst
Copy link
Owner Author

w7sst commented Feb 24, 2024

Serial NR > Start of Contest (Default) <-- use the original 1.68 formula
Mid-Contest (100-999)
End of Contest (1000 to 9999)
Custom Range

I like this idea as it better shows the intent from the user-perspective, not the coder/developer.

So you are suggesting we drop the 01-99 range? This range was important to Bob's training application. Perhaps call this Training (01-99)? Or, I guess that can use a Custom Range for this.

I'm also wondering if the 1000-9999 range should be 1000-4999? Given that 4,871 is the highest serial no. sent by a single op, perhaps lowering this upper limit would make sense?

@w7sst
Copy link
Owner Author

w7sst commented Feb 24, 2024

On second thought, perhaps Bob can recommend the Custom Range item for his training courses/applications. We can even set the default value for the custom range as Custom Range (01-99).... I would add code to honor the leading zero in 01 to generate leading zero cut-numbers with a leading 'T'. If there is no leading zero, then leading zero cut-number would not be used.

73, Mike W7SST

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 24, 2024 via email

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 24, 2024

Regarding the serial numbers, I think we need to distinguish between two types of use: simulation (or competition) and training.

In the case of simulation, we need to stick as closely as possible to reality, and reality is (for WPX) numbers from 0 to 4999 (let's assume), with IMHO more numbers < 1000 than the rest. As the logs are available, it would be interesting to see the distribution of the last number sent for single-ops. Assuming that numbers between 1000 and 4999 only are sent at the end of the contest is IMHO not realistic.

In the other hand, for training, the operator should be able to indicate which range he wants to train with, with leading zeros or not, with cut numbers or not.

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 24, 2024

Last number sent by single-ops according the available CQWPX logs 2023 CW:

Range Ops

0-99 : 1492
100-199 : 957
200-299 : 628
300-399 : 368
400-499 : 257
500-599 : 239
600-699 : 150
700-799 : 129
800-899 : 100
900-999 : 65
1000-1099 : 79
1100-1199 : 59
1200-1299 : 47
1300-1399 : 44
1400-1499 : 26
1500-1599 : 28
1600-1699 : 36
1700-1799 : 23
1800-1899 : 25
1900-1999 : 23
2000-2099 : 17
2100-2199 : 24
2200-2299 : 16
2300-2399 : 15
2400-2499 : 7
2500-2599 : 11
2600-2699 : 6
2700-2799 : 11
2800-2899 : 4
2900-2999 : 5
3000-3099 : 6
3100-3199 : 1
3200-3299 : 4
3300-3399 : 6
3400-3499 : 3
3500-3599 : 1
3600-3699 : 2
3700-3799 : 3
3800-3899 :
3900-3999 : 1
4000-4099 : 2
4100-4199 :
4200-4299 :
4300-4399 :
4400-4499 :
4500-4599 :
4600-4699 : 1 <- CR6K
4700-4799 :
4800-4899 :
4900-4999 :

@w7sst
Copy link
Owner Author

w7sst commented Feb 25, 2024

This is what it looks like in the menu. I will work to get this running and perhaps support the leading '0' in the Custom Range (01-99) ... menu item.

image

@w7sst
Copy link
Owner Author

w7sst commented Feb 25, 2024

So I thought it would be fun to plot the largest serial numbers sent using Larry's data above...
image

Then I turned on a log scale for the Y-axis and got the following...
image

Very interesting.

@w7sst
Copy link
Owner Author

w7sst commented Feb 25, 2024

In Issue #146, it proposes adding a call history file for CQ WPX. With this information above for largest serial numbers, this largest serial number data could be added to the call history file for each callsign from published logs. This would then give a good distribution of real serial numbers encountered during a contest.

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 25, 2024

Why not. It could be applied OPTIONALLY to any contest (current and future) with serial numbers with a special notation like "<nnn" as

...
CR6K,<4625
...

So the serial sent with CR6K will be randomly set between 1 and 4625.

A special notation must be used to distinguish them from other numbers (zone or other) if the contest uses both types of exchange.

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 25, 2024 via email

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 25, 2024 via email

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 25, 2024 via email

@K6OK
Copy link
Collaborator

K6OK commented Feb 25, 2024

Mike W7SST >> this largest serial number data could be added to the call history file for each callsign from published logs. This would then give a good distribution of real serial numbers encountered during a contest.<<

For the late contest perioed this will skew the SN's too low as it assumes all stations can work all other stations. It doesn't model what (most) stations hear on Sunday. The superstations with big amps and stacks are heard by nearly everyone, are on for the full event, that's how they rack up big numbers. The little pistol with 50 watts and a wire in the attic can't be heard very well, that's why they are handing out small SN's. Last year on WPX on Sunday 85% of the stations I worked had either 3- or 4-digit SN's.

Maybe we've lost sight of why adjustable SN's are desirable? If we go back to 1.68, when you start WPX mode it always begins with a parade of slow stations calling with TT1, TT2, TT1, etc., and it's kinda boring. It doesn't prepare you for the superstation who calls at 35 wpm with a 4-digit SN.

And so while I'm a proponent of contest simulation I also believe there needs to be a training component to it. Unlike training new students, the contester who uses Runner is looking to sharpen his skills in the one or two week period pre-contest. And so I think having a pure 3-digit plus SN option is useful even if it strays from pure simulation to some degree. So I'd suggest

Serial NR > Start of Contest (Default)
End of Contest (100 to 5000)
Custom Range ( with 0 to __99 as default, adjustable to whatever the user wants)

Seems to me if serial numbers are added to the history file it will interfere with the chosen ranges?

73 Jim K6OK

@w7sst @f6fvy @WR7Q

@WR7Q
Copy link
Collaborator

WR7Q commented Feb 25, 2024 via email

@w7sst
Copy link
Owner Author

w7sst commented Feb 26, 2024

Hi everyone,
I first want to thank everyone for this excellent dialog we are having. I think each day we keep coming up with new and innovative ideas to benefit both the new user and the experienced contester who is trying to sharpen their skills prior to a contest.

After studying the numbers from Laurent and thinking about what everyone has been saying, I have a new proposal that I think has something to offer everyone and also strike a balance between simulation realism and the needs to practice, both learning and sharpening one's skills.

image

By using cut numbers of 50/500 instead of 100/1000, we gain to things.

  1. We can keep the notions of both Mid-Contest and End of Contest. We have classes of users that can benefit from both groupings.
  2. Each group has a mix of digits. The first has 2-3 digits and the second group 3-4 digits. This is good practice for both groups.

To address the realism of the simulation, when we study the numbers from Laurent, we see there is not a flat distribution across these ranges. I propose we control the distribution of mixed digits and then use a flat distribution within each digit grouping.

Serial NR Range Serial NR Distribution
Start of Contest (Default, HST) Simulation of contest start (1 to N)
Mid-Contest (50-500) 25% 2-digit (50-99), 75% 3-digit (100-500); NR equally distributed within each digit group.
End of Contest (500-5000) 56% 3-digit (500-999), 44% 4-digit (1000-5000); NR equally distributed within each digit group.
Custom Range (01-99) equal distribution across user-specified range

By cutting the distribution between digit groupings, we can flatten the distribution with each digit group. I think this will work for now. Long term, I'd like to use a call history file containing the actual ending serial number for each call and pull the distribution from the log file. This later choice would provide the highest possible realism.

Note - I also added "HST" to the first item to remind the user of the mode used during an HST simulation.

@K6OK @WR7Q @f6fvy @scotthibbs @jr8ppg @ct7aup

@K6OK
Copy link
Collaborator

K6OK commented Feb 26, 2024

Good work on the percentage splits for mid- and late-contest! I vote yes on this proposal. -- 73 Jim K6OK

@w7sst
Copy link
Owner Author

w7sst commented Feb 28, 2024

@f6fvy Hi Laurent,
Do you have access to the CW WPX log information for the number of logs with largest serial numbers for the two ranges [0,49] and [50,99]? I'd like to break down the (0-100) range into these two subgroups.

Thank you, Mike

@f6fvy
Copy link
Collaborator

f6fvy commented Feb 28, 2024

Here it is by bins of 10 Q, for the last 3 years

2023

0-9 : 344
10-19 : 188
20-29 : 178
30-39 : 164
40-49 : 156
50-59 : 179
60-69 : 149
70-79 : 126
80-89 : 118
90-100 : 124

2022

0-9 : 311
10-19 : 167
20-29 : 150
30-39 : 140
40-49 : 112
50-59 : 162
60-69 : 110
70-79 : 106
80-89 : 75
90-100 : 95

2021

0-9 : 344
10-19 : 149
20-29 : 158
30-39 : 187
40-49 : 137
50-59 : 180
60-69 : 142
70-79 : 119
80-89 : 87
90-100 : 122

Notice how the number of logs is decreasing, except for the 50-59 bin and the last bin, because many participants make a point of completing 50 or 100 QSOs on the dot ;-)

@w7sst
Copy link
Owner Author

w7sst commented Mar 2, 2024

Here is the final version...

image

The Custom Range (01-99)... option brings up a simple dialog:

image

Here is the corresponding Readme.txt entry for this enhancement...

    Serial NR
      Serial numbers sent by the responding station can be adjusted with the
      following settings:
        - Start of Contest (Default)
            Generates random serial numbers starting near 1 and increasing as
            the contest runs. Matches default behavior found in version 1.68.
            Used during HST Simulation.
        - Mid-Contest (50-500)
            Sends 2 and 3-digit numbers, randomly generated between 50 and 500.
            Numbers will generated using a similar distribution as CQ WPX 2023.
        - End of Contest (500-5000)
            Sends 3 and 4-digit numbers, randomly generated between 500 and 5000.
            Numbers will generated using a similar distribution as CQ WPX 2023.
        - Custom Range (01-99)...
            This option allows a user-entered range string of the form "<min>-<max>".
            An optional leading zero can be specified for generating serial numbers
            with leading zeros (e.g. 001-200).

@w7sst w7sst linked a pull request Mar 2, 2024 that will close this issue
@w7sst
Copy link
Owner Author

w7sst commented Mar 2, 2024

Here is v1.84-rc2. It contains the above change. Please give the Serial NR change a spin using the CQ WPX contest.

Thanks, Mike

@f6fvy
Copy link
Collaborator

f6fvy commented Mar 2, 2024

For the "mid-contest" and "end of contest" settings, it would be nice if the numbers sent by the operator also started by a random number in the same range for greater realism.

@K6OK
Copy link
Collaborator

K6OK commented Mar 3, 2024

Tested v1.84-rc2. Mid- and End of Contest work very well. Detected no issues.

I tested "weird inputs" on Custom Range:

  • Entering 50-20 gives a popup error message, the first number must be smaller. Good.
  • Entering -4 to 10 gives no error message. Program runs but the actual range is 1 to 10. Need error msg "nr must >0" ?
  • Entering 20000-30000 gives no error message. Program runs, but exchange entry box is limited to 4 chars, so every QSO is a bust. Need error msg "nr must be <9999"?

Program works very well. I'm looking forward to using MRCE to train for the actual WPX contest in May.

73 Jim K6OK

@w7sst
Copy link
Owner Author

w7sst commented Mar 6, 2024

  • Entering -4 to 10 gives no error message. Program runs but the actual range is 1 to 10. Need error msg "nr must >0" ?
  • Entering 20000-30000 gives no error message. Program runs, but exchange entry box is limited to 4 chars, so every QSO is a bust. Need error msg "nr must be <9999"?

Additional error checks have been added here as part of this existing pull request.

@w7sst
Copy link
Owner Author

w7sst commented Mar 7, 2024

Here is the final (and summary) checkin notes for this branch. I think I'm finished with my work on this issue.

CQ WPX - Improved Serial Number generation (Coded by W7SST)

- Renamed Settings > NR Digits menu item to Serial NR
- F6FVY provided highest serial number sent by single-ops in CQ WPX 2023
- Added ability to generate serial numbers using actual distribution
- Added new menu picks: Start of Contest, Mid-Contest and End of Contest
- Add new Serial NR > Custom Range... menu pick for user-defined range
- Custom Range... specification can include leading zero (e.g. 001-250)
- Operator's sent Serial NR starts using a random number in the selected
  Mid-Contest or End of Contest modes for greater realism.
- Allow selection changes to Serial NR mode during runtime.

@w7sst w7sst closed this as completed in #273 Mar 7, 2024
w7sst added a commit that referenced this issue Mar 7, 2024
CQ WPX - Improved Serial Number generation (Coded by W7SST)
    
- Renamed Settings > NR Digits menu item to Serial NR
- F6FVY provided highest serial number sent by single-ops in CQ WPX 2023
- Added ability to generate serial numbers using actual distribution
- Added new menu picks: Start of Contest, Mid-Contest and End of Contest
- Add new `Serial NR > Custom Range...` menu pick for user-defined range
- Custom Range... specification can include leading zero (e.g. 001-250)
- Set operator's exchange starting NR using random value from selected Mid-Contest or End-of-Contest mode.
- Allow selection changes to Serial NR mode during runtime.
- Fixes #269
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants