Problem: Production Scheduling

Assignment 2
Deadline: 5pm Friday 9 October 2020
Problem: Production Scheduling
1. General description
A Personal Computer Manufacturer invites you to design and implement a software
application for production scheduling as part of their supply chain management system.
The manufacturer collects all the PC orders (an order bundle) from their dealers at the
beginning of a scheduling period (say one week). Your application will take the order
bundle as an input and generate a set of schedule reports for component procurement and
production line arrangement.
1.1 Products and components
The products to be manufactured are personal computers (PCs). Each PC model is built
from four components: CPU, motherboard, memory card and hard drive.
CPUs and motherboards are available in two different product families, Pintel and IMD.
A Pintel CPU only works with a Pintel motherboard, the same as IMD CPUs. CPUs are
available in two speeds, 3.0GHz and 5.0GHz, memory cards are in size of 16GB and
32GB, and hard drives are in size of 1TB and 2TB. There are 10 different components,
which can be combined into 16 different PC models. All products are produced by the
same product line, but different type of PC require different numbers of production cycles
of the production line1. The catalogs of components and PCs are given in the following
Table 1: Component Catalog

CompId# Component Name Cost $
0 Pintel CPU 3GHz 1000
1 Pintel CPU 5GHz 1500
2 IMD CPU 3GHz 1000
3 IMD CPU 5GHz 1500
4 Pintel motherboard 250
5 IMD motherboard 250
6 Memory 16GB 100
7 Memory 32GB 200
8 Hard disk 1TB 300
9 Hard disk 2TB 400

1 You may consider a production cycles is a time unit, say one minute.
Table 2: PC Products

PCId# Required Components Required Cycles
0 0, 4, 6, 8 4
1 0, 4, 6, 9 5
2 0, 4, 7, 8 5
3 0, 4, 7, 9 6
4 1, 4, 6, 8 5
5 1, 4, 6, 9 6
6 1, 4, 7, 8 6
7 1, 4, 7, 9 7
8 2, 5, 6, 8 4
9 2, 5, 6, 9 5
10 2, 5, 7, 8 5
11 2, 5, 7, 9 6
12 3, 5, 6, 8 5
13 3, 5, 6, 9 6
14 3, 5, 7, 8 6
15 3, 5, 7, 9 7

The running cost of the product line is $100 per cycle. Therefore, the total cost to produce
a PC unit can be calculated as:
PCCost = Total cost of components + cycles*$100.
For instance, the cost of a PCId#7 unit is $3050, which consists of:
• CompId#1 – Pintel CPU 5 GHz $1500
• CompId#4 – Pintel motherboard: $250
• CompId#7- Memory 16GB: $200
• CompId#9 – Hard drive 2TB: $400
• Running cost: 7*$100
1.2 Costumer orders
At the beginning of each scheduling period, the manufacturer receives a bundle of orders
from their dealers. Each order requests a single type of PC with order id, PC id and
quantity. Based on the information, the manufacture adds on profit rate per unit (in
percentage)2. The order information can then be specified as follows:
order = (orderId, PCId, orderQuantity, unitProfitRate)
2 Unit profit is the net profit margin per unit the manufacture charges to the dealer of the order. It is
calculated based on the percentage of product cost, i.e., unit profit rate. Different dealers are applied
different profit rate for different products, depending on dealership history, dealership agreements, urgency
or popularity of productions, and other factors.
OrderId is generated by your system. PCId is the product the order requests. The order
quantity is given by the respective dealer, which range from 1 to 30. UnitProfitRate
ranges from 25%-75% of the PC cost. Therefore, the selling price of a PC product is3:
unitPCPrice = PCCost + PCCost*unitProfitRate
The order value is then unitPCPrice * quantity. For instance, given an order as follows:
orderId = 115;
PCId = 7;
orderQuantity= 19;
unitProfitRate = 45%
The cost of product No# 7 is $3050. The order gives a profit of $3050*45%=$1372.50
per unit. Thus, the PC price per unit is $4422.50. The total order value is $57,950, among
which the total profit from the order is 19*$1372.5 = $26,077.50.
An order bundle is a set of orders, which can be implemented as an array or a vector of
Order objects).
1.3 Manufacturing
The manufacturer is equipped with a PC production line, which has 10,000 available
production cycles during the scheduling period and can produce all types of the PC
products. The running cost of the product line is $100 per cycle. Once you receive an
order bundle, you need to schedule the production line to produce as many orders in the
bundle as you can. An order can only be either fully satisfied (produce the ordered
quantity) or be cancelled if there are not enough production cycles or you choose to leave
the cycles for other products. Cancelling an order will incur a penalty of 3% of the order
value (unitPCPrice * quantity). You need to produce a report on the outcome of your
schedule. The report should include the following information:
• The list of all the orders received
• The list of all the orders satisfied (to be produced)
• The list of all the orders cancelled (unable to produce)
• The total profit
• Breakdown of each PC to be produced
• Breakdown of each component required.
• The total cycles will be used.
1.4 CPU discount
In order to accomplish the scheduled orders, the manufacturer need to procure all the
required components as listed in the schedule report. For CPUs, if the manufacturer buys
500 or more units of any CPUs – Pintel CPU 3GHz, Pintel CPU 5GHz, IMD CPU 3GHz
3 Note that the price of the same PC product can be different due to the unit profit rate is different for
different order.
and IMD CPU 5GHz, it will receive an 18% discount of its standard price from the
suppliers. For instance, if the manufacturer orders more than 500 IMD CPU 5GHz CPUs,
the price of each unit will be $1230. Note that this discount will have no effect on the
product price or the cancellation because it is come after of the schedule. The discount
received will be added to the total profit the manufacturer achieves. See Task 5 for more
details. No discount is applicable for components other than CPUs.
2. Task specification
In order to implement a software application that can take any order bundle in the
specified format and generate a schedule for production and component procurement, you
are required to complete the following tasks.
Task 1 (20%): Extend the following Unit class into two classes Component and
Product using inheritance:
class Unit
int id;
int cost;
Unit(int i, int c)
id = i;
cost = c;

int getId()
return id;

int getCost() const
return cost;

All the constants, including the data of components (Table 1) and the data of PC
products (Table 2), have been given in the file Constant.h. Please download the
file Unit.h and Constant.h from vUWS.
You may add any additional data members or member functions to the Unit class.
Task 2 (15%): Create a class called Order that specifies customer orders. The class
should include at least the data items: orderId, PCid, quantity, dueDate and
unitProfit. Calculate unit profit, unit PC price, total profit, unit profit with
discount, and total profit with discount of the order. Overload operator< of the
class for the purpose of sorting orders for Task 5.
Task 3 (40%): Create a class called Schedule for production scheduling. The class
takes a bundle of orders as input from a text file and outputs the scheduling
reports also as text files. The format of an order bundle is the following:
[orderId1, PCId1, orderQuantity1, unitProfitRate1]
[orderId2, PCId2, orderQuantity2, unitProfitRate2]
orderIdn, PCIdn, orderQuantityn, unitProfitRaten]
Download an example of order bundle orderbundle.txt from vUWS to test your
scheduling algorithm.
Given an input of order bundle, your program should automatically generate a set of
reports including the following information:
• The list of all the orders received
• The list of all the orders satisfied (can be produced)
• The list of all the orders cancelled (unable to produce)
• The number of each PC to be produced
• The number of each component required.
• The total cycles will be used.
• The total profit with and without discount
Note: You should implement all the classes required above with exactly the same name.
However, you can create extra classes, or add more data items and member functions into
above classes if necessary.
Task 4 (10%): Create a class called BundleGenerator to generate an order bundle.
Each order bundle contains a number of orders ranged randomly between 120 to
200 (inclusive). Download an example of order bundle orderbundle.txt from
vUWS for the format of the file. For each order, the orderId has to be generated
automatically without duplication (can be sequential integers). The PCId,
orderQuantity and unitProfitRate should be randomly generated. PCID ranges
from 0-16, orderQuantity ranges from 1 to 30 and unitProfitRate ranges from 25
to 75. See the constants specified in Constant.h. The generated order bundle
should be written into a text file.
Note: You may do Task 3 and Task 4 independently.
Task 5 (15%): Extend your Schedule class into a class named SmartSchedule with
additional functions to maximizing manufacturer’s profit. There are many ways
to optimize profit, for instance, by prioritizing the orders with higher profit
and/or trying to get CPU discount as much as possible.
Task 6 (5 bonus marks): Convert your C++ code into Java. You must have a pass level
C++ code to be eligible for the bonus marks. You can have up to 100% for the
We will use an order bundle to test your scheduling algorithm and see whether it gives an
optimal profit.
Tasks for fun:
If you like this topic and want to further improve your programming skills, you may
perform the following extra tasks:
Create other classes to offer more advanced functionalities of production scheduling. For
instance, you can introduce due date for each order and the limitation of components
available on each day. Extend your scheduling program so that it can meet both the
limitation of production and maximize overall profit.
3. Deliverables
3.1 Declaration
There is no requirement for documentation. However, you are required to include the
following declaration as a comment in the file with the main function.
I hold a copy of this assignment that I can produce if the original is lost or damaged.
I hereby certify that no part of this assignment has been copied from any other student’s work or
from any other source except where due acknowledgement is made in the assignment. No part
of this assignment has been written/produced for me by another person except where such
collaboration has been authorised by the subject lecturer concerned.
4. Submission
Both the declaration and source code must be submitted via vUWS before the deadline.
Your program (.h, .cpp) can be put in separate files (executable file is not required). All
these files must be zipped into one file with your student id as the zipped file name.
Specify in the main source file (.cpp) what compiler/IDE you use make sure your
program can be compiled under the compiler/IDE you specified.
Email submission is not acceptable.
5. Demonstration
You are required to demonstrate your program during your scheduled practical session
in Week 13. You will receive no marks if you fail the demonstration, especially if you
miss the demo time. Note that it is students’ responsibility to get the appropriate
compilers or IDEs to run their programs. The feedback to your work will be delivered
orally during the demonstration. No further feedback or comments are given afterward.
The demonstration program must be the same as the one you submit. Different from
assignment 1, you will not be given a chance for further improvement.

The post Problem: Production Scheduling appeared first on My Assignment Online.

Hello! Need help with your assignments?