Many practical problems are overconstrained, i.e., it is impossible to find a solution that would satisfy all constraints. In such situations one may try to find solutions that satisfy as many constraints as possible, see [1]. In a more general approach one can assign some weights (utilities) to constraints and then look for solutions that maximize the sum of weights of satisfied constraints. The problem of finding such solutions, the Maximum Utility Problem, MUP, is the subject of this paper. We present a number of approximate algorithms for solving this problem. Numerous tests have demonstrated high performance of these algorithms: approximated solutions are, on average, about 2% worse than optimal ones. Our algorithms are local search procedures that iteratively improve the current solution by modifying it. As a heuristic that guides the whole process we use the expected utility value of a solution that can be obtained from the current (partial) solution by extending it to a complete one at random. This heuristic has been motivated by an old algorithm for solving the k-MAXGSAT problem, which was proposed by Johnson, [2].