[SOLVED]Unbounded problem due to constraint


I am attempting to rewrite the following second order cone program (SOCP) as is given by this paper:
http://arc.aiaa.org | DOI: 10.2514/1.G004155
The problem is called SOCP1 and is the following:

In this problem, I have managed to obtain a solution without implementing the control rate constraint (outlined in red).
In code, the constraint is written as the following:

        s(:,i+1) >= s(:,i)-Ts*Tdmax/m_wet;
        s(:,i+1) <= s(:,i)+Ts*Tdmax/m_wet;

Where m_wet is m(t), which the authors consider as a constant mass to keep convexity intact. The reason why I am almost certain that it is not the values I am giving these variables that is causing the issue, is because I have tried giving a very large bound for s(:,i+1) by making m_wet either really small, or Tdmax really big, or both. The index i takes place of k, Tdmax the Tmax term with the dot, and Ts the T with the s subscript, and s is the sigma variable.

I’ve gone through https://yalmip.github.io/debugginginfeasible/ and didn’t receive a solution but bisecting the code ultimately led me to believe that there is something wrong with the way I am writing this constraint.

What I haven’t tried doing is using CVXQUAD to replace expressions with log in my code. However, I haven’t considered this yet because my log expressions are only for constant variables (thus not the declared variables after the line cvx_begin) and I do not believe that is what the amendments that CVXQUAD makes target.

So, when I do include this constraint, the problem returns unbounded. Why is this the case? Any help is appreciated.

EDIT: Ts is defined by
Where tf is the fixed final time, tv is a predeclared vector outside of the cvx routine, and N is the fixed number of discretization nodes for the problem (N=length(tv)).

SOLUTION: The issue with the unboundedness of the problem was fixed by giving a larger final time (tf) for the problem. This wasn’t directly obvious because the final time is a constant input which isn’t applied directly to any of the decision variables. In conclusion, there was no problem in the formulation/syntax of the constraint, but it was simply a matter of artificial unboundedness brought by the fixed final time.

There is no need for CVXQUAD when log is only involved with input data as opposed to CVX variables or expressions.

As for your model, it looks like a straightforward Linear Programming problem, with the exception of a couple second order cone constraints which can be straightforwardly handled using norm. So it’s really a matter of keeping all the indices straight, which is really a MATLAB matlter rather than anything specific to CVX.

1 Like

That is good to hear, and it was what I had in mind as well. Regarding the way I have written the constraint, there is nothing inherently wrong with the syntax is there? Like I said, whatever values the Ts*Tdmax/m_wet term takes up, it results in an unbounded problem.

Follow the advice in https://yalmip.github.io/debuggingunbounded/ .

1 Like

The unbounded variable seemed to have been the time. But, because it is fixed, It wasn’t obvious to me. After increasing the end time of the problem, I finally received a feasible solution. Many thanks.