eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingzadanie optymalizacyjneRe: zadanie optymalizacyjne
  • Data: 2012-09-25 19:47:40
    Temat: Re: zadanie optymalizacyjne
    Od: Kacper Rzepecki <n...@k...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 2012-09-25 13:22, M.M. wrote:
    > Jest N-elementowy ciag parametrow p[1..N] i N-elementowy ciag argumentow x[1..N]. W
    moim problemie obecnie N jest rowne 8, ale potem bedzie wieksze. Zarowno parametry
    jak i argumenty to liczby rzeczywiste. Parametry p sa z przedzialu 1 <= p <= P, gdzie
    P z reguly jest mniejsze od 10. Suma argumentow x zawsze musi byc rowna zero z
    dokladnoscia przynajmniej czterech miejsc po przecinku (najlepiej szesciu). Ponadto
    kazdy argument x musi byc wiekszy lub rowny zero.
    >
    > Jest kilka funkcji liniowych (obecnie mam trzy, ale bedzie wiecej):
    > f1(p,x) = suma od 1 do N z1[j] * x[j];
    > f2(p,x) = suma od 1 do N z2[j] * x[j];
    > f3(p,x) = suma od 1 do N z3[j] * x[j];
    > gdzie zi[j] moze przyjmowac wartosc zero, jeden, albo p[j].
    >
    > Ciagi p i z sa danymi w zadaniu. Szukamy takiego ciagu x ktory zmaksymalizuje
    minimum:
    > max( min( f1, f2 , f3 )).
    >
    > Dostosowalem do tego zdania symulowane wyzarzanie. Znajduje rozwiazanie po okolo
    50mln iteracji, co zajmuje na procesorze i3 okolo 4-5 sekund. Niestety dopuszczalny
    czas to 0.03s.
    >
    > Da sie to jakos szybciej policzyc?
    > Pozdrawiam!
    >
    >


    Popraw mnie, jeżeli się mylę ale czy nie da się przekształcić tego
    problemu do serii problemów programowania liniowego? W każdym problemie
    zakładasz że jedna z twoich funkcji f jest minimalna (i zabezpieczasz to
    założenie odpowiednimi ograniczeniami) po czym dokonujesz jej
    maksymalizacji.

    Załóżmy, że funkcji f i wektorów z mamy K. Układasz K problemów PL z
    których każdy jest postaci (k=1..K):

    max f_k

    przy ograniczeniach:

    (minimalnosc funkcji f_k)
    f_k <= f_1
    ...
    f_k <=f_K

    (definicje funkcji f)
    f_1 = sum(z1 * x)
    ...
    f_K = sum(z_K * x)

    (ograniczenia na x)
    sum(x) = 1
    x>=0

    Rozwiązujesz każdy z problemów, uzyskujesz K wyników, wybierasz
    najmniejszy.

    Plusy są takie, że po pierwsze twoje rozwiązanie jest dokładne, po
    drugie odrywasz się od ograniczenia na wartości parametru p. Jeżeli
    chodzi o wydajność... to musisz przetestować :) Coś mi umknęło?


    --
    Pozdrawiam
    Kacper Rzepecki




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: