1. A computer-implemented method for identifying fiber paths in a communications network, the computer implemented method comprising: identifying, by at least one processor, existing paths and nodes in the communications network; identifying, by the at least one processor, potential customer nodes in the communications network, wherein each potential customer node is associated with a respective revenue value, each potential customer further requiring at least one of: a first working path; and a second working path and a protection path; identifying potential paths and nodes between the existing paths and nodes of the communications network and the potential customer nodes, wherein each potential path comprises at least one of a potential working path and a potential protection path; determining, by the at least one processor, a cost for each identified potential working path in the communications network; determining, by the at least one processor, a cost for each identified potential protection path in the communications network; providing, by the at least one processor, one or more constraints to prohibit the existence of a potential working path and a potential protection path between two given nodes in the communications network if the potential working path and the potential protection path are traversing the two given nodes in the same direction; applying, by the at least one processor, a mixed linear-integer algorithm to the identified existing paths and nodes, the identified potential customer nodes and respective revenue values, the identified potential working paths and respective costs, the identified potential protection paths and respective costs, and the one or more constraints; and identifying, by the at least one processor and from the algorithm, potential customers and potential paths necessary to maximize the net present value of the communications network.