Re: Problems minimizing an overconstrained system
- To: mathgroup at smc.vnet.net
- Subject: [mg80715] Re: Problems minimizing an overconstrained system
- From: Yaroslav Bulatov <yaroslavvb at gmail.com>
- Date: Thu, 30 Aug 2007 02:28:14 -0400 (EDT)
- References: <fb0erc$eo6$1@smc.vnet.net><fb0ul5$jia$1@smc.vnet.net>
That was the simplest example which could demonstrate the problem. A more realistic example is below. It seems that FindMinimum fails whenever there are redundant constraints (ie, x1<=a, x1==a). The simplest solution I found is to use "Reduce" on the set of constraints to get rid of any redundant ones. cons = (p[1] + p[2] + p[3] == 1) && (p[4] + p[5] + p[6] == 1) && (p[7] + p[8] + p[9] == 1) && 1/10 <= p[1] <= 4/5 && 1/10 <= p[2] <= 4/5 && 1/10 <= p[3] <= 4/5 && 1/10 <= p[4] <= 4/5 && 1/10 <= p[5] <= 4/5 && 1/10 <= p[6] <= 4/5 && 1/10 <= p[7] <= 4/5 && 1/10 <= p[8] <= 4/5 && 1/10 <= p[9] <= 4/5 && p[1] == 8/10; initial = {{p[1], 8/10}, {p[2], 1/10}, {p[3], 1/10}, {p[4], 1/3}, {p[5], 1/3}, {p[6], 1/3}, {p[7], 1/3}, {p[8], 1/3}, {p[9], 1/3}}; FindMinimum[{Max[1, (p[2] p[4])/(p[1] p[5]), (p[1] p[5])/( p[2] p[4]), (p[3] p[4])/(p[1] p[6]), (p[3] p[5])/(p[2] p[6]), ( p[1] p[6])/(p[3] p[4]), (p[2] p[6])/(p[3] p[5]), (p[2] p[7])/( p[1] p[8]), (p[5] p[7])/(p[4] p[8]), (p[1] p[8])/(p[2] p[7]), ( p[4] p[8])/(p[5] p[7]), (p[3] p[7])/(p[1] p[9]), (p[6] p[7])/( p[4] p[9]), (p[3] p[8])/(p[2] p[9]), (p[6] p[8])/(p[5] p[9]), ( p[1] p[9])/(p[3] p[7]), (p[4] p[9])/(p[6] p[7]), (p[2] p[9])/( p[3] p[8]), (p[5] p[9])/(p[6] p[8])], cons}, initial] cons /. Rule @@@ initial ---- cons = (p[1] + p[2] + p[3] == 1) && (p[4] + p[5] + p[6] == 1) && (p[7] + p[8] + p[9] == 1) && 1/10 <= p[1] <= 4/5 && 1/10 <= p[2] <= 4/5 && 1/10 <= p[3] <= 4/5 && 1/10 <= p[4] <= 4/5 && 1/10 <= p[5] <= 4/5 && 1/10 <= p[6] <= 4/5 && 1/10 <= p[7] <= 4/5 && 1/10 <= p[8] <= 4/5 && 1/10 <= p[9] <= 4/5 && p[1] == 4/5; initial = {{p[1], 8/10}, {p[2], 1/10}, {p[3], 1/10}, {p[4], 1/3}, {p[5], 1/3}, {p[6], 1/3}, {p[7], 1/3}, {p[8], 1/3}, {p[9], 1/3}}; FindMinimum[{Max[1, (p[2] p[4])/(p[1] p[5]), (p[1] p[5])/( p[2] p[4]), (p[3] p[4])/(p[1] p[6]), (p[3] p[5])/(p[2] p[6]), ( p[1] p[6])/(p[3] p[4]), (p[2] p[6])/(p[3] p[5]), (p[2] p[7])/( p[1] p[8]), (p[5] p[7])/(p[4] p[8]), (p[1] p[8])/(p[2] p[7]), ( p[4] p[8])/(p[5] p[7]), (p[3] p[7])/(p[1] p[9]), (p[6] p[7])/( p[4] p[9]), (p[3] p[8])/(p[2] p[9]), (p[6] p[8])/(p[5] p[9]), ( p[1] p[9])/(p[3] p[7]), (p[4] p[9])/(p[6] p[7]), (p[2] p[9])/( p[3] p[8]), (p[5] p[9])/(p[6] p[8])], Reduce[cons, p[#] & /@ Range[9]]}, initial] cons /. Rule @@@ initial