1. A computer-implemented method for optimizing allocation of resources across projects in a project portfolio, comprising: receiving, at a computing device, (i) resource information, (ii) a portfolio of project definitions and (iii) one or more portfolio-level optimization criteria, the resource information representing a plurality of resources available for allocation to the projects, each project definition comprising a unique identifier and one or more project-level constraints; generating, using the computing device, a plurality of project portfolio allocation scenarios by optimizing at least a first objective function and satisfying the one or more project-level constraints corresponding to each project definition, wherein generating each project portfolio allocation scenario comprises: assigning a date value to each of the unique identifiers; and allocating one or more of the plurality of resources to one or more of the unique identifiers, wherein the assignment of the date values and the allocation of the resources to the one or more unique identifiers satisfies the one or more project-level constraints associated with each project definition; and determining, using the computing device, one or more optimized project portfolio allocation scenarios from the plurality of project portfolio allocation scenarios, wherein determining the one or more optimized project portfolio allocation scenarios optimizes a sequence of the projects by optimizing at least a second objective function and satisfying the one or more portfolio-level optimization criteria.