Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    18

    [Java] Programma Iterativo per il Calcolo del punto di riordino

    Salve,
    Per la mia tesi (Ing. Gestionale LS, tesi sulla gestione delle scorte) devo creare questo programma in Java in modo da comparare il modello classico del re order level con il risultato ottenuto da questa procedura iterativa.
    Ora non ho le competenze per programmare ma da quel poco che ho fatto in informatica non mi sembra troppo complicato quello che c'è da fare..
    Vi chiedo quindi dove posso trovare una guida per Java che mi indichi le principali regole sintattiche da seguire (main, metodi, cicli vari, definizione variabili etc etc)..

    La Procedura è questa :
    Part 1
    (1) Guess values of M and Q
    (2) Put Q = Q0
    (3) Put M= Mo. Mo and Q0. (MO, Q0) in r7~
    (4) Put M' =-1

    Part 2
    (5) Put I = 0
    (6) Put Q' = Q
    (7) Calculate U(M, Q)
    (8) Jump to (13) if P> U(M, Q)
    (9) Add one to M
    (10) Jump to (17) if I= 1.
    (11) Put I =-1.
    (12) Jump to (7).
    (13) Jump to (17) if I=-1.
    (14) Subtract one from M
    (15) Put I= 1.
    (16) Jump to (7).
    (17) Jump to (32) if M = M'.

    Part 3
    (18) Put I= 0.
    (19) Put M' = M.
    (20) Calculate V(M, Q).
    (21) Jump to (26) if P > V(M, Q)
    (22) Add one to Q
    (23) Jump to (30) if I= 1.
    (24) Put I=-1.
    (25) Jump to (20).
    (26) Jump to (30) if I -1.
    (27) Subtract one from Q.
    (28) Put I = 1.
    (29) Jump to (20).
    (30) Jump to (32) if Q = Q'.
    (31) Jump to (5).

    Part 4
    (32) Put I= 0.
    (33) Put N = M+ Q.
    (34) Calculate W(M, N-M)
    (35) Jump to (40) if P > W(M, N-M)
    (36) Add one to M.
    (37) Jump to (44) if I= 1.
    (38) Put I= -1.
    (39) Jump to (34)
    (40) Jump to (44) if I=-1.
    (41) Subtract one from M.
    (42) Put I = 1.
    (43) Jump to (34)
    (44) Put Q= N-M.
    (45) Jump to (47) if M= M'.
    (46) Jump to (4).
    (47) Write down M and Q, the required answers.

    Utilizzando un libro di informatica e alcuni "ricordi" di programmazione fatta in qualche esame ho cercato di cominciare ad impostare il programma :

    Come potete vedere una delle cose che non ricordo/non so come fare è quella di "rimandare" la procedura ad un metodo scritto in precedenza. E dal momento che è una procedura iterativa la maggiorparte del programma richiede questi salti in seguito ad un "if".

    PARTE 1
    codice:
    package reorderlevel.stat
               public class reorder_level
            {
                       publis static void main (String args[])
                {  
    1                  int Q = x;  //quale valore mettere?
    1                  int M = x;  //quale valore mettere?
    1                  int M° = x; //quale valore mettere?
    1                  int Q° = x; //quale valore mettere?
                            
    2                   Q = Q°;
    3                   M = M°;
    4                   Int M' = -1;
    PARTE 2
    codice:
    5                   int I = 0;
    6                   int Q'= Q;
                                  //definire qui tutte le variabili?
                 }
                        //Metodo che calcola U(M,Q)
    
                 float calcola_U(M,Q) (float U)
                  { 
    
    7                   //inserire formula U(M,Q)
                  return U;      
                  }
      
    8             if (P>U)
                  {
                      //saltare a step (13)    
                  }    
    
    9             M = M+1;
    
    10            if (I=1)
                  {
                     // saltare a step (17)
                  }
    
    11            I = -1;
    12            // saltare a step (7)
    
    13            if (I=-1)
                  {
                   // saltare a step (17)      
                  }
    
    14            M = M-1;
    15            I = 1;
    
    16            // saltare a (7)
    
    17            if (M=M')
                  {
                  // saltare a (32)
                  }
    PARTE 3
    codice:
    18            I = 0;
    19            M'= M;
    
                          // Metodo che calcola V(M,Q)
    20             float calcola_V(M,Q) (float V)
                   {                    
                         // inserire formula V(M,Q)
                    return V;
                   }
    
    21             if (P>V)
                   {
                   // saltare a (26)
                   }
    
    22             Q=Q+1;
    
    23             if (I=1)
                   {
                    // saltare a (30)
                   }
    
    24             I=-1;
    
    25              //saltare a (20)
    
    26             if (I=-1)
                   {
                    //saltare a (30) 
                   }
    
    27             Q=Q-1;
    28             I=-1;
    
    29             //saltare a 20
    
    30             if (Q=Q')
                   {
                    // saltare a (32) 
                   }
    
    31             //saltare a (5)
    PARTE 4
    codice:
    32              I=0;
    33              N=M+Q;
    
                           //Metodo che calcola W(M,N-M)
    34              float calcola_W(M,N-M) (float W)
                    {
                     // inserire formula W(M,N-M)
                     return W
                    }
    
    35              if (P>W)
                    {
                     //saltare a (40)
                    }
    
    36               M=M+1;
    
    37               if (I=1)
                     {
                      //saltare a (44)  
                     }
    
    38               I=-1;
    
    39                //saltare a (34)
    
    40               if (I=-1)
                     {
                      //saltare a (44)
                     }
    
    41                M=M-1;
    42                I=1;
    
    43                //saltare a (34)
    
    44                Q=N-M;
    
    45               if (M=M')
                      {
                       //saltare a (47)    
                      }
    
    46                //saltare a (4)
    
    47                //stampare Q,E e costo totale 
                       System.out.println("La quantità di rioridno è" + Q);
                       System.out.println("Il livello di riordino è" + M);
                       System.out.println("il costo totale è" + U);
              }
    Consigli ? Suggerimenti ?
    Grazie per le eventuali risposte

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    18
    Scusate ma non mi ha preso la tabulazione nella seconda parte e risulta un pò tutto attaccato, sry

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da O'Brasil
    Scusate ma non mi ha preso la tabulazione nella seconda parte e risulta un pò tutto attaccato, sry
    Questo perchè non hai seguito ciò che è scritto nel punto 6 del Regolamento interno: ovvero, non hai usato gli appositi tag CODE.

    Sistemo io.

    Resta da capire esattamente quale sia il tuo problema. Se non sai programmare in Java, questo forum non ti servirà gran ché...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    18
    Beh non so programmare, nel senso che non ho mai avuto modo di studiare in modo continuativo tali argomenti, giusto un paio di esami all'Uni abbastanza easy con qualche infarinatura qua e la.
    Per questo chiedevo principalmente consigli su qualcosa tipo un manuale, guida che mi dia magari le basi utili per scrivere questo programmino.
    Ho postato tutto il programma proprio per rendervi partecipi del grado di difficoltà di quello che devo fare; sostanzialmente per sentirmi dire : ok, se leggi e studi questo senza che diventi un mago della programazione puoi farcela da solo. Oppure, questa cosa non fa per te se sei proprio a 0 e comunque servirebbe imparare questo e quell'altro, etc etc..

    Secondo voi conoscendo le basi della programmazione in Java posso riuscire a metter su quello che mi serve in tempi contenuti (un mese)?


    p.s. : dal momento che si tratta della mia tesi di laurea devo decidere o meno se inserire questa parte. Ovviamente non chiedo a nessuno di aiutarmi a fare questo programma perche tanto poi col prof ci devo parlare io e credo che un occhio esperto riesce a capire subito se un programma l'ha scritto uno che ci sa fare o un pinco pallino qualsiasi.

    p.s. 2 : grazie per aver sistemato il mio post

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non ho capito se parti da programma pseudo assembler e devi rimapparlo in java oppure se hai chiara la logica della problematica ma non conosci bene gli strumenti che usi.
    Perché parti da un programma di basso livello e vuoi andare ad uno di alto livello e diciamo che non c'è un mappaggio diretto tra i due.

    Parti dalla logica (come calcoli il punto di riordino) quello è più fattibile (in tempi brevi intendo)

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    18
    Originariamente inviato da valia
    non ho capito se parti da programma pseudo assembler e devi rimapparlo in java oppure se hai chiara la logica della problematica ma non conosci bene gli strumenti che usi.
    Perché parti da un programma di basso livello e vuoi andare ad uno di alto livello e diciamo che non c'è un mappaggio diretto tra i due.

    Parti dalla logica (come calcoli il punto di riordino) quello è più fattibile (in tempi brevi intendo)
    cosa sarebbe "programma pseudo assembler?"

    Per la mia tesi ho letto e tradotto alcuni articoli di riviste specializzate del settore. Uno di questi proponeva quel processo iterativo a step che ho riscritto sopra.
    Venerdì che ero in azienda ho cercato qualche risorsa in rete sulle basi di Java e ho provato a vedere cosa usciva applicando quelle poche conoscenze che ho e quello che avevo trovato. Quel che ne è venuto fuori lo trovi scritto nella seconda parte.

    Poi non ho capito l'ultima frase : "Parti dalla logica (come calcoli il punto di riordino) quello è più fattibile (in tempi brevi intendo)"

    Il processo è quello li, non devo inventarmi niente. Per calcolare i vari Livelli di Riordino le formule le ho e i dati anche.. forse l'unico problema sarà trasformare quelle formule con sommatorie, integrali, etc etc in linguaggio Java.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    appunto per questo ti dico parti dalla logica, visto che un programma che prevede salti o robe simili (jump) è pseudo-assembler (non è assembler ma ci somiglia molto).

    Partendo dalla logica (o decifrandola dal programma) è più facile scriverlo, anche perché il jump è qualcosa che in java non esiste (o meglio esiste con molti limiti) quindi non hai mappatura diretta, quindi se tu hai chiaro cosa fare formulare il problema in un linguaggio ad alto livello è molto semplice

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    18
    Si ma ovviamente prima di mettermi a fare qualcosa ho studiato il programma a step trovato nell'articolo, perchè dovevo prima capire se poteva fare al caso mio.
    (anche perchè visto che prevedo che questa cosa mi porti via molto tempo dovevo prima esser sicuro che mi potesse servire)
    Il procedimento spiegato mi è chiaro, anche perchè è abbastanza intuitivo. (vi sono due incognite M e Q, fissandone una con un valore di partenza casuale ricerca un minimo locale, il procedimento poi si inverte fissando l'altra variabile col minimo locale trovato; Procedendo per step si arriva ad individuare i valori minimi di Q e M che danno il minimo globale della funzione di costo).
    Il mio problema è che so quello devo fare, ma per adesso non ho le competenze per scrivere un programma completo.

    Ad esempio uno dei problemi è quello del jump (sostanzialmente perchè il procedimento a step ne fa largo uso) che mi hai indicato, perchè pensavo ci fosse una qualche funzione che permettesse di richiamare "metodi" evocati in precedenza.

    Comunque la domanda iniziale resta valida : potete consigliarmi un testo, un manuale, un qualcosa che spieghi le basi della programmazione in Java ? (giusto per andare "sul sicuro" e non prendere il primo testo che mi capita usando google )

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    io le guide le amo poco, mi rendo conto che per te comprare un libro sia una spesa un tantinello eccessiva. Vedi se conosci qualcuno all'uni che ti passa delle copie in pdf o ti presta il suo.
    Vedi se trovi Java Core 2 che è abbastanza buona.

    Ora la logica mezzo mezzo ci sei, fai un programma che dati n numeri calcola il minimo (e risolvi il primo step), il resto si vede dopo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.