1. A computer implemented method for multi-mission scheduling, the method comprising an act of: causing a computer with a processor and a memory to execute instructions encoded on the memory to cause the processor to perform operations of: compiling a list of a plurality of missions, each of which includes at least one task, and where each mission has a mission value associated with it such that the mission value reflects an ordering priority of the mission; compiling a list of available resources, the available resources being usable for completing tasks; specifying a global time-budget for allocating available resources to complete missions to maximize a total mission value; identifying the mission with the largest mission value; identifying whether the mission includes a task that needs additional resources in order to complete the task; when the mission includes a task that needs additional resources, identifying and scheduling the available resources that can complete the task, then identifying the mission with the next largest mission value and repeating the above procedure beginning with identifying if the mission includes any tasks that need additional resources; when the resources that can complete the task are unavailable, then specifying a task-specific time-budget for a first task, wherein the task-specific time-budget is based on the amount of time remaining in the global time-budget and a value of the mission the first task belongs to; and re-allocating resources among the tasks until can either schedule the task or the task-specific time-budget is exhausted, and if the task-specific time budget is exhausted, then the task is a failed task; identifying whether there are any failed tasks; when there is at least one failed task, then identifying and scheduling the available resources that can complete the task; when the resources that can complete the task are unavailable, then add the task to a list of unscheduled tasks and perform the following acts: identifying a perturbed list, the perturbed list comprising all tasks in the schedule that are currently allocated resources that are sufficient to complete a task in the list of unscheduled tasks; generating a first value of the schedule choosing a task at random from a list selected from a group consisting of the perturbed list and the list of unscheduled tasks; when the task chosen is from the perturbed list, then de-allocating its resources, and if possible, re-allocate other resources chosen at random to the task, and if not possible, remove the task from the perturbed list and put it in the unscheduled list because it no longer has resources allocated to it; when the task chosen is from the list of unscheduled tasks, then allocating resources chosen at random to the task and move it from the unscheduled list to the perturbed list; generating a second value of the schedule; comparing the first value to the second value; when the second value is greater than the first value, then keeping the schedule corresponding to the second value, then identifying the mission with the next largest mission value and repeating the above procedure beginning with identifying whether the mission includes a task that needs additional resources; and when the first value is greater than the second value, then reverting to the schedule that corresponds to the first value, then repeating the above procedure beginning with the act of identifying a perturbed list, such that the procedure is repeated until a predetermined probability threshold is reached, where the predetermined probability threshold is dependent upon the task-specific time-budget; and when all tasks in the mission have been allocated a sufficient amount of resources, then identifying the mission with the next largest mission value and repeating the above procedure beginning with identifying whether the mission includes a task that needs additional resources until all missions in the list of plurality of missions have been scheduled or processed through the above procedure.