Вы находитесь на странице: 1из 4

SIM & EOS Topics for individual projects

The projects at the end can be completed either individually or in 2-person teams. A team should produce a more extensive solution than a single person. Choose one of the topics for each course you want to complete and email your choice to risto.lahdelma@cs.utu.fi. I will allow the same topic only for a few people or teams and mark topics as taken. You can also suggest by email your own topic. In all projects, if some distributions, parameters or other information is missing, you should try to make realistic assumptions and choose parameter values yourself. You should return your projects either on paper or by email to risto.lahdelma@cs.utu.fi. Please include all source code, sample run and brief documentation. You should have a short description of your overall solution, any specific details of your implementation, list all the parameter values that you have used and corresponding results, in tabular and/or chart output, when appropriate. Also provide verbal interpretation of the results of the tests. SIM PROJECTS SIM1 TOPIC TAKEN Simulation of mobile telecommunications. Cars are driving along a 50 km segment of highway with speed 80 5 km/h (uniform distribution). New cars appear with negative exponential inter-arrival from both ends of the highway. The driver or passengers make at random intervals phone calls of random length. Five evenly spaced ground stations serve the phone calls along the highway. Phone calls are served at every time by the closest ground station. Using different traffic intensities, determine how great the load (number of calls) is at each ground station as a function of time. Compute also statistics about the load distribution. You can assume that faster cars can freely take over slower ones. To make the problem more challenging (e.g. suitable as a 2-person project) you can also assume that cars cannot take over each other, i.e. queues are formed behind slower cars. SIM2 TOPIC TAKEN Elevator simulation. Consider a 6-store office building, where only two kinds of traffic exist: INCOMING traffic consist of passengers entering the building at negative exponential intervals at the bottom floor and take the elevator to upper floors. OUTGOING traffic consists of passengers from upper floors taking the elevator down to the bottom floor to exit the building. A new passenger presses the call button and joins a queue to wait for the elevator. When the elevator arrives, it first allows people to exit and then allows waiting passengers to enter (up to the capacity limit). Entering passengers press a button for their target floor.

A single elevator serves the customers. The elevator is IDLE when it is empty and no passengers are waiting at any floor. Otherwise the elevator can be in UP or DOWN mode. In UP mode the elevator is transporting people from the bottom floor up until it becomes empty. In DOWN mode it is transporting people from the upper floor down to the bottom floor. Simulate the system with different traffic intensities and collect statistics about the passengers waiting time, travel time and system time (sum of waiting and travel time). Try to estimate the maximum traffic intensity that the elevator can handle. SIM3 A room has 10 cotton spinning looms. Once the looms are set up, they run automatically. The setup time is negative exponentially distributed with a mean of 10 minutes. The machines run for an average of 40 minutes, also negative exponentially distributed. Loom operators are paid $10 an hour and looms not running incur a cost of $40 an hour. How many loom operators should be employed to minimize the total cost of the loom room? If the objective becomes on the average, no loom should wait more than 1 minute for an operator, how many persons should be employed? How many operators should be employed to ensure that an average of at least 7.5 looms are running at all times. SIM4 Cars arrive to a street crossing from 4 directions with negative exponential interarrival times. The cars will by random choose if they want to drive straight ahead, or make a left of right turn. Traffic lights control the crossing. The cars stop for red light, and proceed when the light is green. Using simulation, measure the queuing time for cars. Try to find out good parameter values for the traffic lights and analyze how heavy traffic the crossing can serve. You can also try out different schemes for the traffic lights, and have a separate lane for cars waiting for a left-turn. SIM5 Generalize the sserver.cpp example so that it reads the number of sequential service queues and for each queue the number of servers and their speed from a text file. Analyze the performance of the system when the number of service steps N increases but also the speed of the servers increases by N. Plot the different performance measures as a function of N. What is the average maximum throughput (served customers per time unit) of the system as a function of N? SIM6 Classic Car Care has one worker who washes cars in a four-step method soap, rinse, dry, vacuum. The time to complete each step is exponentially distributed with a mean of 9 minutes. Every car goes through every step before another car begins the process. On the average one car every 45 minutes arrives for a wash job, according to Poisson process. What is the average time a car waits to begin the wash job? What is the average number of cars in the car wash system? What is the average time required to wash a car? SIM7 Simulate a bank service system. There are two tellers in the bank. The service time of two tellers follow the exponential distributions with mean 5 persons/hour and 6 persons/hour respectively. The inter-arrival time of the customers also follows

exponential distribution. The average customer arrival rate is 10 persons/hour. The arrival customers form one waiting queue and any idle teller can serve the customer. Calculate the average service time (waiting time + teller service time) of each customer, the average queue length and the maximum queue length. Modify the system by restricting the maximum queue length and repeat the simulation. Calculate also the number of customers that go away when the queue is full. EOS PROJECTS In large-scale optimization problems, different vectors and matrices are typically sparse, i.e. only very few elements are non-zero. Typically vectors with thousands of elements may contain only about 4-6 non-zeroes, on average. Such vectors can be stored as normal unpacked vectors (such as DVector class). Often sparse vectors can be stored more efficiently as packed vectors, where only the index and value of the non-zero elements are stored in an array. struct PItem { // storage for nonzeros int ind; // index of nonzero double elem; } // value of nonzero class PVector { int n; // logical dimension int size; // number of nonzeros PItem *data; // pointer to array of PItems public: PVector() { n= 0; size= 0; data= 0; } } EOS1 TOPIC TAKEN Implement three versions of the inner product between vectors: double IProd(DVector &x, DVector &y); double IProd(DVector &x, PVector &y); double IProd(PVector &x, PVector &y); Compare the relative speed of the different implementations using vectors of different size and density. Can you determine when each variant is most efficient? EOS2 Extend the tabular simplex package on the web so that it also maintains the product form of the basis inverse Inv(B) = E(k)E(k-1)E(2)E(1), where each E-matrix performs the Gauss-Jordan eliminations for one column. Each elimination matrix differs from the identity matrix only in terms of a single column, which can be stored as a packed vector. See material on the web. You can test that the implementation is correct by computing Inv(B) = E(k)E(1) explicitly. At each simplex iteration the slack columns of the current simplex table equals Inv(B). EOS3 Extend the tabular simplex package on the web so that it reads the number of variables and constrains, c-coefficients, A-matrix, b-vector, and upper bounds for x-

variables and slacks from standard input, solves the corresponding model, and outputs the model status, objective value, variable values and statuses to output. EOS4 Sparse matrices can be stored either by rows or by columns. Implement an efficient algorithm to transpose the sparse matrix, i.e. change the storage from row-wise into column-wise (and vice versa). Can you implement the transposition in-place? Measure the time that your algorithm takes using matrices of different sizes and densities. <A few more EOS topics will be posted shortly>

Вам также может понравиться