Kupera ohjelmointi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 21.11.2021 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Konveksi ohjelmointi on matemaattisen optimoinnin  osakenttä , joka tutkii konveksien funktioiden minimoimisen ongelmaa konveksissa joukoissa . Vaikka monet konveksiohjelmointiongelmien luokat hyväksyvät polynomiaikaiset algoritmit [1] , matemaattinen optimointi on yleensä NP-kovaa [2] [3] [4] .

Konveksilla ohjelmoinnilla on sovelluksia useilla eri aloilla, kuten automaattisissa ohjausjärjestelmissä , signaalien arvioinnissa ja käsittelyssä , tietoliikenteessä ja verkoissa, piiristössä [5] , data-analyysissä ja mallintamisessa, rahoituksessa , tilastoissa ( optimaalinen kokeilusuunnittelu ) [6] ja rakenteellinen optimointi [7] . Tietokonetekniikan ja optimointialgoritmien kehitys on tehnyt konveksista ohjelmoinnista lähes yhtä yksinkertaista kuin lineaarisen ohjelmoinnin [8] .

Määritelmä

Konveksi ohjelmointitehtävä on optimointitehtävä , jossa tavoitefunktio on konveksi ja mahdollisten ratkaisujen alue on konveksi . Funktio , joka kuvaa jonkin osajoukon , on konveksi, jos toimialue on konveksi sekä kaikille että kaikille niiden verkkotunnuksessa . Joukko on kupera, jos sen kaikki alkiot ja mikä tahansa niistä kuuluu myös joukkoon.

Erityisesti kuperan ohjelmoinnin ongelma on löytää joitakin , joista

,

jossa tavoitefunktio on konveksi, kuten myös mahdollisten ratkaisujen joukko [9] [10] . Jos tällainen piste on olemassa, sitä kutsutaan optimipisteeksi . Kaikkien optimipisteiden joukkoa kutsutaan optimijoukoksi . Jos rajaamaton tai infimumia ei saavuteta, optimoinnin sanotaan olevan rajaton . Jos se on tyhjä, puhutaan tehtävästä , jota ei voida hyväksyä [11] .

Vakiomuoto

Konveksin ohjelmointitehtävän sanotaan olevan vakiomuodossa, jos se kirjoitetaan muodossa

Minimoida Ehdoissa

missä on optimointimuuttuja, funktiot ovat konveksia ja funktiot affiineja [11] .

Näissä termeissä funktio on ongelman tavoitefunktio, ja funktioita ja kutsutaan rajoitusfunktioiksi. Optimointitehtävän hyväksyttävä ratkaisujoukko on joukko, joka koostuu kaikista ehdot täyttävistä pisteistä ja . Tämä joukko on konveksi, koska konveksin funktion alitason joukot ovat konveksia, affiiniset joukot ovat myös konveksia ja konveksien joukkojen leikkauspiste on konveksi joukko [12] .

Monet optimointiongelmat voidaan pelkistää tähän vakiomuotoon. Esimerkiksi ongelma koveran funktion maksimoimisesta voidaan muotoilla uudelleen vastaavasti kuin konveksin funktion minimoimisen ongelma , joten konveran joukon koveran funktion maksimointiongelmaa kutsutaan usein konveksiksi ohjelmointiongelmaksi.

Ominaisuudet

Konveksien ohjelmointiongelmien hyödylliset ominaisuudet [13] [11] :

Näitä tuloksia käytetään konveksissa minimointiteoriassa yhdessä funktionaalisen analyysin geometristen käsitteiden kanssa ( Hilbert-avaruuksilla ), kuten Hilbertin projektiolause , tukihypertasolause ja Farkasin lemma .

Esimerkkejä

Seuraavat tehtäväluokat ovat konvekseja ohjelmointiongelmia tai ne voidaan pelkistää konvekseihin ohjelmointiongelmiin yksinkertaisilla muunnoksilla [11] [14] :

Lagrange-kertoimien menetelmä

Tarkastellaan vakiomuodossa annettua kuperaa minimointitehtävää kustannusfunktiolla ja epäyhtälörajoitteilla . Sitten määritelmäalue on:

Lagrange-toiminto ongelmaan

Jokaiselle pisteelle , joka minimoi arvoon , on olemassa reaalilukuja , joita kutsutaan Lagrange-kertoimiksi ja joille seuraavat ehdot täyttyvät samanaikaisesti:

  1. minimoi yli kaiken
  2. ainakin yhden kanssa
  3. (täydentävä ei-jäykkyys).

Jos on olemassa "vahva hyväksyttävä kohta", toisin sanoen piste, joka tyydyttää

niin yllä olevaa väitettä voidaan vahvistaa vaatimaan .

Päinvastoin, jos jotkut täyttävät ehdot (1)-(3) skalaareille , joissa on , se minimoi ehdottomasti .

Algoritmit

Kupera ohjelmointiongelma ratkaistaan ​​seuraavilla moderneilla menetelmillä: [15]

Aligradienttimenetelmät voidaan toteuttaa yksinkertaisesti siksi, että niitä käytetään laajalti [18] [19] . Kaksoisgradienttimenetelmät ovat aligradienttimenetelmiä, joita sovelletaan kaksoisongelmaan . Drift+penalty-menetelmä on samanlainen kuin dual subgradient -menetelmä, mutta käyttää päämuuttujien aikakeskiarvoa.

Laajennukset

Konveksin ohjelmoinnin laajennukset sisältävät optimoinnit kaksoiskuperille , pseudokuperille ja kvasikonveksille funktioille. Laajennuksia konveksianalyysin teoriaan ja iteratiivisia menetelmiä ei-konveksien optimointiongelmien likimääräiseen ratkaisuun esiintyy yleisen konveksiuden alalla , joka tunnetaan abstraktina konveksiana analyysinä.

Katso myös

Muistiinpanot

  1. 1 2 Nesterov ja Nemirovskii, 1994 .
  2. Murty ja Kabadi 1987 , s. 117–129.
  3. Sahni, 1974 , s. 262-279.
  4. Pardalos ja Vavasis, 1991 , s. 15-22.
  5. Boyd ja Vandenberghe 2004 , s. 17.
  6. Christensen, Klarbring, 2008 , s. kappale neljä.
  7. Boyd, Vandenberghe, 2004 .
  8. Boyd ja Vandenberghe 2004 , s. kahdeksan.
  9. Hiriart-Urruty, Lemaréchal, 1996 , s. 291.
  10. Ben-Tal, Nemirovskiĭ, 2001 , s. 335–336.
  11. 1 2 3 4 Boyd, Vandenberghe, 2004 , s. kappale neljä.
  12. Boyd ja Vandenberghe 2004 , s. kappale 2.
  13. Rockafellar, 1993 , s. 183-238.
  14. Agrawal, Verschueren, Diamond, Boyd, 2018 , s. 42–60.
  15. Katso konveksin ohjelmoinnin menetelmiä Irriart-Urrutin ja Lemericalin kirjoista (useita kirjoja) sekä Rushczynskin, Bercekasin ja Boydin ja Vanderbergen kirjoista (sisäpistemenetelmät).
  16. Nesterov, Nemirovskii, 1995 .
  17. Peng, Roos, Terlaky, 2002 , s. 129-171.
  18. Bertsekas, 2009 .
  19. Bertsekas, 2015 .

Kirjallisuus

Linkit