Jump to content
thiago_brito

Armazenar um dado em um vetor e não o considerar em uma próxima rodagem (MATLAB)

Recommended Posts

Galera,

Estou com uma questão que eu não consigo resolver. Já tentei de diversas maneiras e já pedi ajuda para alguns conhecidos, mas nada... Espero que alguém daqui possa me ajudar

 

Estou trabalhando com Algoritmo Genético no matlab. Tenho um vetor [1 2 3 4 5] onde cada número significa um material. Mando rodar o matlab e ele me dá como melhores opções os materiais os números [5 2 4 3 1]

 

como eu faço essa rodagem?

Rodo o matlab 1x, ele escolhe o número 5. Vou lá e retiro todas as entradas do número 5. Rodo novamente o matlab e o novo melhor material será o 2. Faço isso para todos os outros números até que se esgotem.

 

O que eu quero?

Não ter que fazer todo esse processo manualmente visto que tenho 12 ou mais materiais e tenho que fazer modificações em algumas características como nº de população e entre outras coisas... Se eu fizer manualmente vai dar um trabalho gigantesco. Quero que isso seja automático. O matlab rode e ai ele vai escolher o número 5, ai ele guarda esse valor em um vetor e roda novamente, mas dessa vez sem considerar o nº 5, com isso, ele encontrará o nº 2. Guarda ele num vetor e roda novamente, mas dessa vez considerando os números 1, 3 e 4... e assim em diante

O que tenho feito e não está dando certo?

Da maneira que eu to fazendo não está dando certo porque o for está indo de 1 a 12.. Observe na resposta que ele considera o material de nº 5 como sendo o melhor até i = 5, depois aparecem outros... Quando tenho i = 3, por exemplo, ele já não considera o 1º e 2º materiais... a única rodagem que ele considera todos os 12 é quando i = 1

 

1253966076_CapturadeTela2019-09-18as19_20_21.png.5b4c7589486ae504e6d78f82e8641068.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Pavolin9
      Bom dia, estou desenvolvendo um sistema bem simples de estoque onde os itens serao armazenados em uma matriz segue codigo:
          package main;          import java.io.Console;     import java.util.Arrays;     import java.util.Scanner;          public class IncluirItem{         public static void main(String[] args) {             String[][] itens = new String[2][5];             String[] campos = new String[7];             int opcao = 0;             int remover;             int verificar = 0;             int adcionar = 0;             int tamanho = 2;                          Scanner sc = new Scanner(System.in);                          campos [1] = "Nome";             campos [2] = "Codigo de barras";             campos [3] = "quantidade";             campos [4] = "validade";             campos [5] = "data de entrada";                          do {                 System.out.println("\n\n### Sistema de estoque - simplificado ###");                 System.out.println("=========================================");                 System.out.println("      |     1 - Adcionar itens   |");                 System.out.println("      |     2 - Excluir itens    |");                 System.out.println("      |     3 - Mostrar itens    |");                 System.out.println("      |     0 - Sair             |");                 System.out.println("=========================================\n");                                  System.out.println("Escolha uma opcao: ");                 opcao = sc.nextInt();                 System.out.print("\n");                                  switch (opcao) {                 case 1:                     System.out.println("Cadastro de itens: ");                     //Adciona itens                      for (int i = 0; i <2; i++) {                         System.out.println("Adcionar item? ");                         System.out.println("1 para sim \n2 para nao: ");                         adcionar = sc.nextInt();                         if (adcionar == 1) {                             System.out.printf("%d. item \n", (i+1));                             verificar = verificar + 1;                             for (int j=0; j < 5; j++) {                                     System.out.printf("%s ", campos[j+1]);                                 System.out.printf("= ", i,(j+1));                                 itens[i][j] = sc.next();                                                              }                             System.out.printf("\n");                         }                         else {                             break;                         }                     }                                              break;                 case 2:                     //Remove itens                     System.out.println("Exclusao de itens: ");                     if(verificar > 0) {                         for (int i = 0; i <2; i++) {                                 System.out.printf("%d. item \n", (i+1));                             System.out.printf("ID do produto= 00%d \n", (i+1));                             System.out.printf("\n");                         }                     }                     else {                         System.out.println("Nenhum item listado!");                     }                     System.out.println("\nEscolha o numero do item a ser removido: \n");                     remover = sc.nextInt();                     for (int i = 0; i <2; i++) {                         if(remover == 2) {                         itens[i] = itens[i-1];                         }                     }                     break;                 case 3:                     //Mostra itens                     if(verificar > 0) {                                                      for (int i = 0; i <2; i++) {                                     if (verificar == 2) {                                 System.out.printf("%d. item \n", (i+1));                                 System.out.printf("ID do produto= 00%d \n", (i+1));                                 for (int j=0; j < 5; j++) {                                         System.out.printf("%s ", campos[j+1]);                                     System.out.printf("= %s \n", itens [i][j]);                                 }                                 System.out.printf("\n");                             }                             else {                                         itens = Arrays.copyOf(itens, tamanho - 1);                                         verificar = 0;                                         System.out.printf("%d. item \n", (i+1));                                         System.out.printf("ID do produto= 00%d \n", (i+1));                                         for (int j=0; j < 5; j++) {                                                 System.out.printf("%s ", campos[j+1]);                                             System.out.printf("= %s \n", itens [i][j]);                                         }                                         System.out.printf("\n");                                         break;                                 }                         }                     }                     else {                         System.out.println("Nenhum item listado!");                     }                                          break;                 default:                     System.out.println("Opção Inválida!");                     break;                 }             } while(opcao != 0);         }     }  
      Minha duvida é a seguinte, eu quero excluir uma posicao da matriz, exemplo: registrei dois itens, na coluna um e coluna dois da matriz e gostaria de remover a coluna um da lista, como realizo essa função, e outra coisa, eu gostaria de quando eu inserisse pela segunda vez algum item a matriz começasse na proxima possicao vazia, atualmente se eu pedir para inserir um novo item a matriz começa da primeira posicao e assim apaga os elementos ja inseridos.
       
    • By cleitonpacheco
      Preciso criar um programa em C que converta um vetor de 32 caracteres (recebidos do usuário), e os caracteres que não forem letras devem ser convertidos em espaço em branco mostrando no final o vetor resultante e a quantidade de espaços em branco. Como seria para fazer usando apenas a biblioteca 'stdio.h'?
       
       
    • By Svinnicius
      Ao sair de um procedimento e entrar em outro, ta apresentando erro quando tento finalizar o programa.
       
      Var
      // Seção de Declarações das variáveis 
      nome: vetor [1..3]  de caractere
      telef: vetor [1..3]  de caractere
      ema: vetor [1..3]  de caractere
      codigo,codigo_contato,codigo_contato_cheio, menu_apagar,opc, opc1: inteiro
      cont, menu_mostrar,op: inteiro
      procedimento principal()
      Inicio
      // Seção de Comandos, procedimento, funções, operadores, etc... 
      repita
      escreval ("")
      escreval ("=== AGENDA TELEFÔNICA ===")
      escreval ("")
      escreval ("1. Inserir novo contato")
      escreval ("2. Apagar contato")
      escreval ("3. Mostrar todos os contatos")
      escreval ("4. Sair")
      escreva ("Digite opcao: ")
      leia (codigo)
      limpatela
      ate (codigo=1) ou (codigo=2) ou (codigo=3) ou (codigo=4)
      escolha (codigo)
      caso 1
         contato()
      caso 2
         apagar()
      caso 3
         mostrar()
      caso 4
         interrompa
      fimescolha
      fimprocedimento
      //---------------------- NOVO CONTATO ----------------------
      procedimento contato()
      inicio
      para cont de 1 ate 3 faca
      limpatela
      escreval("== INSERIR NOVO CONTATO ==")
            escreva ("Nome: ")
            leia (nome[cont])
            escreva ("Telefone: ")
            leia (telef[cont])
            escreva ("E-mail: ")
            leia (ema[cont])
            escreval("")
            escreval("Usuario cadrastrado com sucesso")
            repita
            escreval("")
            escreval("1.Insira novo contato")
            escreval("2.Voltar ao menu")
            escreval("")
            escreva("Digite opção: ")
            leia(codigo_contato)
      escolha (codigo_contato)
      caso 1
      escreva("")
      caso 2
         interrompa
         limpatela
         principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato = 1
      fimpara
      limpatela
                escreval("")
                escreval("Lista de contato cheia")
                repita
                escreval("")
                escreval("1.Voltar ao menu")
                escreval("2.Sair")
                escreval("")
                escreval("Digite opção")
                leia(codigo_contato_cheio)
          escolha (codigo_contato_cheio)
                caso 1
                limpatela
                principal()
                caso 2
                interrompa
                outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato_cheio = 1
      fimprocedimento

      //------------------------ Apagar contato------------------------------------
      procedimento apagar()
      inicio
      limpatela
      escreval("== APAGAR CONTATO ==")
      Escreval("")
      escreva ("Qual contato você quer apagar? ")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc)
      se opc >0 entao
         se opc <4 entao
      nome[opc]<-""
      telef[opc]<-""
      ema[opc]<-""
      Escreval("")
      Escreval("Contato Apagado com sucesso")
      repita
      escreval("")
      escreval("1.Apagar outro contato")
      escreval("2.Voltar ao menu")
      escreval("3.Sair")
      escreva("Digite opção:")
      leia(menu_apagar)
      Escolha(menu_apagar)
      caso 1
      limpatela
      apagar()
      caso 2
      limpatela
      principal()
      caso3
      interrompa
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      apagar()
      fimse
      fimse
      fimse
      fimescolha
      ate menu_apagar = 3
      fimprocedimento
      //-------------------------- Mostrar todos os contatos ---------------------
      procedimento mostrar()
      inicio
      limpatela
      escreval("== LISTA DE CONTATOS ==")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc1)
      se opc1 >0 entao
         se opc1 <4 entao
      limpatela
      Escreval("Nome: ",nome[opc1])
      Escreval("Telefone: ",telef[opc1])
      Escreval("E-mail: ",ema[opc1])
      repita
      escreval("")
      escreval("1.Mostrar outro contato")
      escreval("2.Voltar ao menu")
      escreval("")
      escreva("Digite opção:")
      Leia(menu_mostrar)
      Escolha(menu_mostrar)
      caso 1
      limpatela
      mostrar()
      caso 2
      limpatela
      principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      mostrar()
      fimse
      fimse
      fimescolha
      limpatela
      ate menu_mostrar = 1
      fimprocedimento
      inicio
      // Seção de Comandos
        principal()
      Fimalgoritmo
    • By xande013
      /* Desenvolver um programa para realizar a correção de um prova de múltipla escolha. Os dados iniciais a serem lidos são: - A quantidade de candidatos (N) e - A quantidade de questões aplicadas (M). As respostas possíveis que poderão ser aceitas são: A, B, C, D e E. O primeiro conjunto de dados a ser lido será o gabarito com as respostas corretas das M questões. Após o gabarito, serão lidos os nomes as respostas de cada candidato. Os valores das questões são iguais. A nota máxima é 10 e a de classificação é 5. As estruturas que deverão ser utilizadas são: O programa deverá: a) Gerar o vetor NOTA; b) Apresentar o relatório geral contendo o nome do candidato e sua nota; c) Calcular e apresentar a média geral dos candidatos; d) Apresentar a quantidade e o percentual de classificados e desclassificados; e) Apresentar o relatório de candidatos classificados; f) Apresentar a melhor nota obtida e seu(s) respectivo(s) candidato(s); g) Gerar o vetor ACERTOS com o percentual correspondente e apresentá-lo. */ #include <iostream> using namespace std; // torna desnecessária o uso do comando standard (std) antes das variáveis main() { setlocale(LC_ALL,"Portuguese"); int M[2][2],l, c, nota=0, soma=0, media=0, i=0, j=0; string nome[j]; cout<<"Digite seu nome"<<endl; cin>>nome[j]; for(l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<"["<<l<<"]["<<c<<"] : "; cin>>M[l][c]; } } for (l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<M[l][c]<<" "; } cout<<endl; } cout<<"Matriz A "<<" Vetor B "<<endl; for (l=0;l<2;l++) { soma=0; for (c=0;c<2;c++) { cout<<M[l][c]<<" | "; soma=soma+M[l][c]; media=soma/3; } cout<<" = "<<media<<endl; } cout<<"Somatório da colunas: "<<endl; for (c=0;c<2;c++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][c]; } cout<<soma<<endl; } cout<<"Somatório da Diagonal: "<<endl; for (l=0;l<2;l++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][l]; } cout<<soma<<endl; } } A pergunta é, como imprimir os nomes na coluna 0 e linhas de 1 a 5
      e como fazer para que as respostas possíveis que poderão ser aceitas sejam: A, B, C, D e E?
    • By Thurcos
      Opa, tudo bem ? sou novo aqui e comecei a usar o Illustrator e o Photoshop para um projeto, acontece que ao criar o logo no Illustrator quando eu pego o logo selecionado no illustrator e mando para PS ele simplesmente perde muito a qualidade, o que posso fazer para solucionar o problema ? 
       
      ps: o problema só acontece quando eu diminuo o tamanho do vetor/imagem no Photoshop, quando eu aumento a resolução ela é excelente, mas no caso eu preciso deixar o logo de canto 
       
      1º imagem : com o simbolo de canto o qualidade esta ruim
      2º imagem : o pouco de zoom que eu dou ela já fica totalmente ilegível 
      3º imagem : eu aumentando ela fica legível 
      4º imagem: ela no Illustrator
       
      sei que um vetor não tem pixel e não é uma imagem, mas tem como eu usar a resolução boa do Illustrator no PS ? 
       
      se eu crio um arquivo no Illustrator o tamanho que eu crio ele interfere quando mando pro Photoshop ?
       
      ps: eu não salvei como imagem nem nada eu apenas selecionei o vetor a arrastei para o Photoshop 




×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.