function G_min = objective(m_, CO, CO2, H2O, H2, m, T, p, p0, R)
% unknown masses m_CO2, m_CO, m_H2O, m_H2 and molar mass M_tot of mixture
% inital values in array m_ in kg and kg/kmol

% initial values
m_CO2 = m_(1);
m_CO = m_(2); 
m_H2O = m_(3);
m_H2 = m_(4);
M_tot = m_(5);

% minimizing Gibbs free enthalpy
G(1) = m_CO2 * (CO2.Delta_f_G0/CO2.M + R * T/CO2.M * log((m_CO2 * M_tot/(m * CO2.M)) * p/p0))*10^3;
G(4) = m_H2 * (H2.Delta_f_G0/H2.M + R * T/H2.M * log((m_H2 * M_tot/(m * H2.M)) * p/p0))*10^3; 
G(2) = m_CO * (CO.Delta_f_G0/CO.M + R * T/CO.M * log((m_CO * M_tot/(m * CO.M)) * p/p0))*10^3; 
G(3) = m_H2O * (H2O.Delta_f_G0/H2O.M + R * T/H2O.M * log((m_H2O * M_tot/(m * H2O.M)) * p/p0))*10^3; 

% objective function Gibbs enthalpy G_min of the system
G_min = G(1) + G(2) + G(3) + G(4);
end