• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mitrax

Problema Matlab

9 mensagens neste tópico

Boa noite.

Tenho em mãos um trabalho da faculdade que consiste num problema de programação linear devendo ser realizado na linguagem Matlab. Será que alguns dos caros foristas tem disponibilidade e conhecimento para me prestar ajuda? Estou disposto a recompensar financeiramente.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O objectivo do fórum não é resolver os problemas pelos outros. Se queres alguém que te faça o trabalho deves procurar noutro lado. Se precisas de ajuda, começa a tentar resolver o problema, e vai colocando as dúvidas que te forem aparecendo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desde já pelo desculpa pelo meu anterior post.

As duvidas são muitas pois estou a iniciar-me nesta linguagem. Sendo assim deixo aqui uma primeira duvida para que alguém me possa esclarecer.

Pretenderia fazer o preenchimento de uma matriz elemento a elemento. Ou seja o programa pederia para inserir o elemento [1,1], [1,2], [1,3] e por aí adiante.

nr_FTR= input ('Quantos FTR´s pretende transicionar? \n');

for a=1:length(mX)

    for aa=1:nr_FTR

          mat_inj_ext(a,aa)=input ('[barramento %d, FTR %d]: ',a,aa)

    end

end

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse código está a dar algum erro?

Nunca trabalhei muito com input/output em MatLab, e nem tenho o MatLab instalado, por isso é difícil ajudar-te nessa parte, mas esse código parece correcto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

??? Error using ==> input

Too many input arguments.

Error in ==> teste at 48

        mat_PFTR(a,aa)=input ('Insira a origem(1) e o destino(-1) dos seguintes FTRs:\n [barramento %d, FTR

        %d]: ',a,aa);

Aparentemente terei que usar outra função no lugar do input. A minha questão é qual?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Provavelmente não podes formatar as strings na função input.

Usa a função sprintf para criares a string, e depois no input coloca só a string pré-formatada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado Rui, funcionou às 1000 maravilhas.

Uma outra questão com que me deparei agora é a questão da optimização da função. Já analisei funções como linprog ou fmincon mas nenhuma me parece enquadrar com o que pretendo. Portanto, tenho uma determinada função que quero maximizar estando sujeita a determinadas restrições. O que se passa é que em determinadas restrições tenho variáveis de tipos diferentes, o que faz com que não consiga usar as funções anteriormente citadas. Alguem me poderá dar uma dica (uma função que se enquadre, p. ex).

Grato

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Diferentes tipos de variáveis? Podes me dar algum exemplo?

Em princípio é mesmo a função linprog que tens que usar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, o problema anterior está parcialmente resolvido. No entanto deparei-me com um bug no meu algoritmo que a meu ver não tem razão de ser.

Portanto, o tal bug está neste excerto de código:

n=1;

nn=1;

nr_linha=0;

while n <=length (mB)

    while nn <=length (mB)

        if (n<nn) && (mB (n,nn)~=0)

            %nn

            nr_linha=nr_linha+1%não está a fazer a contagem correctamente

            line_limit_aux2 (nr_linha,n)=-mB (n,nn)

            line_limit_aux2 (nr_linha,nn)=mB (n,nn)

        end

        nn=nn+1;

    end

    n=n+1;

end

mB =

    75  -50  -25

  -50  150  -100

  -25  -100  125

Pela analise que fiz o erro encontra-se na variável nr_linha, que apenas está a realizar a contagem até 2 sendo suposto faze-la até 3. Alguém terá alguma ideia?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora