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