Semidefinite programming (tai SDP englanniksi . Semidefinite programming ) on konveksin ohjelmoinnin alaosa , joka käsittelee lineaarisen tavoitefunktion optimointia (tavoitefunktio on käyttäjän määrittämä funktio, jonka arvoa käyttäjä haluaa minimoida tai maksimoida) positiivisesti puolimäärittyjen matriisien kartioiden leikkaus affiinin avaruuden kanssa .
Puolivarma ohjelmointi on suhteellisen uusi optimointialue, jonka kiinnostus kasvaa useista syistä. Monia käytännön ongelmia operaatiotutkimuksen ja kombinatorisen optimoinnin aloilla voidaan mallintaa tai approksimoida puolimääräisinä ohjelmointiongelmina. Automaattisen ohjauksen teoriassa SDP-ongelmia käytetään lineaaristen matriisiepäyhtälöiden yhteydessä . SDP-ongelmat ovat itse asiassa kartiomaisen ohjelmoinnin erikoistapaus ja ne voidaan ratkaista tehokkaasti sisäpistemenetelmällä . Kaikki lineaariset ohjelmointiongelmat voidaan ilmaista SDP-tehtävinä ja SDP-tehtävähierarkioiden avulla voidaan approksimoida ratkaisuja polynomioptimointitehtäviin. Puolimääräistä ohjelmointia käytetään monimutkaisten järjestelmien optimoinnissa . Viime vuosina joitakin kvanttikyselyn monimutkaisuusongelmia on muotoiltu puolimääräisen ohjelmoinnin kannalta.
Lineaarinen ohjelmointiongelma on ongelma , jossa sinun täytyy maksimoida tai minimoida monitahoisen reaalimuuttujien lineaarinen tavoitefunktio . Puolimääräisessä ohjelmoinnissa käytämme sen sijaan reaalivektoreita ja saamme käyttää vektorien pistetuloa. LP-ongelman reaalimuuttujien ei-negatiivisuuden ehto korvataan SDP-ongelman muuttujien matriisin puolimääräisillä rajoituksilla. Erityisesti yleinen puolimääräinen ohjelmointiongelma voidaan määritellä minkä tahansa muodon matemaattiseksi ohjelmointiongelmaksi
olosuhteissaMatriisin sanotaan olevan positiivinen puolimääräinen , jos se on joidenkin vektorien Gram-matriisi (eli jos on vektoreita , jotka ovat kaikille ). Jos tämä on totta, merkitsemme sen muodossa . Huomaa, että on olemassa joitain muita vastaavia määritelmiä positiiviselle puolimääräiselle matriiseille, esimerkiksi positiivisilla puolimääräisillä matriiseilla on vain ei-negatiiviset ominaisarvot ja niillä on positiivinen puolimääräinen neliöjuuri.
Merkitään kaikkien todellisten symmetristen matriisien avaruudella. Tässä tilassa on sisätuote (missä tarkoittaa jälkiä )
Voimme kirjoittaa edellisen osan matemaattisen ohjelmoinnin tehtävän uudelleen vastaavaan muotoon
olosuhteissajossa matriisielementti on yhtä suuri kuin edellisestä osasta, ja se on matriisi , jolla on edellisen osan arvo matriisielementtinä.
Huomaa, että jos lisäämme muita muuttujia oikein, tämä SDP-tehtävä voidaan muuntaa
olosuhteissaMukavuuden vuoksi SDP-ongelma voidaan määritellä hieman erilaisessa, mutta vastaavassa muodossa. Tehtävämääritykseen voidaan lisätä esimerkiksi lineaarisia lausekkeita, joissa käytetään ei-negatiivisia skalaarimuuttujia . Tehtävä säilyy SDP:nä, koska jokainen muuttuja voidaan sisällyttää matriisiin diagonaalielementtinä ( joillekin ). Varmistaaksesi , voit lisätä rajoituksia kaikille . Toisena esimerkkinä huomaa, että mille tahansa positiiviselle puolimääräiselle matriisille on joukko vektoreita siten, että matriisin elementti on yhtä suuri kuin , vektorien skalaaritulo ja . Siten SDP-ongelmat muotoillaan usein vektorien skalaaritulojen lineaarisina ilmauksina. Kun SDP-ongelmaan on ratkaisu standardimuodossa, vektorit voidaan rekonstruoida ajassa (esimerkiksi käyttämällä Cholesky- matriisin X epätäydellistä hajotusta).
Lineaarisen ohjelmoinnin tapaan, jos yleinen ongelma SDP annetaan muodossa
olosuhteissa(suora ongelma tai P-SDP), määrittelemme dual semidefinite -ongelman (D-SDP)
olosuhteissaJos kahdelle matriisille ja , tarkoittaa .
Heikko duaalisuuslause sanoo, että primaalin SDP: n arvo ei ole pienempi kuin duaalisen SDP:n arvo. Siten mikä tahansa kaksois-SDP-ongelman hyväksyttävä ratkaisu rajoittaa suoran SDP:n arvoa alhaalta, ja päinvastoin, mikä tahansa suoran SDP-ongelman sallittu arvo rajoittaa kaksois-SDP:n arvoa ylhäältä. Tämä tapahtuu, koska
jossa viimeinen epäyhtälö heijastaa sitä tosiasiaa, että molemmat matriisit ovat positiivisia puolimääräisiä. Tämän funktion arvoa kutsutaan joskus kaksoisväliksi.
Slaterin ehtona tunnetussa ehdossa primaali- ja kaksois-SDP-ongelmien arvot ovat samat. Tätä kutsutaan vahvaksi kaksinaisuudesta . Toisin kuin lineaariset ohjelmointiongelmat , jokaisessa SDP-ongelmassa ei ole tiukkaa kaksinaisuutta. Yleisessä tapauksessa kaksoisongelman SDP arvo voi olla tiukasti pienempi kuin suoran ongelman arvo.
(i) Oletetaan, että suora ongelma (P-SDP) on alhaalta rajattu ja tiukasti hyväksyttävä (eli olemassa , sellainen, että , ). Sitten on olemassa optimaalinen ratkaisu kaksoisongelmaan (D-SDP) ja
(ii) Oletetaan, että kaksoisongelma (D-SDP) on ylhäältä päin rajattu ja ehdottomasti hyväksyttävä (eli joillekin ). Sitten on optimaalinen ratkaisu suoralle ongelmalle (P-SDP) ja yhtäläisyys (i):stä pätee.
Tarkastellaan kolmea satunnaismuuttujaa ja . Määritelmän mukaan niiden korrelaatiokertoimet ovat voimassa jos ja vain jos
Oletetaan, että joistakin lähteistä (esimerkiksi empiirisista tai kokeellisista tiedoista) tiedämme, että ja . Pienimmän ja suurimman arvon määrittämisen ongelma voidaan kirjoittaa seuraavasti:
minimoida/maksimoida olosuhteissaTäällä hyväksytään . Ongelma voidaan muotoilla SDP-ongelmaksi. Täydennämme epäyhtälöt laajentamalla muuttujien matriisia ja ottamalla käyttöön lisämuuttujia , esim.
Tämän SDP-ongelman ratkaisemisen jälkeen saamme minimi- ja maksimiarvot ( ja vastaavasti).
Harkitse ongelmaa
minimoida olosuhteissa _missä oletetaan, että klo .
Ottamalla käyttöön lisämuuttujan kirjoitamme ongelman uudelleen muotoon:
minimoida olosuhteissaTässä muotoilussa tavoitefunktio on kahden muuttujan ( ) lineaarinen funktio.
Ensimmäinen rajoitus voidaan kirjoittaa uudelleen muotoon
,jossa matriisi on neliömatriisi, jonka diagonaalissa olevat arvot ovat yhtä suuret kuin vektorin elementit .
Toinen rajoitus voidaan kirjoittaa muodossa
Määrittelemme matriisin seuraavasti
Voimme käyttää Schurin komplementtiteoriaa osoittamaan sen
[yksi]Tämän ongelman puolivarma ohjelmointiongelma on muotoa
minimoida olosuhteissaPuolimääräinen ohjelmointi on tärkeä työkalu NP-kovien maksimointiongelmien approksimaatioalgoritmien luomiseen. Ensimmäisen SDP:hen perustuvan approksimaatioalgoritmin ehdottivat Michel Goemans ja David Williamson [2] . He tutkivat MAX CUT -ongelmaa : Kun graafi G = ( V , E ), V : n kärjet on jaettava kahteen osaan siten, että nämä kaksi osaa yhdistävien reunojen lukumäärä on maksimoitu. Ongelmaa voidaan pitää kokonaisluvun neliöllisen ohjelmoinnin ongelmana :
Maksimoi mitä tahansa .Ellei P = NP , emme voi ratkaista tätä ongelmaa tehokkaasti. Goemans ja Williamson hahmottelivat kuitenkin kolmivaiheisen menettelyn tällaisen ongelman torjumiseksi:
MAX CUT -ongelmalle luonnollisin rentoutuminen on
for , jossa maksimointi suoritetaan vektoreiden eikä skalaarien kokonaislukumuuttujien avulla.Ongelma on SDP-ongelma, koska sekä tavoitefunktio että rajoitukset ovat vektorien skalaaritulojen lineaarisia funktioita. SDP-ongelman ratkaisu antaa joukon yksikkövektoreita . Koska vektorit eivät välttämättä ole kollineaarisia, relaksoidun tehtävän arvo voi olla vain suurempi kuin alkuperäisen kokonaisluvun toisen asteen ohjelmointitehtävän arvo. Jaon saamiseksi tarvitaan lopullinen pyöristys. Goemans ja Williamson valitsevat satunnaisen hypertason (käyttämällä tasaista jakautumista) origosta ja jakavat kärjet niiden sijainnin perusteella suhteessa kyseiseen tasoon. Suora analyysi osoittaa, että tämä menettely antaa odotetun approksimaatiokertoimen 0,87856 - e. (Leikkauksen odotusarvo on yhtä suuri kuin niiden todennäköisyyksien kaikkien reunojen summa, että reuna tulee leikkaukseen, ja tämä odotus on verrannollinen kulman vektorien väliseen kulmaan reunan päätypisteissä. Jos tätä todennäköisyyttä verrataan , suhteen odotus on aina vähintään 0,87856.) Olettaen ainutlaatuisen pelin oikeellisuushypoteesi, voidaan osoittaa, että tämän approksimaatiokerroin on pääosin optimaalinen.
Goemansin ja Williamsonin julkaisun jälkeen SDP-ongelmia on sovellettu useiden approksimaatioalgoritmien kehittämiseen. Prasad Raghavendra kehitti äskettäin yleisen järjestelmän rajoitteiden tyytyväisyysongelmiin perustuen ainutlaatuiseen pelihypoteesiin [3] .
SDP-ongelmien ratkaisemiseen on useita erilaisia algoritmeja. Näiden algoritmien tulos on SDP-tehtävän arvo enintään , joka saadaan ajassa, joka riippuu polynomiaalisesti tehtävän koosta ja .
Useimmat ratkaisujärjestelmät perustuvat sisäpistemenetelmään (CSDP, SeDuMi, SDPT3, DSDP, SDPA), joka on vankka ja tehokas yleisiin lineaarisiin SDP-ongelmiin. Lähestymistavan käyttöä rajoittaa se seikka, että algoritmit ovat toisen asteen menetelmiä ja vaativat suuria (ja usein tiheitä) matriisien muistamista ja hajottamista.
Ensimmäisen asteen menetelmät kartiomaiseen optimointiin välttävät suurten Hessin matriisien tallentamista ja hajottamista, ja niitä voidaan soveltaa paljon suurempiin ongelmiin kuin sisäpistemenetelmät tarkkuuden menettämisen kustannuksella. Menetelmä on toteutettu "SCS-ratkaisija"-järjestelmässä.
SDP-ongelma on muotoiltu ei-sileäksi optimointiongelmaksi ja se ratkaistaan spektrisädemenetelmällä. Tämä lähestymistapa on erittäin tehokas tietyissä lineaaristen SDP-ongelmien luokissa.
Yleistettyyn Lagrangian menetelmään (PENSDP) perustuvat algoritmit ovat käyttäytymiseltään samanlaisia kuin sisäpistemenetelmät ja niitä voidaan mukauttaa joihinkin erittäin suuriin ongelmiin. Muut algoritmit käyttävät matalan tason tietoa ja muotoilevat SDP-ongelman uudelleen epälineaariseksi ohjelmointiongelmaksi (SPDLR).
Puolimääräistä ohjelmointia on käytetty likimääräisten ratkaisujen löytämiseen kombinatorisiin optimointiongelmiin, kuten maksimileikkaustehtävän ratkaisemiseen approksimaatiokertoimella 0,87856. SDP-ongelmia käytetään myös geometriassa tensegrity-graafien määrittelemiseen, ja ne esiintyvät säätöteoriassa lineaarimatriisi-epäyhtälöinä .
Optimointimenetelmät _ | |
---|---|
Yksiulotteinen |
|
Nolla järjestys | |
Ensimmäinen tilaus | |
toinen tilaus | |
Stokastinen | |
Lineaariset ohjelmointimenetelmät _ | |
Epälineaariset ohjelmointimenetelmät |