mgr, funkcja genetyczna ze zmienna liczebnoscia populacji

Odpowiedz Nowy wątek
2006-08-22 13:39
0

witam.
jestescie moja ostatnia nadzieja.
pisze program realizujacy funkcje genetyczna ze zmienna liczebnoscia populacji.
korzystam z tablic dynamicznych (tylko tak moge symulowac zmienna liczebnosc w tablicach)
mam go juz prawie gotowego ale... no wlasnie ale.
mam dwie tablice osobniki i potomki. osobniki sa najpierw losowane pozniej zachodzi operacja mutacji i krzyzowania niektorych osobnikow wynikiem tego sa nowe osobniki ktore sa umieszczane w potomkach.
wszystko dziala jak trzeba do momentu gdy chcĘ potomki dodac do osobnikow a co najsmieszniejsze gdy nie robie tego w petli (jedno przejscie programu) wszystko jest ladnie moge klikac i klikac program dziala jak trzeba, program sie wykrzacza gdy kaze mu to robic w petli. po kilku przejsciach program sie wywala w roznych miejscach, raz w jednym miejscu raz gdzie indziej.
(najczesciej jest to komunikat "access violation at address ... in module ... read of address .....') read of address nigdy nie jest samymi 0 ani F (oznaczalo by to ze nie ma obiektu) sprawdzilem czy nie prubuje operowac na niejstniejacych obiektach albo czy przekroczylem zakres.. wszystko wydaje sie byc w porzadku. siedze w jednym miejscu juz od miesiaca i nic nie moge robic dalej bo mi sie wykrzacza. jezeli ktos mialby czas i ochote zerknac w moj programik i mi chociaz powiedziec gdzie moze byc blad bylbym wdzieczny.

w tym miejscu mi wywala program
function chromosom.pokaz:String;
var wynik:String;
i:integer;
begin
for i:=1 to ilosc_genow do
begin
wynik:=wynik+IntToStr(gen[i]); <------ TUTAJ WYWALA (gdy wiecej niz jeden przebieg programu)
end;
pokaz:=wynik;
end;

nie ma tu nic zle nie wiem dlaczego.
po czesci kodu nie da sie znalezc bledu. progam sprawdzany w czesciach procedura po procedurze pokazuje ze oddzieln ie kazda jest dobra, razem natomiast dzialac nie chca :(

czasami wywala mi tez na funkcji zamiany kodu binarnego na liczbe dziesietna:
function chromosom.decimal(x,y:integer):real;
var liczba,j:real;
i:integer;
begin
liczba:=0;
for i:=x downto y do
begin
j:=x-i;
liczba:=liczba+(gen[i]* (power(2,j)));
end;
decimal:=liczba;
end;

dziala na pewno dobrze bo dobrze zamienia liczby.

prosze o kontakt osoby ktore by chcialy zerknac w kod
nie wiem juz o co chodzi. prosze o pomoc
na gg: 1687233
lub mail: [email protected]


"Co mnie nie zabije, czyni mnie silniejszym" - F.Nietzhe

Pozostało 580 znaków

2006-08-22 13:45
0

wklej kawałek kodu gdzie wywala błąd

To jest forum dla programistów, a nie dla jasnowidzów


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0