10 #ifndef __MITTELMANNDISTRCNTRLNEUMA_HPP__
11 #define __MITTELMANNDISTRCNTRLNEUMA_HPP__
19 #include "configall_system.h"
28 # error "don't have header file for math"
38 # error "don't have header file for stdio"
42 using namespace Ipopt;
71 virtual bool get_starting_point(
Index n,
bool init_x,
Number*
x,
73 Index m,
bool init_lambda,
106 bool& use_x_scaling,
Index n,
108 bool& use_g_scaling,
Index m,
146 virtual bool fint_cont_dydy_alwayszero()
const =0;
151 virtual bool fint_cont_dudu_alwayszero()
const =0;
156 virtual bool fint_cont_dydu_alwayszero()
const =0;
167 virtual bool d_cont_dydy_alwayszero()
const =0;
172 virtual bool d_cont_dudu_alwayszero()
const =0;
177 virtual bool d_cont_dydu_alwayszero()
const =0;
242 return (N_+2)*(N_+2) + (j-1) + (N_)*(i-1);
248 return (j-1) + N_*(i-1);
279 printf(
"N has to be at least 1.");
290 Number u_init = (ub_u+lb_u)/2.;
292 SetBaseParameters(N, lb_y, ub_y, lb_u, ub_u, b_0j, b_1j, b_i0, b_i1, u_init);
299 return sin(2.*pi_*x1)*sin(2.*pi_*x2);
304 Number diff_y = y-y_d_cont(x1,x2);
305 return 0.5*(diff_y*diff_y + alpha_*u*u);
310 return y-y_d_cont(x1,x2);
426 printf(
"N has to be at least 1.");
437 Number u_init = (ub_u+lb_u)/2.;
439 SetBaseParameters(N, lb_y, ub_y, lb_u, ub_u, b_0j, b_1j, b_i0, b_i1, u_init);
446 return sin(2.*pi_*x1)*sin(2.*pi_*x2);
451 Number diff_y = y-y_d_cont(x1,x2);
452 return 0.5*diff_y*diff_y;
457 return y-y_d_cont(x1,x2);
574 printf(
"N has to be at least 1.");
585 Number u_init = (ub_u+lb_u)/2.;
587 SetBaseParameters(N, lb_y, ub_y, lb_u, ub_u, b_0j, b_1j, b_i0, b_i1, u_init);
599 return u*(M_*u - K_*y);
610 return 2.*M_*u - K_*y;
648 return y*(u + b_*y - a(x1,x2));
653 return (u + 2.*b_*y -a(x1,x2));
710 return 7. + 4.*sin(2.*pi_*x1*x2);