Files
EgtNumKernel/MachOptimization.h
T
Riccardo Elitropi 558b590810 EgtNumKernel :
- Aggiunta classe di calcolo per ottimizzazione ordine delle lavorazioni
- Aggiunti vincoli obbligatori e dipendenze suggerite a ShortestPath.
2025-04-23 10:09:41 +02:00

74 lines
3.4 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2025-2025
//----------------------------------------------------------------------------
// File : MachOptimization.h Data : 31.03.25 Versione : 2.7a1
// Contenuto : Classe per calcolo ottimizzato per le lavorazioni.
//
//
// Modifiche : 31.03.2025 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/ENkMachOptimization.h"
//----------------------------------------------------------------------------
class MachOptimization : public IMachOptimization
{
public :
~MachOptimization( void) override ;
// Inserimento
bool InsertTool( int nId, double dTCX, double dTCY, double dTCZ, double dTCA,
double dTCB, double dTCC, bool bX, bool bY, bool bZ, bool bA,
bool bB, bool bC, double dTLoad, double dTUnL) override ;
bool InsertMachining( int nId, int nToolId, int nGroup,
double dX_Start, double dY_Start, double dZ_Start,
double dA_Start, double dB_Start, double dC_Start,
double dX_End, double dY_End, double dZ_End,
double dA_End, double dB_End, double dC_End) override ;
bool InsertDependence( int nIdPrec, int nIdNext) override ;
bool InsertSuggestedDependences( int nIdPrec, int nIdNext) override ;
// Impostazione parametri lavorazione
bool SetFirstMachining( int nId) override ;
bool SetLastMachining( int nId) override ;
bool SetFeeds( double dFeedL, double dFeedA) override ;
bool SetAllGroupsAsMandatory( bool bAllMandatory) override ;
// Risultati
bool GetResult( INTVECTOR& vIds) override ;
public :
MachOptimization( void) ;
private :
// Calcolo dei tempi tra le lavorazioni
double CalcTimeLavLav( const MachOptm& Lav1, const MachOptm& Lav2, bool bLin) ;
bool CalcTimeLavLavTC( const MachOptm& Lav1, const MachOptm& Lav2, bool bLin,
double& dTimeLav1TC1, double& dTimeTC1TC2, double& dTimeTC2Lav2,
double& dTUnload1, double& dTLoad2) ;
bool CalcMachTime( int nInd1, int nInd2, int& nTime) ;
// Controllo Conflitti tra dipendenze e Gestione Dipendenze
bool CheckDependences( int nIdPrev, int nIdNext, const INTINTVECTOR& vDep,
bool bBlockMessages, bool& bExist, bool& bConflict) ;
bool SetGroupDependences( void) ;
// Calcolo della Matrice dei tempi, Del fattore perso dipendenze suggerite e della soluzione ottimale
bool ComputeTimeMatrix( INTMATRIX& mTimes) ;
// Utility
int GetIndById( int nId) ;
private :
MACHOPTMVECTOR m_vMachOptm ; // Vettore delle lavorazioni
TOOLOPTMVECTOR m_vToolOptm ; // Vettore degli utensili
INTINTVECTOR m_vDependences ; // Vettore di dipendenze ( IdPrev, IdSucc) -> deve essere rispettato
INTINTVECTOR m_vSuggDependences ; // Vettore delle dipendenze suggerite ( IdPrev, IdSucc) -> si cerca di rispettarle
double m_dFeedL ; // Feed Lineare
double m_dFeedA ; // Feed Angolare
bool m_bAllMandatory ; // Flag per impostare ogni dipendenza da Gruppo come vincolo
} ;