Re: Problems minimizing an overconstrained system
- To: mathgroup at smc.vnet.net
- Subject: [mg80683] Re: Problems minimizing an overconstrained system
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Tue, 28 Aug 2007 06:44:39 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <fb0erc$eo6$1@smc.vnet.net>
Yaroslav Bulatov wrote: > I'm getting problems using FindMinimum when there are multiple active > constraints at the minimum point. Here's a test case that demonstrates > this problem > > FindMinimum[{Max[p[1], p[3]], > p[1] + p[2] + p[3] == 1 && 1/10 <= p[3] <= 4/5 && p[1] == 4/5 && > p[2] == 1/10}, {p[1], p[2], p[3]}] > > fails with " There are no points that satisfy the constraints", while > different objective function with the same constraints works -- > > FindMinimum[{p[1] + p[3], > p[1] + p[2] + p[3] == 1 && 1/10 <= p[3] <= 4/5 && p[1] == 4/5 && > p[2] == 1/10}, {p[1], p[2], p[3]}] > > Is there any way around this behavior? Your example is not representative of any failure from *FindMinimum* for what you posted is not a minimization problem: All the "variables" but one have fixed values (p[1] == 4/5, always, and p[2] == 1/10, always) and the equation p[1] + p[2] + p[3] == 1 has for unique solution p[3] == 1/10, always. Then, you can add whatever you want as "constraints" and "objectives", at best you will get p[1] == 4/5, p[2] == 1/10, and p[3] == 1/10. Now, if you attempt to solve a genuine optimization problem, contrary to your claim, FindMinimum does not have any trouble handling "multiple active constraints" correctly (at least in the example below). In[1]:= FindMinimum[{Max[p[1], p[3]], p[1] + p[2] + p[3] == 1 && 1/10 <= p[3] <= 4/5 && 0 < p[1] < 1 && 0 < p[2] < 1}, {p[1], p[2], p[3]}] Out[1]= {0.1, {p[1] -> 0.0277053, p[2] -> 0.872295, p[3] -> 0.1}} -- Jean-Marc