Optimal design of a membrane separation process using signomial programming