This paper presents a novel precoding approach for MIMO broadcast channels, in which is performed on both sides of the wireless link. The aim of the proposed approach is to avoid the same precoding vectors choice when all users use a common codebook. In the proposal approach, firstly, we focus on the brute codeword selection at the transmitter side, thus there is zero probability to choose the same vector for more than one user. However, this solution leads an exhaustive search, especially when the number of user and the codebook size increase. To overcome this issue, secondly, we adopt the genetic algorithm in order to reduce the codeword search complexity. Compared with zero-forcing beamforming (ZFBF), the conducted simulation results for the critical scenario of low SNR, show that our scheme is better than ZFBF with the assumption of both perfect and partial channel state information at the transmitter.