eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingzadanie optymalizacyjneRe: zadanie optymalizacyjne
  • Data: 2012-09-25 22:58:46
    Temat: Re: zadanie optymalizacyjne
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu wtorek, 25 września 2012 22:11:49 UTC+2 użytkownik bartekltg napisał:
    > Trochę gdybania i gorszych metod. Jak Ci się spieszy,
    > leć od razu do 'rozwiązanie właściwe'
    Ok, po mału, bo nie ogarniam :)

    > Super. x1+.. +x8 = 0
    To moja pomyłka, przepraszam.
    > Dalej zakładam, że miało być x1+x2+...+x8 = 1
    Tak, o to chodzilo.
    > Zamiast jeden można podstawić sobie epsylon.
    Tak.
    > Pamiętaj, że wynik będzie najzwyczajniej w świecie
    > proporcjonalny do tego epsylona. To liniowe jest.
    > 100 razy dalej od sum x_i =0, sto razy większy wynik.
    Tak.


    > Minimum jest z tych 3 funkcji, a po czym jest maksimum?
    Maksimum jest po x. Wektor p i sposob budowania macierzy z
    ktos nam narzuca. Mozemy operowac tylko na x.

    > Nie wyzarzaniem;) Już zwykłe MC będzie lepsze:)
    Zgadza się. Moja wersja procedury optymalizacyjnej
    jest dość odlegla od wyzarzania, jednak nie wiem jak
    jak nazwac i mowie "odmiana wyzarzania".

    > Jakakolwiek 'numeryczna' metoda minimalizacji sprawdzi się
    > znacznie lepiej. W końcu to tylko kawałkami liniowe funkcje
    > na 7 (N-1) wymiarowej przestrzeni (a właściwie kostki).
    > F = min( sum z1[j] * x[j],sum z2[j] * x[j], sum z3[j] * x[j] )
    Chyba tak.

    > W dodatku wypukła/wklęsła.
    Raczej niewypukla/niewklesla. Ma dużo plaskich miejsc. Glupia procedura
    optymalizacyjna nie wie gdzie skoczyc gdy jest na plaskim miejscu.

    > Im prostsza, tym lepsza. Matalbowskiego fminsearch trzeba nieco
    > podpuscić, aby to dobrze rozwiązywał.
    Gdy moja podpuszczalem przez rozne modyfikacje funkcji celu, to
    dzialalo ciut gorzej. Moze zle to robilem.

    > Ale nadal, to funkcje liniowe. Gdzie będzie rozwiązanie?
    > Na rogach, na przecięciu f1=f2=f3 i brzegu kostki/warunków
    Nie jest az tak prosto. Czasami dla zadnych x nie zachodzi f1=f2=f3.
    Wtedy rozwiazanie jest np. gdy f1=f2, a f3>f1.

    > sumowania, albo brzego i równości dwóch.
    > W rzeczywistości obstawiam równość wszystkich trzech (mają
    > dodatnie współczynniki...)
    Sprawdzalem, to zwodzi. Czesto jest f1=f2 i f3>f1 dla dowolnych x.




    > Idzmy dalej. Popatrz na to geometrycznie.
    > z1 z2 z3 to takie wektorki sterczące w ściśle dodatnią
    > 'ćwiartkę' przestrzeni. Warunek sum xi = 1 to wybór
    > pewnej hiperpłaszczyzny.
    Jasne.


    > Wybieramy jakiś wektor x z tej płaszczyzny, rzutujemy
    > na wektorki z1,z2,z3 i bierzemy najmniejszy rzut.
    > Bierzemy największy.
    Hmmm nie kumam.

    > x (po prostu z R^N)
    > popatrzmy na 'hipsometry'. Płaszczyzna stałęj wartośći.
    > Weźmy jakąś wartość. b.
    > Wyrysujmy
    > z1*x==b
    > z2*x==b
    > z3*x==b
    Jasne.

    > Wyjdą z tego trzy hiperpłaszczyzny. One nas
    > ograniczają. Jednocześnie próbujemy dostać
    > się jak najbliżej centrum.
    Dlaczego jak najblizej centrum?
    > Powstanie nam fragment wielościanu wypukłego.
    > [Ciach mętna interpretacja geometryczna]
    Bylo ciekawie :)

    > Mamy tutaj zwyczajne zagadnienie programowania liniowego z warunkami:
    > Najpierw je zdefiniujemy, a potem pokażemy, że to to samo.
    > z1*x >= 1
    > z2*x >= 1
    > z3*x >= 1
    W oryginalne bylo zi*x >= 0. zi[j] może zawierac {0,1,p[j]}. Rozumiem
    ze zmieniasz w okreslonym celu.

    > x>0 (w znaczeniu x[i] > 0)
    W oryginale x[i]>=0, ale ok.

    > oraz funkcją celu [1,1,1,1, 1,1,1,1] *x i chcemy ją _minimalizować_
    > Z algorytmu simplex czy jakiejkolwiek innej metody uzyskujesz
    > rozwiązanie x_1 spełniające te warunki i maksymalizujące
    > funkcję celu.
    Nie wiem co oznacza ten zapis [1,1,1...1]*x.

    > Rozwiązaniem oryginalnego problemu jest x_2 = x_1/(suma(x_1)).
    > Dlaczego? No to szkic dowodu:

    > Niech b = 1/suma(x1).
    > Po przeskalowaniu x-ów przez b mamy
    > suma(x_2)=1 i spełnia
    > z1*x_2 >= b
    > z2*x_2 >= b
    > z3*x_2 >= b
    > czyli min (fi,f2,f3)>=b;) Wiemy, że równe.

    > Niech inny x3, taki , ze suma(x3)=1
    > jest lepszym 'maksimum z minimum'
    > z1*x_3 >= c
    > z2*x_3 >= c
    > z3*x_3 >= c
    > c > b

    > Wtedy
    > x3/c spełnia nierówności z programowania liniowego
    > (zi * (x_3/c)) <= 1 oraz
    > sum (x_3/c) = 1/c < 1/b, czyli jest lepszym minimum
    > funkcji celul z programowania liniowego. To jest
    > sprzeczne z tym, że x2 jest rozwiązaniem programowania
    > liniowego.
    Na razie nic nie zrozumialem. Jutro sprobuje jeszcze raz
    przeczytac :)

    Pozdrawiam
    P.S.
    Solver liniowy w arkuszu nie rozwiazuje tego :/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: