Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por JonasFloripa
      Bom dia pessoal..
      Estou com um problema e apareceu quando migrei o sistema ue tenho do php5 para o php7.
      Essa parte do sistema que está dando o problema seria quando quero adicionar o nome do pessoal em uma escala, mas quando seleciono os nomes partindo de quem começa com  a letra 'R', não envia as infomarções. Isso não acontecia no php5.
      Vou colocar o código abaixo e o que mostra quando seleciono o checkbox.
       
       
      <table width="100%" border="0" cellpadding="1" cellspacing="1"> <tr> <td width="9%" align="center"> <input name="conf[]" type="checkbox" value="<?PHP echo $login; ?>"/> </td> <td width="21%"><input name="login_<?PHP echo $login;?>" type="text" value="<?PHP echo $login; ?>" readonly class="negrito"/></td> <td width="13%"><input name="hora2_<?PHP echo $login;?>" type="text" value="<?PHP echo $hora2; ?>" size="4" readonly class="negrito"/></td> <td width="13%"><input name="somah2_<?PHP echo $login;?>" type="text" value="<?PHP echo $somah2; ?>" size="4"readonly="readonly" class="negrito"/></td> <td width="13%"><input name="quantidade_<?PHP echo $login;?>" type="text" value="<?PHP echo $total2; ?>" size="4"readonly="readonly" class="negrito"/></td> <td width="16%"><input name="data_<?PHP echo $login;?>" type="text" value="<?PHP echo $data; ?>" size="10" readonly class="negrito"/></td> <td width="15%"><input name="idescala_<?PHP echo $login;?>" type="text" value="<?PHP echo $idescala; ?>" size="5" readonly class="negrito"/></td> </tr> </table>  
    • Por ph1
      boolean opcao = false; // tem que inicializar com true dentro do laço 'do-while' String resp; Scanner sc = new Scanner(System.in); do { // essas duas variáveis aqui podem ser declaradas dentro do while double media = 0, soma = 0; int j = 0; notas_aluno[j] = 0; for (int i = 0; i < nome_aluno.length; i++) { System.out.println("Insira o nome do aluno: "); nome_aluno[i] = sc.nextLine(); // usa sc.nextLine() //soma = 0; for (j = 0; j < notas_aluno.length; j++) // porque 4 ? usa o notas_aluno.length { System.out.println("Entre com a " + (j + 1) + " ª nota do aluno: " + (i + 1)); notas_aluno[j] = sc.nextDouble(); //notas_aluno[j] = Double.parseDouble(sc.nextLine()); // usa Double.parseDouble(sc.nextLine()) soma = soma + notas_aluno[j]; } media = soma / 5; // pq 5 ? usa o notas_aluno.length String aproveitamento = ""; if (media >= 9 && media <= 10) { aproveitamento = "A"; } else if (media >= 7.5 && media < 9) { // não precisa testar se é < 9 aproveitamento = "B"; } else if (media >= 6 && media < 7.5) { // não precisa testar se é < 7.5 aproveitamento = "C"; } else if (media >= 4 && media < 6) { // não precisa testar se é < 6 aproveitamento = "D"; } else if (media >= 0 && media < 4) { // não precisa testar se é < 4 aproveitamento = "E"; } System.out.println("Média: " + media); System.out.println("Conceito: " + aproveitamento); switch (aproveitamento) { case "A": case "B": case "C": System.out.println("APROVADO"); break; case "D": case "E": System.out.println("REPROVADO"); break; } System.out.print("Deseja Continuar? <s/n>: "); resp = sc.nextLine(); // usa sc.nextLine() if (resp.equalsIgnoreCase("n")) opcao = true; } }while (!opcao); String resp; boolean opcao = false; Scanner sc = new Scanner(System.in); do { System.out.print("Deseja Continuar? <s/n>: "); resp = sc.nextLine(); //} while (!opcao.equalsIgnoreCase(resp)); //while ( opcao != 'n'); // só pára se for == 'n' if(resp.equalsIgnoreCase("n")) { opcao = true; System.out.println("Saiu!"); //break; } }while(!opcao); ...> Prazer a todos. Interessante, seu eu tirar o código entre o d{ e a pergunta para sair, o while funciona perfeitamente, porém se eu retorno como o código para ler as notas e calcular o while não funciona para quando tiver menos de 50 alunos. Não consigo encontrar o erro. Obrigado.
    • Por 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.
       
    • Por 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'?
       
       
    • Por Mardscrash
      Alguém poderia por favor me ajudar com essa questão? Estou aprendendo agora Programação na minha faculdade e tenho uma certa dificuldade nessa área
       
      Codifique um programa em Java  que:
           a – leia via teclado seis números tipo inteiro e armazene em um vetor;
           b – lei um número via teclado que servirá como fator multiplicador, em que será criado um segundo vetor onde
                 cada  elemento, seja igual ao produto do  respectivo elemento da posição do primeiro vetor com o valor do
                 fator informado.
           c – após todos elementos dos vetores armazenados, exiba-os, separando por vetor.
       
      package exercicio;
      import java.util.Scanner;
      public class Exercicio6 {
          public static void main(String[] args) {
              Scanner scan = new Scanner(System.in);
              System.out.println("Digite seis números: ");
              int digitados = scan.nextInt();
                   //CRIAR UM VETOR, LER OS NÚMEROS E ARMAZENAR DENTRO DO MESMO (ESTRUTURA FOR
                   //LER UM NUMERO FATOR
                   //ENTRAR DENTRO DE OUTRA ESTRUTURA FOR
          }
      }
       
      Eu coloquei esses comentários enquanto tentava entender a lógica do exercício, mas acabei não conseguindo desenvolver.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.