Design of Standalone Micro-Grid Systems Using Teaching Learning Based Optimization