eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingzadanie optymalizacyjneRe: zadanie optymalizacyjne
  • Date: Tue, 25 Sep 2012 19:47:40 +0200
    From: Kacper Rzepecki <n...@k...pl>
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907
    Thunderbird/15.0.1
    MIME-Version: 1.0
    Newsgroups: pl.comp.programming
    Subject: Re: zadanie optymalizacyjne
    References: <2...@g...com>
    In-Reply-To: <2...@g...com>
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    NNTP-Posting-Host: 87.52.53.241
    Message-ID: <5061ee3b$1@news.home.net.pl>
    X-Trace: news.home.net.pl 1348595259 87.52.53.241 (25 Sep 2012 19:47:39 +0200)
    Organization: home.pl news server
    Lines: 62
    X-Authenticated-User: kacperrzepecki
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!nf1.ipartners.pl!ipartners.pl!news.home.net.pl!not-for-mai
    l
    Xref: news-archive.icm.edu.pl pl.comp.programming:199575
    [ ukryj 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: