The exploration---exploitation trade-off is an important aspect of evolutionary algorithms which determines the efficiency and accuracy of these algorithms. Cartesian Genetic Programming (CGP) is a generalization of the graph based genetic programming. It is implemented with mutation only and does not have any possibility to share information among solutions. The main goal of this paper is to present an effective method for balancing the exploration and exploitation of CGP referred to as Balanced Cartesian Genetic Programming (BCGP) by incorporating distinctive features from biogeography-based optimization (BBO) and opposition-based learning. To achieve this goal, we apply BBO's migration operator without considering any modifications in the representation of CGP. This operator has good exploitation ability and can be used to share information among individuals in CGP. In addition, in order to improve the exploration ability of CGP, a new mutation operator is integrated into CGP inspired from the concept of opposition-based learning. Experiments have been conducted on symbolic regression. The experimental results show that the proposed BCGP method outperforms the traditional CGP in terms of accuracy and the convergence speed.