Huom! Jotta tämän sivun kaavojen alaindeksit ja eksponentit näkyisivät oikein, HTML 3:n soveltuvin osin hallitseva selain on tarpeen. TKK:n atk-keskuksen koneissa sellaisia ovat Arena ja Netscape 2.0, jotka käynnistyvät komennoilla arena ja netscape2.

Lisää esimerkkejä Groebner-kantojen käytöstä rajoitetussa optimoinnissa

Tarkastellaan seuraavia rajoitetun optimoinnin esimerkkejä lähteestä [4]: Osassa niistä ääriarvot saadaan laskettua, osassa Groebner-kanta-menetelmä ei tuota tulosta.



Esimerkki 28

Ensiksi yksinkertainen esimerkki numero 28: lasketaan funktion (x1 + x2)2 + (x2 + x3)2 ääriarvot rajoitusehdolla x1 + 2x2 + 3x3 - 1 = 0.
> lagr((x1+x2)^2+(x2+x3)^2, x1+2*x2+3*x3-1, [], verbose);

The equations are:
[2*x1+2*x2-lambda_[1], 2*x1+4*x2+2*x3-2*lambda_[1], 2*x2+2*x3-3*lambda_[1], -x1
-2*x2-3*x3+1]

The Groebner bases are:
[[2*x1-1, 2*x2+1, 2*x3-1, lambda_[1]]]

The critical points are:
{{x2 = -1/2, x1 = 1/2, x3 = 1/2}}


           Maximum point, maximum value, minimum point, minimum value:

    [{x2 = -1/2, x1 = 1/2, x3 = 1/2}, 0, {x2 = -1/2, x1 = 1/2, x3 = 1/2}, 0]

Tässä tapauksessa kriittisiä pisteitä on vain yksi. Äärettömyydessä selvästi kohdefunktio lähestyy ääretöntä, joten kyseessä on minimi.


Esimerkki 27

Lasketaan funktion 0,01(x1 - 1)2 + (x2 - x12)2 ääriarvot rajoitusehdolla x1 + x32 + 1 = 0.
> lagr(0.01*(x1-1)^2+(x2-x1^2)^2, x1+x3^2+1, [], verbose);

The equations are:
[.2e-1*x1-.2e-1-4*(x2-x1^2)*x1-lambda_[1], 2*x2-2*x1^2, -2*lambda_[1]*x3, -x1-
x3^2-1]

Error, (in factor/factor) floats not handled

Koska Groebner-kanta-menetelmä on "tarkka" menetelmä, liukulukuja ei voi käyttää. Muutetaan kerroin 0,01 murtoluvuksi:
> lagr((x1-1)^2/100+(x2-x1^2)^2, x1+x3^2+1, [], verbose);

The equations are:
[1/50*x1-1/50-4*(x2-x1^2)*x1-lambda_[1], 2*x2-2*x1^2, -2*lambda_[1]*x3, -x1-x3^
2-1]

The Groebner bases are:
[[x1+1, x2-1, x3, 1+25*lambda_[1]], [x1-1, x2-1, 2+x3^2, lambda_[1]]]

The critical points are:
{{x2 = 1, x1 = -1, x3 = 0}, {x1 = 1, x2 = 1, x3 = I*2^(1/2)}, {x1 = 1, x2 = 1, 
x3 = -I*2^(1/2)}}


           Maximum point, maximum value, minimum point, minimum value:

                                                                  1/2
       [{x2 = 1, x1 = -1, x3 = 0}, 1/25, {x1 = 1, x2 = 1, x3 = I 2   }, 0]

Raja-arvo äärettömyydessä on tässäkin ääretön. Minimi on siis 0.


Esimerkki 26

Lähes yhtä yksinkertaisen näköinen esimerkki 26, funktion (x1 - x2)2 + (x2 - x3)4 ääriarvojen laskeminen rajoitusehdolla (1 + x22)x1 + x34 - 3 = 0, puolestaan ei ratkennut kolmessa CPU-tunnissa cypressillä.
> lagr((x1-x2)^2+(x2-x3)^4, (1+x2^2)*x1+x3^4-3,[],verbose);
The equations are:
[2*x1-2*x2-lambda_[1]*(1+x2^2), -2*x1+2*x2+4*(x2-x3)^3-2*lambda_[1]*x1*x2, -4*(
x2-x3)^3-4*lambda_[1]*x3^3, -(1+x2^2)*x1-x3^4+3]

Jos lasku keskeytetään, saadaan fsolvella yksi ratkaisu, jossa kohdefunktio saavuttaa ilmeisen miniminsä, nollan:

> fsolve({2*x1-2*x2-lambda_[1]*(1+x2^2), -2*x1+2*x2+4*(x2-x3)^3-2*lambda_[1]*x2*x1, -4*(x2-x3)^3-4*lambda_[1]*x3^3, -(1+x2^2)*x1-x3^4+3}); {x1 = 1., x2 = 1., x3 = 1., lambda_[1] = 0}

Tehtävällä on kuitenkin myös toinen minimikohta,
  x1 = x2 = x3 = (a-b)1/3 - (a+b)1/3 - 2/3,
missä
  a = (139/108)1/2,    b = 61/54,
jossa kohdefunktio saa arvon nolla.
[4]


Esimerkki 78

Monimutkaisempi tehtävä, funktion x1x2x3x4x5 optimoiminen rajoitusehdoilla
  x12 + x22 + x32 + x42 + x52 - 10 = 0
  x2x3 - 5x4x5 = 0
  x13 + x23 + 1 = 0
ei myöskään ottanut ratketakseen kohtuullisessa ajassa.
> lagr(x1*x2*x3*x4*x5, [x1^2+x2^2+x3^2+x4^2+x5^2-10, x2*x3-5*x4*x5, 
       x1^3+x2^3+1],[],verbose);

The equations are:
[x1*x2*x4*x5-2*lambda_[1]*x3-lambda_[2]*x2, x2*x3*x4*x5-2*lambda_[1]*x1-3*
lambda_[3]*x1^2, x1*x3*x4*x5-2*lambda_[1]*x2-lambda_[2]*x3-3*lambda_[3]*x2^2, 
x1*x2*x3*x5-2*lambda_[1]*x4+5*lambda_[2]*x5, x1*x2*x3*x4-2*lambda_[1]*x5+5*
lambda_[2]*x4, -x1^2-x2^2-x3^2-x4^2-x5^2+10, -x2*x3+5*x4*x5, -x1^3-x2^3-1]


Esimerkki 79

Neliöjuurilausekkeen sisältänyt tehtävä, funktion
  (x1 - 1)2 + (x1 - x2)2 + (x2 - x3)2 + (x3 - x4)4 + (x4 - x5)4
ääriarvojen hakeminen rajoitusehdoilla
  x1 + x22 + x33 - 2 - 3(21/2) = 0
  x2 - x32 + x4 + 2 - 2(21/2) = 0
  x1x5 - 2 = 0
ei sekään onnistunut:
> hs79f:=(x1-1)^2+(x1-x2)^2+(x2-x3)^2+(x3-x4)^4+(x4-x5)^4;

                      2            2            2            4            4
     hs79f := (x1 - 1)  + (x1 - x2)  + (x2 - x3)  + (x3 - x4)  + (x4 - x5)
> fs79g:=[x1+x2^2+x3^3-2-3*sqrt(2), x2-x3^2+x4+2-2*sqrt(2), x1*x5-2];

                   2     3          1/2         2               1/2
  fs79g := [x1 + x2  + x3  - 2 - 3 2   , x2 - x3  + x4 + 2 - 2 2   , x1 x5 - 2]
> lagr(hs79f,fs79g,[],verbose);

The equations are:
[-4*(x3-x4)^3+4*(x4-x5)^3-lambda_[2], 4*x1-2-2*x2-lambda_[1]-lambda_[3]*x5, -2*
x1+4*x2-2*x3-2*lambda_[1]*x2-lambda_[2], -2*x2+2*x3+4*(x3-x4)^3-3*lambda_[1]*x3
^2+2*lambda_[2]*x3, -4*(x4-x5)^3-lambda_[3]*x1, -x1-x2^2-x3^3+2+3*2^(1/2), -x2+
x3^2-x4-2+2*2^(1/2), -x1*x5+2]


Tehtävä 35

Tämä ns. Bealen probleema, funktion
      9 - 8x1 - 6 x2 - 4x3 + 2x1x2 + 2x2x2 + x3x2 + 2x1x2 + 2x1x3
optimoiminen rajoitusehdoilla
      3 - x1 - x2 - 2x3 >= 0
      0 =< xi,    i = 1, 2, 3
sisältää epäyhtälörajoituksia, eikä Lagrangen menetelmä tule nyt kyseeseen. Koska lähdeteoksesta nähdään, että optimi löytyy tasolta
(1)   3 - x1 - x2 - 2x3 = 0
muutetaan rajoitusehtoja: vaaditaan ainoastaan ehto (1).
> hs35f:=9-8*x1-6*x2-4*x3+2*x1^2+2*x2^2+x3^2+2*x1*x2+2*x1*x3;

                                          2       2     2
    hs35f := 9 - 8 x1 - 6 x2 - 4 x3 + 2 x1  + 2 x2  + x3  + 2 x1 x2 + 2 x1 x3

> hs35g:=3-x1-x2-2*x3;

                           hs35g := 3 - x1 - x2 - 2 x3

> lagr(hs35f, hs35g, [], verbose);

The equations are:
[-8+4*x1+2*x2+2*x3+lambda_[1], -4+2*x3+2*x1+2*lambda_[1], -6+4*x2+2*x1+lambda_[
1], -3+x1+x2+2*x3]

The Groebner bases are:
[[3*x1-4, 9*x3-4, 9*x2-7, 9*lambda_[1]-2]]

The critical points are:
{{x1 = 4/3, x3 = 4/9, x2 = 7/9}}


           Maximum point, maximum value, minimum point, minimum value:

   [{x1 = 4/3, x3 = 4/9, x2 = 7/9}, 1/9, {x1 = 4/3, x3 = 4/9, x2 = 7/9}, 1/9]


Esimerkki 52

Etsitään nyt funktion
  (4x1 - x2)2 + (x2 + x3 - 2)2 + (x4 - 1)2 + (x5 - 1)2
rajoitusehdoilla
  x1 + 3x2 = 0
  x3 + x4 - 2x5 = 0
  x2 - x5 = 0.

> hs52f:=(4*x1-x2)^2+(x2+x3-2)^2+(x4-1)^2+(x5-1)^2;

                             2                2           2           2
         hs52f := (4 x1 - x2)  + (x2 + x3 - 2)  + (x4 - 1)  + (x5 - 1)

> hs52g:=[x1+3*x2, x3+x4-2*x5, x2-x5];

                  hs52g := [x1 + 3 x2, x3 + x4 - 2 x5, x2 - x5]

> lagr(hs52f, hs52g, [], verbose);

The equations are:
[32*x1-8*x2-lambda_[1], 2*x2+2*x3-4-lambda_[2], -8*x1+4*x2+2*x3-4-3*lambda_[1]-
lambda_[3], 2*x4-2-lambda_[2], 2*x5-2+2*lambda_[2]+lambda_[3], -x1-3*x2, -x3-x4
+2*x5, -x2+x5]

The Groebner bases are:
[[349*x1+33, 349*x3-180, 349*x2-11, 349*x4+158, 349*x5-11, 349*lambda_[1]+1144
, 349*lambda_[2]+1014, -2704+349*lambda_[3]]]

The critical points are:
{{x4 = -158/349, x3 = 180/349, x5 = 11/349, x2 = 11/349, x1 = -33/349}}


           Maximum point, maximum value, minimum point, minimum value:

                 158       180        11        11          33   1859
        [{x4 = - ---, x3 = ---, x5 = ---, x2 = ---, x1 = - ---}, ----,
                 349       349       349       349         349    349

                    158       180        11        11          33   1859
            {x4 = - ---, x3 = ---, x5 = ---, x2 = ---, x1 = - ---}, ----]
                    349       349       349       349         349    349

Eiköhän jo alkaisi olla
yhteenvedon aika.
Kenrick Bingham 18.5.1996