[SOLVED]Unbounded problem due to constraint

Uncategorized
Jan 25, 2021
A

Hello,

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:

        m_wet=1000;
        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
Ts=(tf-tv(i))/(N-1);
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.

M

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.

A
Replying to #2

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.

M

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

A
Replying to #4

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.