result.cpp 6.01 KB
Newer Older
Savva Golubitsky's avatar
Savva Golubitsky committed
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
#include <libtools.h>
#include <anymap.h>

typedef std::function<int(com::Anymap)> IntFunc;
typedef std::function<bool(com::Anymap)> BoolFunc;
typedef std::function<bool*(com::Anymap)> BoolArrFunc;  

IntFunc LoadEntry(std::string lib, std::string func) {
    DllHandle handler;
    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
}

BoolFunc LoadPred(std::string lib, std::string func) {
    DllHandle handler;
    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
}

BoolArrFunc LoadSelector(std::string lib, std::string func){
    DllHandle handler;
    return com::lib::loadFunction<bool* (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
}

void check_pred(bool predval, std::string predname) {
    if predval{
        std::cout<<"Predicate"<<predname<<"returned FALSE!"<<std::endl;
        exit(-1)
    }   
}

int main(int argc, char const *argv[])
{   
    auto data = com::Anymap();
    //Predicates
    auto test_funcs.simplest_positiveness_predicate = LoadPred("test_funcs.simplest", "positiveness_predicate"); 
35
    auto libcomsdk_pass_predicate = LoadPred("libcomsdk", "pass_predicate"); 
Savva Golubitsky's avatar
Savva Golubitsky committed
36 37
    //Entry functions
    auto test_funcs.simplest_increment_a_edge = LoadEntry("test_funcs.simplest", "increment_a_edge"); 
38 39 40 41 42 43 44 45
    auto libgcdfes_pso_swarm_init = LoadEntry("libgcdfes", "pso_swarm_init"); 
    auto libgcdfes_pso_agent_init = LoadEntry("libgcdfes", "pso_agent_init"); 
    auto libgcdfes_pso_task_data_reinit = LoadEntry("libgcdfes", "pso_task_data_reinit"); 
    auto libgcdfes_pso_hom_agent_postproc = LoadEntry("libgcdfes", "pso_hom_agent_postproc"); 
    auto libgcdfes_pso_agent_reinit = LoadEntry("libgcdfes", "pso_agent_reinit"); 
    auto libgcdfes_pso_swarm_analysing = LoadEntry("libgcdfes", "pso_swarm_analysing"); 
    auto libgcdfes_pso_swarm_reinit = LoadEntry("libgcdfes", "pso_swarm_reinit"); 
    auto libcomsdk_pass_processor = LoadEntry("libcomsdk", "pass_processor"); 
Savva Golubitsky's avatar
Savva Golubitsky committed
46 47 48 49
    //Selectors
    //Branch tokens
    bool* SEL___BEGIN__ = new bool[1];
    std::fill_n(SEL___BEGIN__, 1, true);
50 51 52 53 54 55
    bool* SEL_gcdhom_inverted_model_pso1_S_4 = new bool[1];
    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_4, 1, false);
    bool* SEL_gcdhom_inverted_model_pso1_S_6 = new bool[2];
    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_6, 2, false);
    bool* SEL_gcdhom_inverted_model_pso1_S_7 = new bool[2];
    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_7, 2, false);
Savva Golubitsky's avatar
Savva Golubitsky committed
56 57 58 59
    bool* SEL___END__ = new bool[0];
    std::fill_n(SEL___END__, 0, false);

if (SEL___BEGIN__[0]){
Savva Golubitsky's avatar
Savva Golubitsky committed
60 61 62
	check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate");
	test_funcs.simplest_increment_a_edge(data);
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
63
	libgcdfes_pso_swarm_init(data);//Инициализация метода роя частиц.
Savva Golubitsky's avatar
Savva Golubitsky committed
64
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
65
	libgcdfes_pso_swarm_init(data);//Инициализация роя частиц.
Savva Golubitsky's avatar
Savva Golubitsky committed
66
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
67
	libgcdfes_pso_agent_init(data);//Инициализация отдельной частицы в рамках метода роя частиц.
Savva Golubitsky's avatar
Savva Golubitsky committed
68
}
69 70 71 72 73 74 75 76 77
gcdhom_inverted_model_pso1_S_4:
if (!(false || SEL___BEGIN__[0] || SEL_gcdhom_inverted_model_pso1_S_6[0] || SEL_gcdhom_inverted_model_pso1_S_7[0] )){
	for (int seli = 0; seli < 1; seli++)
		SEL_gcdhom_inverted_model_pso1_S_4[seli]=false;
}else {
	for (int seli = 0; seli < 1; seli++)
		SEL_gcdhom_inverted_model_pso1_S_4[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_4[0]){
Savva Golubitsky's avatar
Savva Golubitsky committed
78
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
79
	libgcdfes_pso_task_data_reinit(data);//Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения.
Savva Golubitsky's avatar
Savva Golubitsky committed
80
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
81 82 83 84 85 86 87 88 89 90 91
	libgcdfes_pso_hom_agent_postproc(data);//Постпроцессинг после решения отдельной задачи методом асимптотического осреднения.
}
gcdhom_inverted_model_pso1_S_6:
if (!(false || SEL_gcdhom_inverted_model_pso1_S_4[0] )){
	for (int seli = 0; seli < 2; seli++)
		SEL_gcdhom_inverted_model_pso1_S_6[seli]=false;
}else {
	for (int seli = 0; seli < 2; seli++)
		SEL_gcdhom_inverted_model_pso1_S_6[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_6[0]){
Savva Golubitsky's avatar
Savva Golubitsky committed
92
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
93 94 95 96
	libgcdfes_pso_agent_reinit(data);//Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц.
	goto gcdhom_inverted_model_pso1_S_4;
}
if (SEL_gcdhom_inverted_model_pso1_S_6[1]){
Savva Golubitsky's avatar
Savva Golubitsky committed
97
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
98 99 100 101 102 103 104 105 106 107 108
	libgcdfes_pso_swarm_analysing(data);//Анализ всего роя частиц в рамках метода роя частиц.
}
gcdhom_inverted_model_pso1_S_7:
if (!(false || SEL_gcdhom_inverted_model_pso1_S_6[1] )){
	for (int seli = 0; seli < 2; seli++)
		SEL_gcdhom_inverted_model_pso1_S_7[seli]=false;
}else {
	for (int seli = 0; seli < 2; seli++)
		SEL_gcdhom_inverted_model_pso1_S_7[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_7[0]){
Savva Golubitsky's avatar
Savva Golubitsky committed
109
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
110 111 112 113
	libgcdfes_pso_swarm_reinit(data);//Реинициализация всего роя частиц в рамках метода роя частиц.
	goto gcdhom_inverted_model_pso1_S_4;
}
if (SEL_gcdhom_inverted_model_pso1_S_7[1]){
Savva Golubitsky's avatar
Savva Golubitsky committed
114 115 116
	//ПАСС, морфизм.
	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
	libcomsdk_pass_processor(data);
117 118
}
if (!(false || SEL_gcdhom_inverted_model_pso1_S_7[1] )){
Savva Golubitsky's avatar
Savva Golubitsky committed
119 120 121 122 123 124 125 126 127 128 129 130
	for (int seli = 0; seli < 0; seli++)
		SEL___END__[seli]=false;
}else {
	for (int seli = 0; seli < 0; seli++)
		SEL___END__[seli]=true;
}


TERM:
    std::cout<<"Termination!\n"; 
    return 0;
}