PaGMO  1.1.5
sagas.cpp
1 /*****************************************************************************
2  * Copyright (C) 2004-2015 The PaGMO development team, *
3  * Advanced Concepts Team (ACT), European Space Agency (ESA) *
4  * *
5  * https://github.com/esa/pagmo *
6  * *
7  * act@esa.int *
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  * This program is distributed in the hope that it will be useful, *
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
17  * GNU General Public License for more details. *
18  * *
19  * You should have received a copy of the GNU General Public License *
20  * along with this program; if not, write to the *
21  * Free Software Foundation, Inc., *
22  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
23  *****************************************************************************/
24 
25 #include <string>
26 
27 #include "sagas.h"
28 #include "../AstroToolbox/mga_dsm.h"
29 
30 namespace pagmo { namespace problem {
31 
32 const int sagas::sequence[3] = {3, 3, 5};
33 
35 
37 sagas::sagas():base(12), problem(time2AUs,sequence,3,0,0,0,0,0)
38 {
39  //Setting the objective parameters
40  problem.AUdist = 50.0;
41  problem.DVtotal = 6.782;
42  problem.DVonboard = 1.782;
43 
44  const double lb[12] = {7000, 0, 0, 0, 50, 300, 0.01, 0.01, 1.05, 8, -M_PI, -M_PI};
45  const double ub[12] = {9100, 7, 1, 1, 2000, 2000, 0.9, 0.9 ,7 ,500 ,M_PI,M_PI};
46  set_bounds(lb,lb+12,ub,ub+12);
47 }
48 
51 {
52  return base_ptr(new sagas(*this));
53 }
54 
57 {
58  MGA_DSM(x, problem,f[0]);
59 }
60 
62 
66 void sagas::set_sparsity(int &lenG, std::vector<int> &iGfun, std::vector<int> &jGvar) const
67 {
68  lenG=12;
69  iGfun.resize(lenG);
70  jGvar.resize(lenG);
71  for (int i = 0; i<lenG; ++i)
72  {
73  iGfun[i] = 0;
74  jGvar[i] = i;
75  }
76 }
77 
78 std::string sagas::get_name() const
79 {
80  return "Sagas";
81 }
82 
83 }} //namespaces
84 
85 BOOST_CLASS_EXPORT_IMPLEMENT(pagmo::problem::sagas)
Root PaGMO namespace.
boost::shared_ptr< base > base_ptr
Alias for shared pointer to base problem.
Definition: problem/base.h:62
std::vector< double > decision_vector
Decision vector type.
Definition: types.h:40
void objfun_impl(fitness_vector &, const decision_vector &) const
Implementation of the objective function.
Definition: sagas.cpp:56
Base problem class.
Definition: problem/base.h:148
void set_sparsity(int &, std::vector< int > &, std::vector< int > &) const
Implementation of the sparsity structure.
Definition: sagas.cpp:66
base_ptr clone() const
Clone method.
Definition: sagas.cpp:50
std::vector< double > fitness_vector
Fitness vector type.
Definition: types.h:42
SAGAS MGA-DSM Problem.
Definition: sagas.h:52
void set_bounds(const decision_vector &, const decision_vector &)
Bounds setter from pagmo::decision_vector.
sagas()
Constructor.
Definition: sagas.cpp:37
std::string get_name() const
Get problem's name.
Definition: sagas.cpp:78