After touring the lab, I choose to work on an interactive simulation platform for cognitive networks. I decided to use Java Gui to create the interface. After I learned the basics of GUI, I downloaded and learned about Netbeans IDE and JFreeCharts. From there, I created a calculator with simple functions. I also created interactive Gaussian Distribution and uniform Distribution charts.

Week 2 : 5/27 - 6/3

I read and analyzed these articles in order to understand Software and Cognitive Radio better:

I created a GUI with a graph for primary users, secondary users, and restricted users. Each channel can only be occupied by a single user. The Primary Users have priority over the Secondary and Restricted Users. The Secondary Users only have priority over the Restricted Users. Clicking on the "random" button will generate new values for all users, while entering text will change the amount of users in the given graph.

Week 3 : 6/3 - 6/10

I added a scatter plot to the GUI to display the simulation results of the percent of channels occupied vs the time for a secondary user to find a channel. The secondary user finds a channel by randomly selecting a channel and determining if the channel is occupied. I needed to record how much time units the secondary user would take to find an open channel. Time was recorded by iterating a value each time the secondary user tested to see if a channel was occupied. For each point, this process was run thirty times to find the average amount of time the secondary user would take.

I predicted that the amount of time would be less than 10 around the middle portion of the graph because if half the channels are full, then we should have a 50% chance that on the first try, the secondary user will find the channel. However, my simulation results were way off because the middle percentages were around 18 time units.

Week 4 : 6/10 - 6/17

In my code, I accidently assigned the
number of secondary users to a random number generator after my method
completed, so the results were very different than expected. I fixed the error
and focused on making the secondary users independent from the primary users.
Previously, secondary users could choose their locations only from slots that weren’t
occupied by primary users. Now, secondary users had to determine if the channel
had a primary user using it. I researched the Slotted Aloha Protocol. It processes a single
time slot per iteration. The algorithm allows for multiple transmitters to send
data in the same time slot. Once done with the initial time slot, the algorithm
will iterate until all transmitters have sent their data.

Week 5 : 6/17 - 6/24

My goal of this week was to make a clearer layout for the
GUI, implement the aloha protocol algorithm, and create graphs from simulation
results of the algorithm. I organized the components of my GUI by placing the 3
bar graphs that represented primary, secondary, and restricted components into a
column on the left of the window. I placed text boxes in the center and created
room for simulation plots in the right of the window. I completed the aloha
protocol algorithm and successfully graphed the results.

Week 6 : 6/24 - 7/1

My goal of this week was to figure out how to condense the 3
channels into a single channel and to create a graph that showed throughput and
average time for a user to find a channel in response to the number of primary
users using channels. I found that JFree chart has stacked bar graphs which
will let me control what colors will make up a certain fractions of the bar. I
also removed the restricted users because I am more concerned with the interactions
among the secondary and primary users.

Week 7 : 7/1 - 7/8

To make my code easier to debug, I had the same function run
3 times for each of three simulation graphs. For example if I wanted to run the
simulation 100 times, it would run 100 times for each graph with 300 times total. I combined my code to make
it simulate a cognitive radio network more accurately.

Week 8 : 7/8 - 7/15

I implemented the stacked bar graphs to place more
information into the channel graph. I decided it was only necessary to divide
each channel, represented by a bar, into three sections. If there was no
interference a solid color bar would be shown. However, if interference
happened, two of the bottom bars would identify the users that interfered: secondary
users can interfere with other secondary users, and secondary users can
interfere with primary users. The top third of the bar will be red to show that
interference took place.

Week 9 : 7/15 - 7/22

I wrote an outline of the report, commented the code, made
sure my most recent implementation ran smoothly.