/// <summary>
        /// The code that calls the solver
        /// </summary>
        protected virtual void WriteRunFunctionBody()
        {
            // create & assign initial state, trajectory, bounds and linear constraints


            var start = new TrajectoryStateInstance(this);

            CreateStartState(start);

            var goal = new TrajectoryStateInstance(this);

            CreateGoalState(goal);

            Write(M.Assign(Symbol.StartState, start));
            Write(M.Assign(Symbol.GoalState, goal));

            var Q0 = new TrajectoryInstance(this);

            CreateQ0(Q0);

            var lbounds = new TrajectoryInstance(this);

            CreateLBounds(lbounds);

            var ubounds = new TrajectoryInstance(this);

            CreateUBounds(ubounds);

            var Ae = new SparseTrajTensor();
            var be = new List <MatlabExpression>();

            CreateLinEqualityConstraints(Ae, be);

            var Ai = new SparseTrajTensor();
            var bi = new List <MatlabExpression>();

            CreateLinEqualityConstraints(Ai, bi);
            Write(M.Assign(Symbol.Q0, Q0));
            Write(M.Assign(Symbol.LBounds, lbounds));
            Write(M.Assign(Symbol.UBounds, ubounds));
            Write(M.Assign(Symbol.AE, ToMatrix(Ae)));
            Write(M.Assign(Symbol.BE, M.ColVector(be)));
            Write(M.Assign(Symbol.AI, ToMatrix(Ai)));
            Write(M.Assign(Symbol.BI, M.ColVector(bi)));

            // set optimizer options
            var optionArgs = Cfg.OptimizerOptions.SelectMany((options, idx) => options).ToArray();

            Write(M.Assign(Symbol.Options, M.CallFunction(Symbol.OptimSet, optionArgs)));

            // call the solver
            Write(M.Assign("[Qf, fval, exitFlag, output]", M.CallFunction(Symbol.FminCon,
                                                                          M.RefFunction(Symbol.CostToGoFunction), Symbol.Q0, Symbol.AI, Symbol.BI, Symbol.AE, Symbol.BE,
                                                                          Symbol.LBounds, Symbol.UBounds, M.RefFunction(Symbol.NonLinConstraintFun), Symbol.Options)));

            Write("output");
        }
Exemplo n.º 2
0
 /// <summary>
 /// Create the goal state
 /// </summary>
 protected override void CreateGoalState(TrajectoryStateInstance goal)
 {
     goal.SetValue(CM, Settings.GoalCM);
     goal.SetValue(d, Settings.GoalD);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Create the initial state
 /// </summary>
 protected override void CreateStartState(TrajectoryStateInstance start)
 {
     start.SetValue(CM, Settings.StartCM);
 }
 /// <summary>
 /// Creates the initial state
 /// </summary>
 protected abstract void CreateGoalState(TrajectoryStateInstance goal);
 /// <summary>
 /// Creates the initial state
 /// </summary>
 protected abstract void CreateStartState(TrajectoryStateInstance start);