WSF
WsfQuantumMatrix.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFQUANTUMMATRIX_HPP
13#define WSFQUANTUMMATRIX_HPP
14
15#include "wsf_mil_export.h"
16
17#include <vector>
18
21#include "WsfQuantumTask.hpp"
22
23
24class WSF_MIL_EXPORT WsfQuantumMatrix
25{
26public:
27 WsfQuantumMatrix() = default;
30 virtual ~WsfQuantumMatrix();
31
32 std::vector<WsfAssetPerception*>& Assets() { return mAssets; }
33 std::vector<WsfQuantumTask*>& Tasks() { return mTasks; }
34 std::vector<std::vector<double>>& Values() { return mValues; }
35 double Value(size_t taskIndex, size_t assetIndex) { return mValues[taskIndex][assetIndex]; }
36 std::vector<std::vector<double>>& Profit() { return mProfits; }
37 double Profit(size_t taskIndex, size_t assetIndex) { return mProfits[taskIndex][assetIndex]; }
38 void ClearAssets();
39 void SetAssets(std::vector<WsfAssetPerception*>& aAssets);
40 void SetTasks(std::vector<WsfQuantumTask*>& aTasks);
41 virtual void UpdateEvaluations(double aSimTime, WsfQuantumEvaluator& aEvaluator, std::vector<WsfLocalTrack*>& aPerception);
42
43 void ClearTasks();
44 void EraseTask(size_t taskIndex); // row
45 void RemoveTask(size_t taskIndex); // row
46 void EraseAsset(size_t assetIndex); // column
47 void RemoveAsset(size_t assetIndex); // column
48 // tasks are in "rows"
49 static void SetRow(std::vector<std::vector<double>>& m, size_t aRow, double aValue);
50 // tasks are in "rows"
51 static void RemoveRow(std::vector<std::vector<double>>& m, size_t aRow);
52 // assets are in "columns"
53 static void SetColumn(std::vector<std::vector<double>>& m, size_t aCol, double aValue);
54 // assets are in "columns"
55 static void RemoveColumn(std::vector<std::vector<double>>& m, size_t aCol);
56
57protected:
58 std::vector<WsfAssetPerception*> mAssets;
59 std::vector<WsfQuantumTask*> mTasks;
60 std::vector<std::vector<double>> mValues;
61 std::vector<std::vector<double>> mProfits;
62};
63
64#endif
Definition WsfQuantumEvaluator.hpp:31
double Profit(size_t taskIndex, size_t assetIndex)
Definition WsfQuantumMatrix.hpp:37
double Value(size_t taskIndex, size_t assetIndex)
Definition WsfQuantumMatrix.hpp:35
std::vector< WsfQuantumTask * > mTasks
Definition WsfQuantumMatrix.hpp:59
WsfQuantumMatrix & operator=(const WsfQuantumMatrix &)
Definition WsfQuantumMatrix.cpp:33
WsfQuantumMatrix()=default
std::vector< std::vector< double > > & Profit()
Definition WsfQuantumMatrix.hpp:36
std::vector< WsfQuantumTask * > & Tasks()
Definition WsfQuantumMatrix.hpp:33
std::vector< std::vector< double > > mProfits
Definition WsfQuantumMatrix.hpp:61
std::vector< WsfAssetPerception * > mAssets
Definition WsfQuantumMatrix.hpp:58
std::vector< std::vector< double > > mValues
Definition WsfQuantumMatrix.hpp:60
std::vector< WsfAssetPerception * > & Assets()
Definition WsfQuantumMatrix.hpp:32
std::vector< std::vector< double > > & Values()
Definition WsfQuantumMatrix.hpp:34
Copyrights Multiple, All Rights Reserved