Most current structural design codes are based on the concept of limit states, that is, when a structure fails to meet one of its purposes, it is said that it has reached its limit state. In the design of reinforced concrete structures, the Ultimate Limit State (ULS) and the Serviceability Limit State (SLS) must be checked. Therefore, this paper presents an optimization scheme for reinforced concrete plane frames, in which the objective is to minimize the cost of structures for three cases of constraints: the first is related to ULS and SLS; the second refers only to the ULS; and the third is related only to the SLS. Computational routines for checking limit states of beams and columns are implemented in MATLAB, following the requirements of the Brazilian code. Structural analyses are performed by using the MASTAN2 software, taking into account geometric nonlinearities and a simplified physical nonlinearity method. The objective function considers the cost of concrete, reinforcement and formwork, and the optimization problems are solved by genetic algorithms. Two numerical examples of frames are presented. Regarding the optimal characteristics related to each type of limit state, it is noted that the beams and columns tend to have larger and more reinforced cross sections in the case of the ULS. Even so, optimal structures related to the ULS often do not satisfy SLS and vice versa, which indicates that the optimal characteristics related to each limit state may be different. In addition, it is observed that the SLS is less restrictive than ULS.