Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 23:59   #1
Данте
Новичок
Джуниор
 
Регистрация: 07.12.2010
Сообщений: 1
По умолчанию FreeBasic, задача Коммивояжера, метод Монте-Карло

Есть задача на ФБ, готовая, но в ней ошибка. Она не хочет выдавать ответ, постоянно считает путь, а на кратчайшем не останавливается. Кажется, что не прописана двойная точность, но я не понимаю что это.
Пожалуйста, помогите исправить и если не трудно, нужно еще построить проверку, при условии что города расположены по кругу и построить две зависимости: Длина пути от времени счета, количество городов от длины пути.

DEFDBL A-Z
DECLARE SUB INIT (X(),Y(),N,R(),V())
DECLARE SUB SUMDIST (V(),N,R(),L)
DECLARE SUB PICTURE (X(),Y(),V(),N)
DECLARE SUB MONTECARLO (R(),V(),N,L,T)
N=40
DIM X(N),Y(N),V(N),R(N,N)
CALL INIT(X(),Y(),N,R(),V())
CALL SUMDIST(V(),N,R(),L)
T=1
DO
LOCATE 1,1: PRINT T,L:T=0.94*T
FOR I=1 TO N*1000
CALL MONTECARLO (R(),V(),N,L,T)
NEXT I
CALL PICTURE (X(),Y(),V(),N)
LOOP
SUB INIT (X(),Y(),N,R(),V())
SCREEN 20
VIEW (10,10)-(740,740)
WINDOW (-1,-1)-(1,1)
FOR I=1 TO N
X(I)=2*RND-1
Y(I)=2*RND-1
NEXT I
FOR I=1 TO N:FOR J=1 TO N
R(I,J)=SQR((X(I)-X(J))^2+(Y(I)-Y(J))^2)
NEXT I:NEXT J
FOR I=1 TO N
V(I)=I
NEXT I
END SUB
SUB SUMDIST (V(),N,R(),L)
FOR I=1 TO N-1
L=L+R(V(I),V(I+1))
NEXT I
L=L+R(V(1),V(N))
END SUB
SUB PICTURE (X(),Y(),V(),N)
CLS 'Очистить экран
FOR I=1 TO N
CIRCLE (X(I),Y(I)),0.01,14
NEXT I
FOR I=1 TO N-1
LINE (X(V(I)),Y(V(I)))-(X(V(I+1)),Y(V(I+1)))
NEXT I
LINE (X(V(1)),Y(V(1)))-(X(V(N)),Y(V(N)))
END SUB
SUB MONTECARLO (R(),V(),N,L,T)
I=INT(N*RND+1)
DO: J=INT(N*RND+1):LOOP UNTIL I<>J
NI=V(J):NJ=V(I)
V(I)=NI:V(J)=NJ
CALL SUMDIST(V(),N,R(),Lf)
dL=Lf-L
IF dL>0 THEN IF EXP(-dL/T)<RND THEN V(I)=NJ:V(J)=NI:EXIT SUB
L=Lf
END SUB
Данте вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача коммивояжера метод ветвей и границ AngelMarik Помощь студентам 0 04.11.2010 12:03
Метод Монте-Карло.Освещение. Делфи,С++ pavlucios Помощь студентам 0 22.09.2010 02:29
Метод Монте-Карло LiptonICE Помощь студентам 6 07.05.2010 20:37
интегралы и метод монте-карло byte916 Помощь студентам 2 19.01.2010 16:13
Метод Монте-Карло литература или примеры программ на С++ или С MIKI Помощь студентам 2 09.12.2008 13:33