SDC C-Project CF Review 프로그램
LYW
2021-09-23 c77236e1522caa3e2082dd7b5b32f6c30b125172
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma once
 
#include "GreedyTSP.h"
#include "PathSchedulerData.h"
#include "PathSchedulerResult.h"
 
enum PathSchedulerType {    SchedulerType_Default=0, 
                            SchedulerType_TSP, 
                            SchedulerType_Dual, 
                            SchedulerType_Dual_TSP, 
                            SchedulerType_Dual_Active,
                            SchedulerType_Dual_Active_TSP, 
                            SchedulerType_Flying, 
                            SchedulerType_Dual_Flying, 
                            SchedulerType_Dual_Flying_Random, 
                            SchedulerType_Sorting,
                            SchedulerType_Dual_Sorting,
                            SchedulerType_Dual_Active_Sorting,
                            SchedulerType_Quad_Sorting,
                            SchedulerType_Qual_Active_Sorting,
                            SchedulerType_Qual_Active_TSP,
                            SchedulerType_Count };
 
 
 
 
 
class AFX_EXT_CLASS CPathScheduler
{
public:
    CPathScheduler(void);
    virtual ~CPathScheduler(void);
    void    Reset();
 
public:
    // virtual func
    virtual int        GetSchedulerType() const    { return SchedulerType_Default; }
    virtual int        PathScheduling(const VectorPathData& vecPathData, const VectorPathData& vecStartPath);
    virtual int        PathScheduling(const VectorPathData& vecPathData, const SPathData& startPath);
 
    virtual int        PathScheduling(const SPathData* pPathData, int nPathDataCount, const SPathData* pStartPath, int nStartPathCount);
    virtual int        PathScheduling(const SPathData* pPathData, int nPathDataCount, const SPathData& startPath);
    
public:
    int                PathScheduling(const VectorPathData& vecPathData, const VectorPathData& vecStackPathData, const VectorPathData& vecStartPath);
 
protected:
    virtual int        CalculatePath(const SPathData& startPath, const VectorPathData& vecTotalPathData, CPathSchedulerResult& scheduleResult);
    virtual int        CalculatePath(const SPathData& startPath, const VectorPathData& vecTotalPathData, const CRect& rtRange, CPathSchedulerResult& scheduleResult);
 
    virtual int        CalculatePath(const SPathData& startPath, const VectorPathData& vecFirstPathData, const VectorPathData& vecSecondPathData, CPathSchedulerResult& scheduleResult);
 
public:
    // getter
    int    GetPathSchedulerResultCount() const;
    double    GetTotalSchedulerTime(int nIndex=0) const;
    double    GetTotalSchedulerDistance(int nIndex=0) const;
    CPathSchedulerParm* GetPathSchedulerParam();
    CPathSchedulerResult* GetPathSchedulerResult(int nIndex=0);
 
    int    GetRangeRectCount() const;
    CRect* GetRangeRect(int nIndex);
    const CRect* GetRangeRect(int nIndex) const;
 
    // setter
    void SetPointInfo(int nMin, int nMax);
    void SetPathSchedulerParam(const CPathSchedulerParm& scheduleParam);
 
    // load/save
    BOOL LoadPathSchedulerParam(const CString& strFilename);
    BOOL SavePathSchedulerParam(const CString& strFilename);
 
protected:
    BOOL    CalculateDistanceSpeedTime(SSchedulerResult& pt1, const SSchedulerResult &pt2);
    BOOL    CalculateDistanceSpeedTime(SSchedulerResult& pt1, double dPosX, double dPosY);
 
protected:
    int                            m_nPointMin;
    int                            m_nPointMax;
    CPathSchedulerParm            m_PathSchedulerParam;
    VectorPathSchedulerResult    m_vecPathSchedulerResult;
 
    VectorRect                    m_vecRangeRect;
};