Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • Prev by Date: Re: Re: Re: Another question on lists
  • Next by Date: Re: Re: Re: Another question on lists
  • Previous by thread: Re: Problems minimizing an overconstrained system
  • Next by thread: Mistake in applying a rule