CS 310 Programming Assignment 4 Due April 27, 2014 5:00 P.M. About 15 years in the future... The Martian Adventure Recreational Society, or MARS (no affiliation to M&M Mars Candy company) has a problem. Ever since it opened up Mars for space tourism, the number of visitors to Mars has been overwhelming and has been the company's biggest moneymaker. However, a small percentage of tourists have died after returning to Earth, and this has threatened to cut into MARS' profits. It seems that while visiting the red planet, approx. 5% of visitors encounter a microbe which attaches to their systems immediately upon contact. Although it appears to remain dormant so long as the contractants remain on Mars, upon contact with Earth's polluted atmosphere, this microbe reacts violently, causing death within 10 to 15 minutes of penetrating the atmosphere. Fortunately, the crack biochemists at MARS have developed a cure which will render the microbe harmless. The cure is 100% effective if administered in time to take full effect. However, the cure requires two separate doses: the first dose is standard, but the second dose varies depending upon the individual's reaction to the first dose. Therefore, in order for the cure to be effective, each individual must be monitored carefully for the two minutes following the first dose, in order for the administering physician to determine the correct amount of the second dose. Once the correct second dose is received, it takes approximately one minute to circulate completely through the bloodstream to disable the microbe. The result of these requirements is that although the cure can be 100% effective, an infected individual must receive the first dose at least 3 minutes prior to his/her pending death (time to wait two minutes after receiving the first dose, plus one minute after receiving the second dose) in order for the treatment to cure the microbe. The current procedure for attending to the tourists who return from Mars is to place each returning tourist in a standard queue to receive the cure as s/he arrives back on Earth. All tourists receive the cure as a precaution, since it has been shown by the MARS scientists that receiving the treatment causes no ill effects, even when the microbe is not present. However, there is only one doctor available at any given time to administer and observe the person receiving the cure. Also, the doctor observes the person for both phases of the cure. Thus the doctor is unable to administer the cure to the next person in line until this time period for the current person's second dose has passed. Unfortunately, some tourists have died from microbe exposure while waiting in line to receive the cure. In order to avoid this problem, the MARS scientists have developed a test that can harmlessly detect the presence of the microbe. However the test, which takes 2 minutes to administer and provide results, does not detect the presence of the microbe with 100% accuracy. Instead, it gives the result as a percentage (from 0% to 100%) that an individual has the microbe. The MARS scientists have determined that if a person has the microbe present, the test result is in the range of 40%-100%. Also, if a person does not have the microbe present, the test result is in the range of 0%-80%. (In other words, any result less than 40% means that the individual is not infected, and any result greater than 80% means that the individual is definitely infected, although this result is unrelated with how many minutes the individual will survive without the cure.) MARS wishes to see how well the test for the microbe can avoid tourist fatalities and has come up with the following alternative to handle tourist arrivals which uses two queues: 1) a standard "Testing" queue, and 2) a priority "Treatment" queue. When a tourist arrives, MARS employees check to see whether the doctor administering the cure is available, and whether both queues are empty, in which case the tourist immediately is given the first treatment dose. Otherwise, the tourist enters the Testing queue (thereby delaying his/her entrance to the Treatment queue for at least two minutes). Once the test result is obtained, unless the tourist tests negative for the microbe (a result of less than 40%), s/he enters the Treatment queue in a position that is determined by the result of the test: the higher the percentage obtained on the test, the closer s/he is placed towards the head of the queue. (In case of ties, tourists should be placed in the queue in order of their arrival.) Having concluded all testing of both the test and cure and having received FDA approval to administer them to any potentially infected individuals, MARS now wishes to determine which scenario will best minimize the number of tourist fatalities. They are thus approaching your company (since we are all hopeful that 15 years from now you will have graduated from GMU and have a job) to implement both scenarios and help MARS decide which one will be the most effective. Trips to Mars The method that MARS uses to transport passengers to and from the red planet is a closely held secret. However, MARS has given you the following specifications to model how tourists return: Tourists return one at a time. The probability that a tourist returns in any time step is 20%. Once a tourist returns, the "microbe clock" starts ticking. If a tourist has encountered the microbe, s/he will die within 10-15 minutes of his/her arrival time if the cure has not been administered and completed before that time. (Your model should randomly compute the precise amount of time remaining for each returning tourist.) Once a tourist arrives on Earth, s/he enters queues in accordance to the scenario that is being tested (Scenario 1 contains only one queue - Treatment, while Scenario 2 contains two queues – Testing and Treatment). Each tourist in line is dequeued according to the appropriate scenario. If a tourist is found to be DOA when s/he arrives at the head of either queue, the death is recorded and the individual is removed from the queue. You may assume this requires no additional time (since in real life, this presumably would have been noticed prior to arrival at the front of the line). If a person occupying either the Testing or Treatment queue dies, the death is recorded and the individual is removed. Because this occurs while being attended to, you may assume that no additional time is necessary for removing the deceased individual. Scenario 1 In this scenario, each tourist enters one queue to receive treatment. The Treatment queue is a standard (non-prioritized) queue. The next person in line exits the queue as soon as the doctor administering the treatment becomes available, but must wait with the doctor until the treatment is complete (or until s/he runs out of time and dies). Thus, the cure is not administered while the tourist is in the queue, and the tourist cannot leave until the procedure for the cure is complete. Scenario 2 In this scenario, each tourist that returns checks to see if the doctor administering the cure is available. If the doctor is idle, AND there are no other tourists around (either at the testing station, or in either queue) the tourist immediately goes to the doctor for treatment. Otherwise, the tourist enters the Testing queue to be tested for the microbe. The Testing queue is a standard queue. As soon as the tester is available, the tourist at the head of the queue exits the queue and receives the test. S/he then waits in the testing station to receive his/her test results. As soon as the test results are obtained, the tourist enters the Treatment queue in the appropriate position, based upon the results received from the test. The Treatment queue is a Priority queue. All tourists then wait in the Treatment queue until they receive treatment or are removed. Note that tourists whose test results are below the threshold are free to leave and do not enter the Treatment queue. Implementation In order to implement this project, you will need to create several classes. The first class is a generic Queue class. You must implement this class using a linked list. The Queue class must contain the following member functions: Constructor Enqueue Dequeue Insert into queue by priority Is_Empty The second class is the Tourist class. This class contains information about the tourist such as time of arrival, whether s/he is infected with the microbe, time remaining before death (assuming s/he is infected and receives no treatment), the result of the test if/when administered, etc. Use appropriate member functions and member variables to represent this information. The third class is the Scenario_1 class. This class contains a member variable of type Queue to hold the arriving tourists, as well as member variables to keep track of the current simulation time, the number of tourists that have arrived, the number of tourists that have encountered the microbe, the number of tourists that have died, occupancy of the cure station, etc. It also contains member functions to handle the tourists that arrive, such as putting them into the queue or sending them to the doctor for treatment, etc. The fourth class is the Scenario_2 class. This class is similar to the Scenario_1 class, except that it contains two queues (the standard queue used for the line to receive the test, and the priority queue used for the line to receive treatment). This class also contains information about the testing station. You may wish to add additional classes depending upon the overall design of your program. Running the simulation Tourists are only able to arrive from Mars within a time span of 12 hours per day (when there is a direct line of sight from the MARS facility to the planet Mars). Therefore, you will run the simulation for 12 hours, using 30 second time increments (for a total of 1440 time steps). At the end of the simulation, you will need to empty all the queues before ending the program. (In other words, treat the poor tourists who are still in line. :-) Your program should allow the user to choose which scenario to run, prompt the user for specific information as necessary (see below), then run the simulation and print the results. User Input Because MARS intends to expand its choice of destinations to other celestial bodies, it wishes to be prepared in case its customers should become infected by different microbes at these other locations. Therefore, MARS has requested that you make your program reusable for these other potential scenarios by allowing the user to input data that may change given other situations. Accordingly, you must prompt the user for the following information for use in running your simulation: A random number seed (integer) Which scenario to run (integer – 0 or 1) Verbose or Normal output (see below for output) (integer – 0 for Normal, 1 for Verbose) Number of time steps in simulation (integer) Probability that a tourist arrives in any given time step (0.0 < floating point < 1.0) Percentage of tourists infected by the microbe (0.0 < floating point < 1.0) Minimum survival time of an infected tourist in time steps (integer) Maximum survival time of an infected tourist (integer) Time for first stage of cure, once administered (integer) Time for second stage of cure, once administered (integer) Additional input needed for Scenario 2: Time needed to test for the microbe (integer) Lower bound result for possibly infected individuals (Below this value, the tourist does not have the microbe) (0.0 < floating point < 1.0) Upper bound result for those not infected (Above this value, the tourist definitely has the microbe) (0.0 < floating point < 1.0) So, for the Mars tourists, pertinent inputs would be: Random number seed: make one up Scenario Choice: (1 or 2) Normal or Verbose output: (0 or 1) Number of time steps in simulation:1440 (12 hours at 30 second time steps) Probability that a tourist arrives in any given time step: 0.2 Percentage of tourists infected by the microbe: 0.05 Minimum survival time of an infected tourist: 20 (10 minutes for 30 second time steps) Maximum survival time of an infected tourist: 30 (15 minutes for 30 second time steps) Time steps for first stage of cure: 4 Time steps for second stage of cure: 2 When running simulation 2, the following inputs are also needed: Time steps to test for microbe: 4 Lower Bound of test accuracy: 0.4 Upper Bound of test accuracy: 0.8 Additional Requirements: Since it may be tedious to enter all of these values during the debugging stage of the development, you should allow for a filename to be entered as a command line argument. If a filename is contained on the command line, that file will be used as input instead of prompting the user for input. The format and order of input for this file must follow the above input specification. In order to use the same information regarding tourist arrivals between the two simulations, before starting the clock for the simulation, you should generate all tourist arrivals (including time of arrival, whether they have the microbe, the result of the test and the time of death if they do have the microbe) and put them in a separate “arrival” queue. Then for each time step, check to see if the next tourist arrives during that time step, and if so, dequeue them and place them in the testing or treatment queue as appropriate. If tourists are generated in this manner, the same seed value for the random number generator should result in the same tourist data between the two simulations. Output Allow for your simulation to be run in either verbose mode (which is useful for debugging) or normal mode. Verbose mode will print information at each time step, such as whether a tourist has just arrived, the number of tourists in the queue(s), the current state of the test/treatment stations, the number of infected tourists saved, the number of infected tourists that have died, and any other information you deem appropriate. At the end of the simulation, your program will print out the following simulation results: For both Scenarios: Total number of time steps for the simulation Total number of tourists returning from Mars Total number of returning tourists who were infected Total number of cures administered Total number of infected tourists saved Total number of infected tourists who died before receiving treatment Total number of infected tourists who died after beginning treatment Additional output for Scenario 2: The average of the test results returned for the tourists If you find that any other information or statistics seem appropriate or necessary for a proper evaluation and comparison of the two scenarios, you should print those out as well. An Implementation Suggestion Since Scenario_2 class will be similar to the Scenario_1 class, you may wish to have it inherit from Scenario_1. Or you might decide to create a Scenario class from which both Scenario_1 and Scenario_2 inherit. Project Report Information & Discussion Run both scenarios many times using different random seeds (at least 10) and plot the results on a graph (plot Deaths per Number of Returning Tourists and/or some other metrics). Based upon the results, draw a conclusion on which scenario is better (assuming one is) and explain why it is likely the case. Also, exercise the scenarios using different input values and show how the data supports your answers the following questions: How significantly does the percentage of tourists infected affect the results (assuming no other input values are changed)? How does an increase in the probability of tourist arrival affect each scenario? How does adjusting the lower and upper bounds of the test affect the results? What if MARS develops a cheaper test, but it takes several time steps longer to get the result? At what point does the death rate for the tourists rise significantly? (You may want to graph the results using several random seed values) If the MARS scientists can create a cure that works just a bit faster (one or two time steps, for example) will it make the test portion of Scenario 2 unnecessary? Finally, discuss at least one other method to handling returning tourists that you believe may be useful for MARS to investigate based upon your findings and why this method may be worth coding (This is called “Trying to get additional money from the customer”). Submitting your assignment Submit in Blackboard: Source code for all classes Output generated by executing the main() methods of classes The project report discussed above A page stating which parts of the assignment (if any) are incomplete or known to be incorrect. Create a zip file of your files and submit it to the course Blackboard page. On Blackboard: Click on the Assignments section Click on the Programming Assignment 4link Scroll down to "Attach a File" Click "Browse My Computer" Select your Zip file You can resubmit to Blackboard as many times as you like up to the deadline
- 浏览: 1010246 次
最新评论
-
18335864773:
很多公司项目 都在使用pageoffice 来操作word,e ...
用java生成word文档 -
Gozs_cs_dn:
请问下博主, 怎样将sitemesh3.xsd绑定 sitem ...
SiteMesh3配置 -
Rose_06:
springside4.0quick-start.bat报错原因 -
ilemma:
我也是刚参见工作啊,经理让自学这个,有些东西不太懂,能不能发个 ...
Apache Shiro在Web中的应用 -
shanbangyou:
你废了
程序员上班打酱油的方法
相关推荐
代做各类CS相关课程和程序语言 QQ: 1823890830 微信: qiushiwenmeng 专业过硬, 英语精通。代写5年来, 累计完成近万份大小project assignment, 客户来自美国, 加拿大, 英国, 澳洲, 新西兰等近百所大学, 得到广大留学...
代做各类CS相关课程和程序语言 QQ: 1823890830 微信: qiushiwenmeng 专业过硬, 英语精通。代写5年来, 累计完成近万份大小project assignment, 客户来自美国, 加拿大, 英国, 澳洲, 新西兰等近百所大学, 得到广大留学...
测试程序免费使用,使用正式版程序100元,要求提供源码150元,代写采集代码250元 正式版程序只能在一台电脑使用,换电脑或者电脑坏了需要重新买序列号25元 //-----------------------------------------------------...
秀视频--小程序社交软件线上版简介:简介随着微信的普及,小视频的流行,我们设计一款基于微信小程序端的视频社交软件 + 后台管理系统作为自己专科毕业设计----秀视频-微信小程序端(短视频社交小程序,用户可以在小...
建站之星网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的功能模块,即可...
承接毕业设计,电子产品设计,单片机(51/32)程序代写,Proteus电路仿真,支持实物电路板手工制作,C#上位机软件开发有意留言私聊,制作速度快!价格便宜!! 更多学习交流,加入群【Ner_电子技术交流qq群-595125493...
常用PCB封装库第二波,之前发布过一个封装库,看大家反映...承接毕业设计,电子产品设计,单片机(51/32)程序代写,Proteus电路仿真,支持实物电路板手工制作,C#上位机软件开发有意留言私聊,制作速度快!价格便宜!!
建站之星网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的功能模块,...
建站帮手网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的功能模块,...
建站帮手网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的功能模块,...
建站之星(SiteStar)网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的...
建站之星(SiteStar)网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的...
在这里,我作为律师助理,承担了收发文件、管理档案、解答简单法律咨询、代写法律文书以及协助调查取证等多项工作。每一项任务都让我更深入地了解法律实务的具体运作,并在实际操作中逐步提升了解决问题的能力。 ...