Foros del Web » Programación para mayores de 30 ;) » Java »

Traduccion de codigo

Estas en el tema de Traduccion de codigo en el foro de Java en Foros del Web. Buenas, tengo este código escrito en MatLab, y necesito modificarlo pero no conosco mucho ese lenguaje el "M" , y quisiera saber si alguien que ...
  #1 (permalink)  
Antiguo 10/11/2014, 17:33
 
Fecha de Ingreso: junio-2011
Mensajes: 19
Antigüedad: 12 años, 9 meses
Puntos: 0
Traduccion de codigo

Buenas, tengo este código escrito en MatLab, y necesito modificarlo pero no conosco mucho ese lenguaje el "M" , y quisiera saber si alguien que si conoce los dos lenguajes me podría ayudar a traducirlo. espero que alguien pueda ayudarme, saludos.

%% GRASP
clear all
clc

c=[3 4 8 3 6 4 10 4 10 9];
v=[6 4 3 3 3 5 9 8 5 10];
b=26;
Elite=[]; % vector que guarda las soluciones elite
%% tiene 3 fases (preprocesamiento, constructiva, búsqueda local)

for k=1:1:30 % se guardarán 10 soluciones elites
%% fase de preprocesamiento

I=[c./v; 1:1:10] % primera fila indice de sensibilidad, segunda fila posición del producto
% se identifican el esquema de alta calidad y será X
X=[0 0 1 0 0 0 0 0 0 0]; % esquema de alta calidad
I(:,3)=[]; % se elimina el producto que pertenece el esquema de alta calidad

%% fase constructiva (el índice de sensibilidad es costo/volumen)

alpha=0.7; % valor para la creacion LRC
LRC=[]
while b >= v*X' % con esta condición se lleva al limite de la infactibilidad
Xv=X; % guarda el vector para el límite de la factibilidad

valor=max(I(1,:))-alpha*(max(I(1,:))-min(I(1,:))); % índice para los productos en la LRC

a=I(1,:)>=valor; % obtiene los indices que sean mayores al Valor de los LRC
LRC=I(:,a); % se guarda en el vector LRC la lista de candidatos

N=floor(size(LRC,2)*rand+1); % se escoje aleatoriamente un producto de la LRC

X(1,LRC(2,N))=1; % se agrega ese producto al vector X el producto

a=I(2,:)==LRC(2,N); % se busca que coincidan los indices
I(:,a)=[]; % se eliminan de los productos


LRC(:,N)=[]; % se elimina de la LRC el producto agregado

end

%% fase de búsqueda (metodología first improvement)

i=0; % se inicializa el contador que cambiará la vecindad (ingresa o saca un producto a la vez)

Xp=X; % se trabajará con la variable Xp (dado que se puede trabajar en el limite de la factibilidad con Xv y en el de la infactibilidad con X)

while i<size(c,2)
Xpv=Xp % guardar una vector de desicion anterior para poder tomar decisiones más adelante
i=i+1; % incrementa el contador para pasar al siguiente producto
if i==3 % evitar quitar el esquema de alta calidad
i=i+1;
end

%% si se esta en el límite de la factibilidad
if v*Xp'<= b
if Xp(1,i)==0 % si el producto se encuentra fuera de la mochila entonces se ingresa y si esta dentro se retira
Xp(1,i)=1;
else
Xp(1,i)=0;
end

if v*Xp'<= b % si al agregar o retirar un producto no se viola la restricción
if c*Xp'>= c*Xpv' % si el costo mejora
break % terminar el ciclo
else
if Xp(1,i)==0 % si el producto se encuentra fuera de la mochila entonces se ingresa y si esta dentro se retira
Xp(1,i)=1;
else
Xp(1,i)=0;
end

end
end




else
%% si se esta en el límite de la infactibilidad
if Xp(1,i)==0 % si el producto se encuentra fuera de la mochila entonces se ingresa y si esta dentro se retira
Xp(1,i)=1;
else
Xp(1,i)=0;
end

if v*Xp'<= b % si se factibiliza el el problema

break % terminar el algoritmo de vecindad

else

if Xp(1,i)==0 % regresar a el punto inicial
Xp(1,i)=1;
else
Xp(1,i)=0;
end

end
end


end

Elite(k,:)=[Xp c*Xp']; % soluciones élites


end

[a b]=max(Elite(:,end));
X=Elite(b,1:end-1)
a

Etiquetas: traduccion, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:38.