public String run_next(Time time, int tick)
        {
            String log_text = "";

            if (cur_process != null)
            {
                cur_process.running(tick);
                if (cur_process.complexity.ToMsec() == cur_process.time_worked.ToMsec())
                {
                    log_text = log_text + " Process " + cur_process.id + " done! Time worked: " + cur_process.time_worked.ToString() + ".\n";
                    cur_process.solve(time);
                    done_processes.Add(cur_process);
                    processes_queue.Remove(cur_process);
                    cur_process = null;
                    return(log_text);
                }
            }
            else
            {
                if (processes_queue.Count > 0)
                {
                    cur_process = processes_queue[0];
                    cur_process.run(time);
                    cur_process.running(tick);
                    log_text = log_text + " Process " + cur_process.id + " starts.\n";
                }
                else
                {
                    log_text = log_text + " Waiting for processes.\n";
                }
            }
            return(log_text);
        }