CAREER PLAN TRACKER
A Project
Presented to the faculty of the Department of Compute Science
California State University, Sacramento
Submitted in partial satisfaction of
the requirements for the degree of
MASTER OF SCIENCE
in
Computer Science
by
Aditya Hiran Pilla
SPRING
2014
© 2014
Aditya Hiran Pilla
ALL RIGHTS RESERVED
ii
CAREER PLAN TRACKER
A Project
by
Aditya Hiran Pilla
Approved by:
__________________________________, Committee Chair
V. Scott Gordon, Ph.D.
__________________________________, Second Reader
Bob Buckley, MS.
__________________________________, Third Reader
Cici Mattiuzi
____________________________
Date
iii
Student: Aditya Hiran Pilla
I certify that this student has met the requirements for format contained in the University format
manual, and that this project is suitable for shelving in the Library and credit is to be awarded for
the project.
__________________________, Graduate Coordinator
Nikrouz Faroughi, Ph.D.
Department of Computer Science
iv
___________________
Date
Abstract
of
CAREER PLAN TRACKER
by
Aditya Hiran Pilla
The prime objective of the Career Plan Tracker is to build a career plan that recommends career
tasks given in the career-counseling framework called "The Serious Job Seeker". A unique career
plan is generated for each individual user based on the individual user's skill set, personality type
and background.
A prominent part of the career plan includes recommendations of career task times for each
recommended career task. Moreover, the Career Plan Tracker takes into account the various time
restrictions the user may have in his life and generates a career plan for a schedule that is shorter
than the recommended ideal schedule. For instance, the ideal schedule to complete the career
acquisition process may require three to six months. Nevertheless, if a user has only two months,
the user can still have a career plan built for just two months without losing much of the user’s
chances in succeeding through the career acquisition process. The Career Plan Tracker
categorizes this problem as a multi-objective optimization problem and uses a meta-heuristic
algorithm called Simulated Annealing to solve it.
v
The Career Plan Tracker is an android application developed for android devices. The backend of
the application is hosted on a cloud service called Parse. With the permission of the instructors,
this application is developed with the intent of publishing it in the Google play store.
_______________________, Committee Chair
V. Scott Gordon, Ph.D.
_______________________
Date
vi
ACKNOWLEDGEMENTS
I am thankful to my parents and their guidance in every aspect of my life. The formulation of the
project idea has been influenced greatly from their ideology. I would also like to thank my friends
who have helped implement the features I wished to include in my application. Last but not the
least, I am very grateful to my project advisors who have constantly been my motivation in the
completion of the project.
vii
TABLE OF CONTENTS
Page
Acknowledgements........................................................................................................................ vii
List of Tables .................................................................................................................................. xi
List of Figures ................................................................................................................................ xii
Chapter
1. INTRODUCTION ....................................................................................................................... 1
1.1 Background ........................................................................................................................... 1
1.2 Scope ..................................................................................................................................... 2
1.3 Disclaimer ............................................................................................................................. 3
1.4 Technologies/Tools Used...................................................................................................... 3
2. PROBLEM SPECIFICATION .................................................................................................... 5
2.1 Building the Schedule Recommendation .............................................................................. 5
2.1.1 Philosophy of the Problem ..................................................................................................... 5
2.1.2 Problem Definition .................................................................................................................. 5
2.1.3 Properties of a Career Acquisition Process.......................................................................... 6
2.1.4 Properties of an Ideal Schedule ............................................................................................. 6
2.1.5 Understanding the Personality Type of the Job Seekers .................................................... 7
2.1.6 Understanding the Skills/Options of the Job Seeker that Speeds up the Career
Acquisition Process ............................................................................................................... 9
2.1.7 Multiple Objectives for Building an Optimized Schedule Recommendation for the
Career acquisition process .................................................................................................. 10
2.1.8 Algorithm of Choice: Simulated Annealing ...................................................................... 11
viii
3. SIMULATED ANNEALING .................................................................................................... 13
3.1 Pseudo Code........................................................................................................................ 14
3.2 Implementation ................................................................................................................... 14
3.2.1 Considerations for the Implementation of the Algorithm................................................ 15
3.2.2 Encoding used for the Simulated Annealing ..................................................................... 15
3.2.3 Initial configuration at the beginning of the Algorithm ................................................... 15
3.2.4 Acceptance Probability ......................................................................................................... 15
3.2.5 Cost function .......................................................................................................................... 17
3.2.6 Neighborhood function ......................................................................................................... 20
3.3 Fitting into the Android Application ................................................................................... 21
4. SETTING UP THE DEVELOPMENT ENVIRONMENT ....................................................... 23
4.1 Setting up the Android development environment ............................................................. 23
4.2 Configuring Androidplot .................................................................................................... 23
4.3 Configuring the Parse Cloud ............................................................................................... 24
4.4 Android Application Setup ................................................................................................. 25
5. USE CASE REPORTS .............................................................................................................. 27
5.1 Use Case Diagram............................................................................................................... 27
5.2 User Flows .......................................................................................................................... 28
5.2.1 User ......................................................................................................................................... 28
5.2.2 Career Plan Tracker .............................................................................................................. 29
6. DATABASE REQUIREMENTS AND MODELING .............................................................. 30
6.1 Database Requirements ....................................................................................................... 30
6.2 Data Modeling .................................................................................................................... 31
ix
6.3 ER Diagram for the database on the Parse Cloud ............................................................... 32
6.4 ER Diagram for the Local Database stored on the Android Device ................................... 33
7. RESULTS AND ANALYSIS .................................................................................................... 34
7.1 Case study: Computing the Schedule Recommendation for a Sample Job seeker ............. 34
7.1.1 The Career Plan Tracker’s way of Building a Schedule Recommendation .................. 34
7.1.2 Output ..................................................................................................................................... 38
7.1.3 Comparative Analysis and Conclusion .............................................................................. 38
8. FUTURE WORK....................................................................................................................... 42
APPENDIX.................................................................................................................................... 43
Code for Simulated Annealing.................................................................................................. 43
References...................................................................................................................................... 50
x
LIST OF TABLES
Tables
Page
1. Input #1 - Jobseeker's Persona....................................................................................................37
2. Input #2 - A fixed constant Ideal Schedule.................................................................................38
3. Start solution for Simulated Annealing.......................................................................................38
4. Input #3.a. - History data of successful jobseekers having writing skills...................................39
5. Input #3.b. - History data of successful jobseekers having reading skills..................................39
6. Input #3.c - History data of successful jobseekers having socializing skills..............................40
7. Input #4 - History data of successful jobseekers having Artistic personality type.....................40
8. Initial configuration of the Simulated Annealing algorithm.......................................................40
9. Output Schedule Recommendation.............................................................................................41
xi
LIST OF FIGURES
Figures
Page
1. Overview of the interaction between Android and the Parse Cloud.............................................5
2. Use-case diagram for the Career Plan Tracker...........................................................................30
3. ER diagram for the server-side data............................................................................................35
4. ER diagram for the client-side data.............................................................................................36
5. Comparison of profits for the two Career Schedules..................................................................42
6. Task-wise comparison between the two Career Schedules........................................................44
xii
1
Chapter 1
INTRODUCTION
1.1 Background
The Career Plan Tracker tries to mimic a real-time career counselor and provides the right
guidance required in the job search process.
It is a portable tool designed and developed to fit the needs of a job seeker. To achieve this
specification, it is developed as a mobile application on the Android platform. It is important to
remove the restrictions imposed by space to cater to the spontaneous needs of a job seeker. The
optimality intended to be achieved through this mobile application remains the prime focus in its
development.
The recommendation system built into the Career Plan Tracker helps in generating personalized
schedules appropriate for each user. The recommendations are primarily based on the user’s
profile and the history of all the users who have similar profiles to the user in the present context.
The Career Plan Tracker in its attempt to bridge the gap between career counseling and the job
seekers tries to recommend schedules according to the time requirements of the job seeker. For
example, a student who is about to graduate in a few days may not have all the time required for
an ideal job search process. In a common scenario like this, the Career Plan Tracker can be quite
helpful. The application understands the pressure and complication of the scenario and generates
an optimal schedule recommendation to
minimize the loss of a shortened career acquisition process. Such a recommendation can be
motivating for any serious job seeker to pursue the job search more diligently.
2
1.2 Scope
The model developed by the Career Plan Tracker to mimic a real time career counselor has been
an experimental attempt to gain an insight into the career acquisition process and the factors that
play an important role in building an effective schedule recommendation for the career
acquisition process. As a part of the enhancement, it also aims at providing extensive motivation
to the job seekers as they progress along their career acquisition process.
The recommendation system of the Career Plan Tracker looks at this as an optimization problem
to compress the job search schedules to fit the time requirements without compromising much on
the gains of the ideal career acquisition process. This could be achieved only when the generated
schedule recommends a tight schedule that can motivate the job seeker closely. Presently, it is
developed to have its optimization concentrated upon six factors namely,
1. Desired time: It is defined as the time that the job seeker intends to complete the whole
career acquisition process.
2. Motivation: The schedule depends on the level of motivation/desperation in the job
seeker. This factor usually depends on some kind of a driving force from the job seeker’s
background. For example, financial problems in a family or a relationship can lead to an
intense motivation in the job seeker. Other examples include job seekers having babies or
college age children back at home. The recommendation provided by the Career Plan
Tracker should be complementing any such a scenario.
3. Personality type: The time duration for completing the career acquisition process may
also depend on the personality type of the job seeker. This factor is taken into
consideration by storing the time durations of the tasks involved in the career acquisition
process. This history of successful job seekers is mapped with the personality types of the
3
job seekers. The personality types considered in this factor springs from a well-known
categorization called the Holland Personality Types.
4. Skills: Some skills have been identified which aid the pace of the career acquisition
process. The recommendation system understands this and keeps track of the time
durations of the career acquisition process for the job seekers possessing these skills in
the past. This is done in the exact similar way as it was done for the personality types
discussed above.
5. Criticality of the career task: All the tasks of the career acquisition process aren’t
weighted the same. Some tasks are quite a lot more important and time intensive than the
others. For example, the task of preparing a resume is more important for the career
acquisition process to succeed. So, this aspect of the career guidance is taken care of
while building a recommended schedule.
6. Ideal Schedule: The preferred schedule should be close to the ideal schedule after taking
the other factors into consideration. Having this factor play its part in building the
recommended schedule, the probability of success is expected to be high. As this factor is
a direct reflection from the advice of the career counselors, it is important to include it as
an objective to be met while building the optimized schedule.
1.3 Disclaimer
It is not intended to be fully comprehensive to replace an existing career counselor.
1.4 Technologies/Tools Used
1. Android platform (ADT bundle): For developing a mobile application that can be used
by the job seekers.
2. Parse cloud: This provides backend as a service with a web data interface.
4
3. Programming language: Java
4. Scripting language for the Android GUI: XML
5. Query language: Query language provided by the Parse cloud’s SDK
6. Algorithms: Simulated Annealing, Knuth shuffle
7. External libraries: Androidplot for drawing graphs on the Android
8. IDE: Eclipse
9. UML editor: Violet
10. Drawing tool for the ER-diagram: EDraw all in one drawing software
11. Content for career counseling: The Serious Job Seeker, an ebook.
The database for the Android application is stored on the Parse Cloud. In order, to establish the
connection between the Android application and the Parse Cloud and the Android application, a
few configuration steps are required which are discussed in a later chapter. The overview of this
interaction is illustrated in the figure[6] below.
Figure 1 Overview of the interaction between Android and the Parse Cloud
5
Chapter 2
PROBLEM SPECIFICATION
2.1 Building the Schedule Recommendation
This section encapsulates the main idea behind the Career Plan Tracker. Every job seeker who
intends to complete the career acquisition process of finding a job, within a time frame that is
shorter than the ideal recommendation, is required to make some clever decisions in order to
minimize the losses incurred due to the availability of a shorter time frame. The Career Plan
Tracker eliminates this stressful step for the job seeker and builds a wise schedule
recommendation based on a few promising parameters. Hence, the jobseeker will be left with the
motivation of completing the career acquisition process with the schedule recommended by the
Career Plan Tracker.
2.1.1 Philosophy of the Problem
Understanding the background of the job seeker helps in generating a tight schedule that keeps
the job seeker motivated and active throughout the completion of the career acquisition process. It
is essential to model the close dependence between the background of the job seeker and the
schedule recommendation so that there will be a continuous drive for the job seeker to work
towards the end career goals. In this complex process of building personalized schedule
recommendations for job seekers, it is important to list the main objectives required to achieve
optimization.
2.1.2 Problem Definition
The ideal schedule of a successful career acquisition process to find a job has to be compressed to
fit the shorter available time of the job seeker in an optimized way to fulfill multiple objectives.
6
2.1.3 Properties of a Career Acquisition Process
The career acquisition process essentially includes the popular set of steps[2] that the career
counselors usually recommend for finding a job. The Career Plan Tracker is developed based on
the career acquisition process defined in a well-established book called the “The Serious
Jobseeker”[2]. Having derived its content, the set of steps are as follows:
Step 1: Getting Organized
Step 2: Awareness
Step 3: Self-Assessment
Step 4: Job Search Strategy
Step 5: Resumes and Portfolios
Step 6: Interview Preparation
Out of these steps, not all of them are equally weighted. In order to distinguish between them,
some of them are considered as critical steps. These include the two steps 4 and 5 from the list
mentioned above.
2.1.4 Properties of an Ideal Schedule
Ideally, the steps listed above as a part of the career acquisition process[2] will take three to six
months. Considering career acquisition process to be a full time serious job, three months would
be 480 hours of work. Depending on the importance of each step of the career acquisition
process, the total time of three months (i.e. 480 hours) should be well distributed among the
career steps. This results in an ideal schedule for the career acquisition process which will be used
7
as one of the parameters to compute the schedule recommendation. An example of ideal schedule
is mentioned below:
Step 1: Getting Organized
-
20 hours
Step 2: Awareness
-
20 hours
Step 3: Self-Assessment
-
40 hours
Step 4: Job Search Strategy
-
200 hours
Step 5: Resumes and Portfolios
-
120 hours
Step 6: Interview Preparation
-
80 hours
2.1.5 Understanding the Personality Type of the Jobseekers
The Career Plan Tracker categorizes jobseekers based on their Holland personality type using the
Holland personality type test. The different Holland personality types[2] are listed below as quoted
in “The Serious Jobseeker”[2]:
1. Artistic
enjoy working in unstructured situations using imagination and creativity
tend to dislike having to follow rules or set procedures
enjoy doing things that requiring a sense of design and an appreciation of
aesthetics
these people are frequently innovators who tend to "think way outside the
box"
8
2. Realistic
enjoy "hands-on" work using tools, equipment, and machinery
like working outdoors or with plants or animals
enjoy sports or outdoor activities like rock climbing, biking, hiking or back
packing
don't like doing a lot of paperwork
frequently work on teams to accomplish tasks or complete projects
3. Conventional
prefer work that is detailed and orderly, structured and routine
enjoy work that involves data and information, rather than people or things
likes structure with rules that are known
dislikes having to be creative
jobs in this area involve orderly processes and record keeping
these people are reliable, efficient, conforming, and conscientious individuals
4. Enterprising
skilled at persuading, leading, performing, influencing or managing others
able to work to meet organizational goals or economic gain
highly money motivated
work requires energy and ambition, and a fair amount of self-confidence
jobs are usually business related and often involve sales and promotion
entrepreneurial, energetic and optimistic; establish rapport easily - sociable
and talkative
9
these people are focused on competing and getting ahead
5. Investigative
like to observe, learn, analyze, evaluate, and solve problems
prefer working with information and data, rather than with people or things
enjoy strategy games (chess, checkers etc.) or computer games
frequently skilled in math and/ or science
may play a musical instrument - (music has a math component)
these people tend to be analytical and may appear quiet and pensive
like to help people - prefer teaching, communicating, and serving others
skilled with words - able to share ideas effectively to enlighten or inform
6. Social
others
able to engage people at a personal and emotional levels
can work with minimal structure or supervision
tend not to be significantly money motivated
these people are altruistic, sociable, friendly and socially responsible
2.1.6 Understanding the Skills/Options of the Job Seeker that Speeds up the Career
Acquisition Process
These include skills and a few options related to the background of the job seekers. They are
listed as below:
1. Writing skills
10
2. Reading skills
3. Speaking skills
4. Presentation skills
5. Analysis skills
6. Research skills
7. Having a huge network of friends or acquaintances
8. Being social
9. Being desperate for jobs
10. Being presentable/expressible
11. Being organized
12. Being professional
Job seekers having any of the above skills/options may end up completing the career acquisition
process much faster than anticipated. Hence it is important to take this factor into consideration
while building a schedule recommendation.
2.1.7 Multiple Objectives for Building an Optimized Schedule Recommendation for the
Career acquisition process
The different objectives include the following:
1. Ideal schedule factor: The schedule recommendation should closely resemble the ideal
schedule.
2. Criticality of career tasks factor: The more important career steps should have more
emphasis and time allotted in the schedule recommendation.
11
3. Holland personality type factor: The schedule recommendation should closely resemble
the schedule of a successful job seeker in the past having a similar Holland personality
type.
4. Career skills/options factor: The schedule recommendation should closely resemble the
schedule of a successful job seeker in the past having a similar set of career skills and
options.
5. Motivation/desperation factor: The job seeker’s dedication also depends on the level of
desperation for the job. Certain family/relationship problems can raise the level of
desperation in the job seeker. In this scenario, the schedule recommendation intends to
retain the job seeker’s motivation by recommending a slightly tougher schedule (i.e. a
faster paced schedule).
2.1.8 Algorithm of Choice: Simulated Annealing
The Career Plan Tracker uses a simple implementation of simulated annealing to solve this as a
multi-objective optimization problem. A detailed explanation of the algorithm and its
implementation is given in the next chapter. The following reasons[5] help in the selection of
simulated annealing as the algorithm of choice.
1. Huge solution space: It is hard to use a brute force technique on the huge solution space
of the problem.
2. No relationship between sub problems: The problem cannot be divided into sub problems
as in a divide and conquer approach.
3. Not an incremental problem: An efficient algorithm cannot be written using backtracking
or branch and bound to solve this problem very quickly.
12
4. Not a dynamic programming problem: Difficult to see it as a dynamic programming
problem.
5. Can establish a structure between the solutions: This is useful to determine if hill
climbing approaches can be used as two neighboring solutions can have a relationship
between them.
6. Exact solution is not needed: A fairly decent solution would suffice to build a schedule
recommendation as there is no way of determining for sure on what works best for the
job seekers.
7. Simpler to implement: The simulated annealing is a much simpler but powerful algorithm
to be used.
13
Chapter 3
SIMULATED ANNEALING
Simulated Annealing is a probabilistic method used to find a global maximum on the cost
functions of a particular solution space. A solution space consists of a set of all probable solutions
to the problem. Usually, this solution space is very large making it impossible to solve the
problem in reasonable time using deterministic algorithms. Under a scenario like this, Simulated
Annealing is used.
Simulated annealing is inspired from the commonly used annealing process in metallurgy and
material sciences. During this process, metals are heated to high temperatures and are allowed to
cool down gradually such that the resulting metal becomes more usable in terms of the metal’s
physical properties like ductility. Different cooling rates are used for cooling different metals.
Similar to the annealing process described above, simulated annealing is used with an initial high
temperature and a good cooling rate to achieve the desired results. Within the solution space, each
solution is located in the neighborhood of a few other solutions. The algorithm works by picking
a random start solution from the solution space followed by an iterative annealing process.
During each of these iterations, the algorithm picks the next solution from the neighbors of the
previously picked solution. However, this picking up of a solution has a probability associated
with it called the acceptance probability. This probability in turn depends on the difference in the
costs between the solution picked prior to the current iteration and the solution picked from the
currently available neighbors (i.e. in the current iteration). Moreover, the acceptance probability
equals one whenever the neighbor solution picked is better than the previously picked solution in
terms of the cost which is discussed later in the chapter. Also, the acceptance probability depends
on the current temperature of the iteration. When the temperature is high, the probability of
14
accepting the neighbors is high and as the temperature reduces, this probability decreases. Finally,
when the temperature reaches a minimum stable temperature, the annealing process stops and the
current solution at the end of this process is usually a good enough solution for the problem.
For the multi-objective optimization problem discussed in the previous chapter, one probable job
seeker’s schedule in the career acquisition process is treated as one solution in the solution space.
Simulated Annealing is then used to find the global maximum which represents the best possible
schedule for the jobseeker’s career acquisition process.
3.1 Pseudo Code
Step 1: initialize the starting temperature and the cooling rate
Step 2: pick a start solution
Step 3: make current solution equal to start solution
Step 4: while ( temperature > 1 )
Step 5: get neighbor solution from the current solution
Step 6: if (acceptance probability > random value) then
Step 7: make current solution equal to the neighbor solution
Step 8: else reject the neighbor solution.
Step 9: reduce the temperature according to the cooling rate
Step 10: repeat from Step 4
3.2 Implementation
The specific implementation to solve the problem under consideration is attached to the appendix
of the document. However, the important details pertaining to the major components of the
algorithm are mentioned in this section.
15
3.2.1 Considerations for the Implementation of the Algorithm
1. It is important to select cheaper functions (cost and neighborhood functions) in the
implementation of this algorithm in order to satisfy the timing requirements of the Career
Plan Tracker.
2. Clamping: Negative time recommendations in the schedule recommendation should be
avoided at the time of choosing the neighbor. This is accomplished by making the
acceptance probability zero in cases of negative time recommendations and is called
clamping the solution space.
3.2.2 Encoding used for the Simulated Annealing
Decimal encoding is used to represent the career task times in hours. As the career steps are fixed
and predetermined, array of type ‘int’ is used to represent the task times in the order of the career
steps listed earlier. For example, the career task time for the “Getting organized” step is always
stored in the 0th index of the array as it is the first step of the career acquisition process..
3.2.3 Initial configuration at the beginning of the Algorithm
Start temperature = 1,000,000
Cooling rate = 0.99999
Start solution = ideal schedule of the career acquisition process
3.2.4 Acceptance Probability
The acceptance probability determines whether to accept or reject a neighbor during the
annealing process.
If the new energy i.e. the energy of the neighbor is better than the energy of the current solution,
then the acceptance probability is 1. This means that the neighbor is definitely accepted. But if the
16
new energy isn’t better than the energy of the current solution, then the acceptance probability[12]
is computed as e(newEnergy - energy)/T. This means that during the earlier temperatures of the annealing
process, the probability of accepting a neighbor even if its energy is worse than the energy of the
current solution is high. As the temperature decreases, this probability reduces.
The acceptance probability is zero when the neighbor has at least one negative career task time
included in the schedule recommendation.
double acceptanceProbability(double energy, double newEnergy, double temperature) [12]
{
// If the new solution is better, accept it.
if ( newEnergy >= energy && newEnergy>0)
{
return 1.0;
}
// If the new solution is worse, calculate an acceptance probability.
If ( newEnergy > 0)
return Math.exp((-energy + newEnergy) / temperature);
else return -1;
}
// If the energy is negative reject the solution.
17
3.2.5 Cost function
The cost function determines the profit of the solution and is considered to represent the energy of
the solution at the time of computing the acceptance probability. The equations used in the cost
function are as follows:
Profit = (1 – vp) / (hpt + cs + c + is + m)
Where,
vp = validating penalty
hpt = Holland personality type factor
cs = career skills/options factor
c = criticality factor
is = ideal schedule factor
m = motivation factor
The validating penalty ensures that none of the career task times in the schedule recommendation
are negative. It also ensures that none of the career tasks occupy a huge proportion of the career
acquisition process.
vp =
100
if
if there is at least one career task time that is negative in the schedule or
just one of the career tasks occupy a large proportion in the
career acquisition process.
=
0
otherwise
The hpt factor ensures that the schedule recommendation is closely similar to the successful job
seekers in the past who have possessed similar personality types as the current user.
hpt = ∑ (careerTaskTimeForHpti / totalIdealTime –
careerTaskTimeForCurrentSolution / totalDesiredTime)
Where,
18
careerTaskTimeForHpti = The average time taken to complete the career
task i by job seekers of the similar personality type as the current user.
careerTaskTimeForCurrentSolutioni = The time recommendation of the
career task i from the current solution of the annealing process.
totalIdealTime = The ideal time to complete all the career tasks i.e. 480
hr.
totalDesiredTime = Desired time of the current user.
The career skills/options factor ensures that the schedule recommendation is closely similar to the
successful job seekers in the past who have possessed similar career skills/options as the current
user.
cs = ∑ (careerTaskTimeForCsi / totalIdealTime –
careerTaskTimeForCurrentSolutioni / totalDesiredTime)
Where,
careerTaskTimeForCsi = The average time taken to complete the career
task i by job seekers having similar career skills/options as the current
user.
careerTaskTimeForCurrentSolutioni = The time recommendation of the
career task i from the current solution of the annealing process.
totalIdealTime = The ideal time to complete all the career tasks i.e. 480
hr.
totalDesiredTime = Desired time of the current user.
The criticality factor makes sure that the lesser important tasks of the schedule are compressed
first. In this way, the critical career tasks retain their important in the schedule recommendation.
c = sum_critical_factors / sum_non_critical_factors
19
sum_critical_factors = ((careerTaskTimeForCurrentSolution3 +
careerTaskTimeForCurrentSolution4) / totalDesiredTime) –
((idealCareerTaskTime3
+
idealCareerTaskTime4)
/
totalIdealTime)
sum_non_critical_factors = ((careerTaskTimeForCurrentSolution0 +
careerTaskTimeForCurrentSolution1 +
careerTaskTimeForCurrentSolution2 +
careerTaskTimeForCurrentSolution5) / totalDesiredTime) –
((idealCareerTaskTime0 + idealCareerTaskTime1 +
idealCareerTaskTime2
+
idealCareerTaskTime5)
/
totalIdealTime)
The ideal schedule factor ensures that the schedule recommendation is close to the ideal
schedules usually recommended by real time career counselors.
is = ∑ (idealCareerTaskTimei / totalIdealTime –
careerTaskTimeForCurrentSolutioni / totalDesiredTime)
Where,
idealCareerTaskTimei = The ideal time to complete the career task.
careerTaskTimeForCurrentSolutioni = The time recommendation of the
career task i from the current solution of the annealing process.
totalIdealTime = The ideal time to complete all the career tasks i.e. 480
hr.
totalDesiredTime = Desired time of the current user.
The motivation factor ensures that all the non critical tasks are compressed more.
m = - (sum_non_critical_factors)
20
double getProfit(int [ ] currentSolution)
{
return
(1-getValidatingPenalty(currentSolution)) *
(getHPTFactor(currentSolution) +
getCareerSkillsFactor(currentSolution) +
getCriticalityFactor(currentSolution) +
getIdealScheduleFactor(currentSolution) +
getMotivationFactor(currentSolution))-1 ;
}
3.2.6 Neighborhood function
Randomly select two career tasks from the schedule recommendation. Add an hour to the first
task and subtract an hour from the second task. For selecting the career tasks, a uniformly
distributed random function (using the Knuth shuffle algorithm[9]) is used. This has an asymptotic
complexity of O(n).
21
int[ ] getNeighbor(int [ ] current)
{
/* Generate the neighbor by randomly adding 1 to half of the elements and -1 to
the remaining half. If odd, one element remains unaltered.*/
int [ ] indices = new int[current.length];
int [ ] neighbor = new int[current.length];
for(int i=0;i<current.length;i++) indices[i]=i;
/* Knuth shuffle is used to have a uniformly distributed random arrangement of the
elements of the array. */
indices = shuffle(indices); [10]
//Neighbor function alters only two elements
neighbor[indices[0]] = current[indices[0]]+1;
neighbor[indices[1]] = current[indices[1]]-1;
for(int k=2;k<indices.length;k++)
neighbor[indices[k]] = current[indices[k]];
return neighbor;
}
3.3 Fitting into the Android Application
The simulated annealing approach is tested to consistently produce reliable schedules at the end
of the annealing process. With the configuration used in this implementation, it takes about 1 min
and 2 seconds of computer time to complete its execution. Hence, it will be a good choice to have
it run as a background service in the Android device. This solves the problem of long execution
time of the algorithm.
22
The advantage of running the algorithm as a background service is that the job seeker can be
prompted to complete other important tasks like reading an introduction to the career acquisition
process. By the time the algorithm completes its execution the job seeker will finish other tasks
that are not dependent on the algorithm. In this way the job seeker needn’t wait till the algorithm
completes its execution.
void computeScheduleSA()[9]
{
Log.d("SA","Starting career plan builder service in the background");
Intent startServiceIntent = new Intent(getApplicationContext(),
CareerPlanBuilderService.class);
startService(startServiceIntent);
}
23
Chapter 4
SETTING UP THE DEVELOPMENT ENVIRONMENT
This chapter intends to explain the steps required in the configuration of Android and the Parse
cloud SDKs along with the development environment necessary for building Android mobile
applications.
4.1 Setting up the Android development environment
The Android developer tools (ADT) bundle is available for download on the Android developers’
web page. This download included everything that is needed to get started with the Android
application development. The ADT bundle[6] includes the following:
1. Eclipse IDE with built in ADT plugin
2. Android SDK tools
3. Android Platform tools
4. The latest Android platform
5. The latest Android system image for the emulator
The Android SDK[6] provides you the API libraries and developer tools necessary to build, test,
and debug apps for Android.
4.2 Configuring Androidplot
AndroidPlot[13] is an open source library for creating dynamic and static charts within your
Android application. It was designed from the ground up for the Android platform, is compatible
with all versions of Android from 1.6 onward. It support the following types of charts:
1. Line charts
2. Bar charts
3. Pie charts
24
4. Step charts
5. Scatter charts
To configure the development environment to use this library, it is required to download the latest
version into the 'libs' folder of the Android project.
4.3 Configuring the Parse Cloud
For the Parse cloud to respond to the requests of the Career Plan Tracker, the following steps
have to be accomplished. This configuration[7] enables the Career Plan Tracker to communicate
with the Parse cloud and meet the data requirements. The steps[7] are as follows:
1. Download the SDK’s zip file and extract its contents into the “libs” folder of the Android
project. Make sure that the contents are directly put under the libs folder as a nested
folder is not recognized here.
2. From the Android Activity components used in the Android project, the communication
with the Parse cloud can be established through the import of appropriate packages
provided by Parse.
3. Parse cloud generates a unique application id/client key for the Career Plan Tracker. This
information is added to the “onCreate()” method of the startup activity of the Career Plan
Tracker. The code snippet is shown below as an example.
public void onCreate()
{
Parse.initialize(this, "bmqQtsv0chgM0ydvcBzhm0ineK3VVJBGh6prcakp",
"49PPwrWYCSPgr2vvd66r3pGwIO2UfZV29uX3rooF");
}
25
4. The Career Plan Tracker should request the following permissions:
a) INTERNET
b) ACCESS_NETWORK_STATE
To enable these permissions, the following lines of code should be added to the file
“AndroidManifest.xml”.
<uses-permission android:name = "android.permission.INTERNET" />
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
5. For testing the SDK installation, the following code snippet can be used in the
“onCreate()” method of the startup activity. This code creates a new database object on
the cloud which can be seen on the data browser of the Parse.
ParseObject testObject = new ParseObject("TestObject");
testObject.put("foo", "bar");
testObject.saveInBackground();
4.4 Android Application Setup
To study the specific problem specified in the earlier chapters, the Career Plan Tracker is
developed. Career Plan Tracker is an Android application that stores the job seeker profiles on the
cloud. It retrieves the relevant information needed for the computation of an optimal schedule that
caters to the needs of the job seekers.
26
Once the ADT bundle is downloaded, Android projects can be directly created from the Eclipse
IDE. The options for creating a project lies in the File menu of the IDE. Creating an Android
project commences the development of the Career Plan Tracker.
27
Chapter 5
USE CASE REPORTS
5.1 Use-case Diagram
The UML notation of the use-cases is illustrated in the diagram below. The next section gives
more details in terms of the user flows within the Android application.
Figure 2 Use-case diagram for the Career Plan Tracker
28
5.2 User Flows
5.2.1 User
The user of the Career Plan Tracker will be a job seeker who intends to find a job.
Main Flow:
1. Signs up/logs in by providing username and password.
2. Selects the career skills/options which the user possesses.
3. Takes the Holland personality test.
4. Views the user’s profile page which displays a summary of the user’s personality type
and career skills/options.
5. Reads the introduction about the career acquisition process and the career tasks needed to
be completed.
6. Receives a schedule recommendation from the Career Plan Tracker to follow through the
career acquisition process.
7. Reads information from the ebook, “Serious Job Seeker” when prompted by the Career
Plan Tracker.
8. Completes every career task given in the schedule.
9. Gives appropriate feedback when prompted by the app.
10. Clicks on the “done” button when the user achieves the goal.
Exceptional Flow:
1. Incorrect login credentials provide error message for the user.
2. At the time of reading information from the ebook, “Serious Job Seeker”, if the website is
down, the respective error is displayed as it is.
29
3. Clicks the “done” button before achieving the goal. In this case the user can click back
the “I am not done” button to resume.
5.2.2 Career Plan Tracker
Main Flow:
1. When the user completes the Holland personality test, the data required for running the
algorithm is retrieved from the Parse cloud and is stored in a local database.
2. Once the local database is populated, the simulated annealing algorithm is executed on
the background thread.
3. Finally, when the user completes the career acquisition process i.e. when the “done”
button is hit, the user data gets stored in the cloud database.
Exceptional Flow:
1. When there is no internet connectivity, the app stops working as it cannot establish a
communication with the Parse cloud.
30
Chapter 6
DATABASE REQUIREMENTS AND MODELING
6.1 Database Requirements
The data used in the Career Plan Tracker is modelled and stored on the server (i.e. the Parse
Cloud) and the data needed locally for building an optimized schedule recommendation is stored
on the user’s Android device.
The data requirements on the server side are specified below:
1. The details and the authentication credentials of the users have to be stored.
2. The list of different Holland personality types has to be stored.
3. The list of career skills/options that may impact the pace of the career acquisition process
has to be stored.
4. The list of career tasks that make up the career acquisition process has to be stored.
5. The mapping between the users and the Holland personality types must be modelled.
6. The mapping between the users and the career skills/options must be modelled.
7. The time taken by the successful job seekers to complete each career task has to be stored
under the mapping between users and the career task times.
The data requirements on the client side are specified below:
1. The average time taken for completing each career task in the past, when a user possesses
any of the career skills/options has to be computed and stored for every career
skill/option the client selects.
2. The average time taken for completing each career task in the past for the specific
Holland personality types that are similar to the client has to be stored.
3. The motivation factor associated with the client should be stored.
31
4. The desired time in which the client intends to complete the career acquisition process is
stored.
6.2 Data Modeling
BCNF normalization is used to model the database schemas on both the server and the client.
BCNF Decomposition Algorithm[11]:Input: Relational data R + FD’s for R
Output: Decomposition of R into BCNF relations with Lossless join
Algorithm:Step1: Compute keys for R
Step2: Repeat until all relations are in BCNF:
Pick any R` with A`-> B` that violates BCNF
Decompose R` into R1(A,B) and R2 (A, rest)
Compute FD’s for R1 and R2
Compute key for R1 and R2
The resultant normalized schema is illustrated below using the ER diagram notation for the data
on the server and client sides.
32
6.3 ER Diagram for the database on the Parse Cloud
Figure 3 ER diagram for the server-side data
33
6.4 ER Diagram for the Local Database stored on the Android Device
Figure 4 ER diagram for the client-side data
34
Chapter 7
RESULTS AND ANALYSIS
A sample schedule recommendation for a job seeker is discussed here to understand the inner
working of the Career Plan Tracker. The job seeker’s background is considered as the input to the
Career Plan Tracker’s recommendation system. Following that is the list of steps carried out
before executing the algorithm.
7.1 Case study: Computing the Schedule Recommendation for a Sample Job seeker
7.1.1 The Career Plan Tracker’s way of Building a Schedule Recommendation
Table 1 Input #1 - Jobseeker’s persona
Desired time for completing the career
400 hours
acquisition process
Prominent Holland personality type
Artistic
Motivation
Yes
Career skill/Option #1
Writing
Career skill/Option #2
Reading
Career skill/Option #3
Socializing
The persona specifies that the job seeker is motivated to successfully complete the career
acquisition process as quickly as possible. It also specifies the desired time in which the job
seeker intends to complete the career acquisition process.
Compression factor = desired time / ideal time = 400/480 = 0.8333
35
Table 2 Input #2: A fixed constant Ideal Schedule
Career task
Time (in hours)
Getting organized
20
Awareness
20
Self-assessment
40
Job search strategy
200
Resumes and portfolio preparation
120
Interview preparation
80
The ideal schedule is compressed using the compression factor and considered for the start
solution of the algorithm. So the start solution, at the beginning of the annealing process looks
like the below schedule.
Table 3 Start solution for Simulated Annealing
Career task
Time (in hours)
Getting organized
16
Awareness
16
Self-assessment
33
Job search strategy
166
Resumes and portfolio preparation
100
Interview preparation
66
The total time for the schedule is 397 hours which is well within the desired time requirement of
the job seeker. This initial schedule has a profit of 4.645161290322581. So, ideally the schedule
36
recommendation that the Career Plan Tracker builds should produce a better schedule that fits
better for the given persona of the job seeker.
Table 4 Input #3.a - History data of successful jobseekers having writing skills
Career skill/Option #1
Writing
Average time for getting organized
15 hours
Average time for awareness
15 hours
Average time for self-assessment
35 hours
Average time for job search strategy
235 hours
Average time for resumes and portfolio
100 hours
Average time for interview preparation
90 hours
Table 5 Input #3.b - History data of successful jobseekers having reading skills
Career skill/Option #2
Reading
Average time for getting organized
8 hours
Average time for awareness
10 hours
Average time for self-assessment
37 hours
Average time for job search strategy
195 hours
Average time for resumes and portfolio
110 hours
Average time for interview preparation
120 hours
37
Table 6 Input #3.c - History data of successful jobseekers having socializing skills
Career skill/Option #3
Socializing
Average time for getting organized
20 hours
Average time for awareness
20 hours
Average time for self-assessment
50 hours
Average time for job search strategy
150 hours
Average time for resumes and portfolio
140 hours
Average time for interview preparation
100 hours
Table 7 Input #4: History data of successful job seekers having Artistic personality type
Prominent Holland personality type
Artistic
Average time for getting organized
15 hours
Average time for awareness
15 hours
Average time for self-assessment
30 hours
Average time for job search strategy
220 hours
Average time for resumes and portfolio
110 hours
Average time for interview preparation
90 hours
Table 8 Initial configuration of the Simulated Annealing algorithm
Temperature
1,000,000
Cooling rate
0.99999
38
7.1.2 Output
A schedule recommendation is generated mimicking the end of a real-time career counseling
session. The final schedule looks like the schedule given below:
Table 9 Output Schedule Recommendation
Career task
Time (in hours)
Getting organized
12
Awareness
14
Self-assessment
33
Job search strategy
166
Resumes and portfolio preparation
97
Interview preparation
75
7.1.3 Comparative Analysis and Conclusion
The schedules generated by the two approaches are discussed.
First approach (Without the Career Plan Tracker): Take the ideal schedule and compress it using
the compression factor. This might be the way to generate a schedule to satisfy the time
requirements of the job seeker in the absence of the Career Plan Tracker.
Second approach (With the Career Plan Tracker): Provide the inputs required for the Career Plan
Tracker’s recommendation system (i.e. the simulated annealing algorithmic implementation) and
let the Career Plan Tracker build a schedule recommendation.
For comparing the schedules generated by both these approaches, the following figures can be
used:
39
1. The cost function used in the simulated annealing algorithm: This computes the profit of
using a particular career schedule with respect to the six objectives of the career schedule
discussed in chapter 1.
2. Analyzing the difference in the schedules with respect to the job seeker’s persona given.
These two figures are discussed in further detail as follows.
Profit of the Career Schedules
6
5
4
3
Profit of the career schedule
2
1
0
1
2
Figure 5 Comparison of profits for the two Career Schedules
The first bar in the chart represents the profit (metric that shows how well the schedule satisfies
the six objectives mentioned in the earlier chapters) of the career schedule generated by direct
compression to satisfy the time requirements of the job seeker. Whereas the second bar in the
chart represents the profit of the career schedule recommended by the Career Plan Tracker.
As the profits are computed based on the cost function discussed in the chapter of simulated
annealing, the profits turn out to have a precision of 14 digits. Hence, what seems to be a minor
40
difference in the profits displayed on the graph, can, in reality scale to represent a really huge
difference.
Moreover, the career schedule generated by approach 1 isn’t too bad in the first place. As this is
the exact reflection of an ideal schedule but for a shortened timeframe, it is quite good to be used
in real practice. But as the Career Plan Tracker builds a much better schedule in terms of the six
factors considered, the usefulness of this mobile application can be considered enormously high.
The second figure analyzes each career step of the schedule recommendation built by the Career
Plan Tracker. Comparing it with the schedule generated from approach 1 mentioned earlier in this
section, and relating it back with the persona of the job seeker can help us derive some interesting
observations. The comparison is illustrated graphically in the figure below:
180
160
140
120
100
80
60
40
20
Career schedule generated
without the career plan
tracker
Career Schedule generated
by the career plan tracker
0
Figure 6 Task-wise comparison between the two Career Schedules
41
The graph shows how slightly the two schedules differ but yet generate a huge difference in the
profits of the career schedules. It might well be the case that the time duration chosen i.e. of 480
hours might be small enough to result in smaller difference in the schedule. But on the other side,
these slight differences when summed up forms a much bigger difference that is clearly evident
from the previous graph which compares the overall profit of the entire career schedule.
This graph also depicts compression based on the six factors that form the objective of the
compression. For example, the lesser important tasks can be observed to be more compressed.
Also, the higher career task time for the career task, “Interview preparation” is attributed to a
similar history data (with respect to the personality types and the career skills/options) that has
been observed in the past.
Considering the fact that, a few minor changes to the career schedule with the help of the Career
Plan Tracker may help the job seekers find a job faster satisfies the objective of this project.
42
Chapter 8
FUTURE WORK
1. The sample history data used as the input for the algorithm in the Career Plan Tracker can
be replaced with a more accurate data that the Career Plan Tracker expects to record as
time passes on.
2. The Career Plan Tracker can be made a cross platform application by extending its
support for the iPhones, Windows phones and the web.
3. Presently, all the objectives are considered equally important. But in the future, as history
data will be available, the more important objectives can be weighted higher than the
others while building the schedule recommendation.
4. More objectives can be added to the optimization problem that the Career Plan Tracker
presently solves.
5. Better user interfaces can be developed for larger screen devices like the tablets.
6. More fun features can be added to the Career Plan Tracker to make it more interesting to
use.
43
APPENDIX
Code for Simulated Annealing
import java.util.Random;
public class Experiment1 {
//Input from the seriousjobseeker
private static final int no_of_career_steps = 6;
//Considered as a full-time job for a 3 month duration = 480
hours
private static final int total_ideal_time = 480;
private static final int[] ideal_schedule =
{20,20,40,200,120,80};
//The time before which the jobseeker aspires to find a job
private static final int total_desired_time = 400;
//Values to get from the external database
private static final int[] ct_hpt = {15,15,30,220,110,90};
//Initialized with sample data
private static final int[] ct_skill_reading =
{8,10,37,195,110,120}; //Initialized with sample data
private static final int[] ct_skill_writing =
{15,25,35,235,100,90}; //Initialized with sample data
private static final int[] ct_skill_social = {20,20,50,150,140,
100}; //Initialized with sample data
// Calculate the acceptance probability
private static double acceptanceProbability(double energy, double
newEnergy, double temperature)
{
// If the new solution is better, accept it
if (newEnergy >= energy && newEnergy>0) {
return 1.0;
}
// If the new solution is worse, calculate an acceptance
probability
if(newEnergy > 0)
return Math.exp((-energy + newEnergy) / temperature);
else return -1;
}
private static double getProfit(int [] currentSolution)
{
44
return (1getValidatingPenalty(currentSolution))/(getHPTFactor(currentSolution)+g
etCareerSkillsFactor(currentSolution)+getCriticalityFactor(currentSolut
ion)+getIdealScheduleFactor(currentSolution)+getMotivationFactor(curren
tSolution));
}
private static int[] getNeighbor(int [] current)
{
/*Generate the neighbor by randomly adding 1 to half of the
elements and -1 to the remaining half. If odd, one element
remains unaltered.*/
int [] indices = new int[current.length];
int [] neighbor = new int[current.length];
for(int i=0;i<current.length;i++)
indices[i]=i;
/*Knuth shuffle is used to have a uniformly distributed
random arrangement of the elements of the array*/
indices = shuffle(indices);
//Neighbor function alters only two elements
neighbor[indices[0]] = current[indices[0]]+1;
neighbor[indices[1]] = current[indices[1]]-1;
for(int k=2;k<indices.length;k++)
neighbor[indices[k]] = current[indices[k]];
return neighbor;
}
private static int[] shuffle(int [] indices)
{
for(int i =0; i<indices.length; i++)
{
Random rand = new Random();
int r = rand.nextInt(i+1); //Random number between 0 and i
//Swap the
int temp =
indices[r]
indices[i]
}
return indices;
}
elements at r and i
indices[r];
= indices[i];
= temp;
45
public static void main(String[] args) {
//Simulated Annealing - algorithm starts here
double temperature = 1000000;
double cooling_rate = 0.99999;
double compressionFactor =
(double)total_desired_time/(double)total_ideal_time;
//Initialize with the initial solution
int[] currentSchedule = new int[no_of_career_steps];
currentSchedule[0] = (new
Double(20*compressionFactor)).intValue();
currentSchedule[1] = (new
Double(20*compressionFactor)).intValue();
currentSchedule[2] = (new
Double(40*compressionFactor)).intValue();
currentSchedule[3] = (new
Double(200*compressionFactor)).intValue();
currentSchedule[4] = (new
Double(120*compressionFactor)).intValue();
currentSchedule[5] = (new
Double(80*compressionFactor)).intValue();
display(currentSchedule);
//Setting the best solution as the initial solution
int[] bestSchedule = new int[no_of_career_steps];
bestSchedule[0]=20;
bestSchedule[1]=20;
bestSchedule[2]=40;
bestSchedule[3]=200;
bestSchedule[4]=120;
bestSchedule[5]=80;
double bestProfit = 0.0;//getProfit(bestSchedule);
while(temperature > 1)
{
//Create a neighbor
int[] neighbor = getNeighbor(currentSchedule);
double currentProfit = getProfit(currentSchedule);
double neighborProfit = getProfit(neighbor);
System.out.print("current profit:
"+currentProfit+"\tneighbor profit:
"+neighborProfit);
//Check whether to keep the neighbor
46
if (acceptanceProbability(currentProfit,
neighborProfit, temperature) > 0.999) {
//Keep the neighbor
currentSchedule = neighbor;
System.out.print("\tAccepted\n");
}
else
System.out.print("\t\tRejected\n");
//Check if the current schedule is the best so far
if(currentProfit > bestProfit)
{
bestProfit = currentProfit;
for(int k=0;k<no_of_career_steps;k++)
{
bestSchedule[k] = currentSchedule[k];
}
}
temperature *= cooling_rate;
}
display(bestSchedule);
System.out.println("Best profit: "+bestProfit);
}
private static double getHPTFactor(int [] current)
{
double sum=0;
for(int i=0; i<current.length; i++)
{
sum = sum+
Math.abs((double)ct_hpt[i]/(double)total_ideal_time (double)current[i]/(double)total_desired_time);
}
return Math.abs(sum);
}
private static double getCareerSkillsFactor(int [] current)
{
double sum = 0;
for(int i=0; i<current.length; i++)
{
sum +=
Math.abs(((double)ct_skill_reading[i]+(double)ct_skill_social[i]+(doubl
47
e)ct_skill_writing[i])/(3*(double)total_ideal_time) (double)current[i]/(double)total_desired_time);
}
return Math.abs(sum);
}
private static double getCriticalityFactor(int [] current)
{
//Critical tasks should be compressed more
//Sum of non critical actual career task times
double sum_non_critical =
(current[0]+current[1]+current[2]+current[5])/total_desired
_time - (ideal_schedule[0] + ideal_schedule[1] +
ideal_schedule[2] + ideal_schedule[5])/total_ideal_time;
/*The above value should be big positive to represent more
compression of the non critical tasks*/
double non_critical_factor = 20 - sum_non_critical;
//Sum of critical portions of the schedule
double sum_critical =
(current[4]+current[3])/total_desired_time (ideal_schedule[4] + ideal_schedule[3])/total_ideal_time;
//The above value should be a small positive or negative
/*The resulting factor is critical/non_critical and is
supposed to be as small as possible for improving the
profit of the neighbor*/
return sum_critical/non_critical_factor;
}
private static double getIdealScheduleFactor(int [] current)
{
double sum=0;
for(int i=0; i<current.length; i++)
{
sum = sum+
Math.abs((double)ideal_schedule[i]/(double)total_idea
l_time (double)current[i]/(double)total_desired_time);
}
return Math.abs(sum);
}
48
private static double getMotivationFactor(int [] current)
{
//The non citical tasks should be compressed more
return ((current[0]+current[1]+current[2]+current[5])/total_desire
d_time (ideal_schedule[0]+ideal_schedule[1]+ideal_schedule[2]+idea
l_schedule[5])/total_ideal_time);
}
private static double getValidatingPenalty(int [] current)
{
/* The career task time for none of the career tasks should
be
negative.
Also to keep the career task time close to the
corresponding ideal
career task time with respect to
the proportion its going to make up in the total time we
add penalty appropriately.
These conditions will always be considered while
computing the
neighbor.
*/
int penalty=0;
for(int i=0;i<current.length;i++)
if((current[i]<0) ||
((current[i]+200)/total_desired_time >
ideal_schedule[i]/total_ideal_time))
penalty += 100;
return penalty;
}
private static void display(int [] schedule)
{
System.out.println("\n\nSchedule: ");
System.out.println("Getting Organized: "+schedule[0]+"
hours");
System.out.println("Awareness: "+schedule[1]+" hours");
System.out.println("Self Assessment: "+schedule[2]+"
hours");
System.out.println("Job Search Strategy: "+schedule[3]+"
hours");
System.out.println("Resumes and Portfolios: "+schedule[4]+"
hours");
System.out.println("Interview Preparation: "+schedule[5]+"
hours");
int sum=0;
for(int i=0;i<schedule.length;i++)
49
{
sum += schedule[i];
}
System.out.println("Total number of hours "+sum);
}
}
50
REFERENCES
1. V.S. Gordon, “Simulated Annealing”, from the class “Artificial Intelligence”, California
State University, Fall 2012.
2.
C. Mattiuzzi, “The Serious Jobseeker” – an electronic book on careers, California State
University Sacramento, © 2013.
3. S.J. Russell, P. Norvig, “Artificial Intelligence – A Modern Approach” 3rd Edition,
Prentice Hall, © 2009.
4. R. Buckland, “Simulated Annealing” – lecture video, from the class “Computing – The
Art of Design”, University of New South Wales, retrieved 3/28/2014 (Youtube).
5. “Introduction to Android” - developer’s guide for the open source Android platform,
“developer.android.com”, retrieved 2/12/2014.
6. “Android Guide” - tutorials and documentation using Parse cloud.
7. L. Angrave, “Creative, Serious and Playful Science of Android Apps” – lecture videos,
University of Illinois – Urbana Champaign, “courser.org”, retrieved 2/1/2014.
8. A. Porter, “Programming Mobile Applications for Android Handheld Devices” – lecture
videos, University of Maryland. “courser.org”, retrieved 3/15/2014.
9. R. Sedgewick, “Random Shuffle” – lecture video, from the online class “Algorithms –
Part 1”, Princeton University, “courser.org”, retrieved 2/28/2014.
10. J. Widom, “Relational Design Theory” – lecture videos, from the online class
“Introduction to Databases”, Stanford University, “courser.org”, retrieved 6/6/2013.
11. L. Jacobson, "Simulated Annealing for Beginners", “theprojectspot.com”, retrieved
3/3/2014 (Blog).
12. "Androidplot" - an open source graphing library for building Android applications,
“androidplot.com”, retrieved 2/15/2014.
51
© Copyright 2026 Paperzz