# Function to perform job sequencing with deadlines using a greedy algorithm
job_sequencing <- function(jobs) {
# Sort jobs in descending order of profit
jobs <- jobs[order(-jobs$profit), ]
max_deadline <- max(jobs$deadline)
sequence <- rep(0, max_deadline)
selected_jobs <- vector("list", length = max_deadline)
total_profit <- 0
for (i in 1:nrow(jobs)) {
current_job <- jobs[i, ]
current_deadline <- current_job$deadline
while (current_deadline >= 1) {
if (sequence[current_deadline] == 0) {
sequence[current_deadline] <- i
selected_jobs[[current_deadline]] <- current_job
total_profit <- total_profit + current_job$profit
break
}
current_deadline <- current_deadline - 1
}
}
result <- list(
sequence = sequence,
selected_jobs = selected_jobs,
total_profit = total_profit
)
return(result)
}
# Example usage
jobs_data <- data.frame(
job = c("J1", "J2", "J3", "J4", "J5"),
deadline = c(2, 1, 2, 1, 3),
profit = c(60, 100, 20, 40, 80)
)
result <- job_sequencing(jobs_data)
cat("Job Sequence: ", unlist(result$sequence), "\n")
cat("Total Profit: ", result$total_profit, "\n")