Solved

Superbasic and At Bound Value


Badge

Hi!

The model aims to optimize the energy flow in my superstructure and minimize the cost. Most of the data in the listing file show that the status is superbasic and some of them are superbasic, at bound. 

Here is the message showing on top of the listing file.

CONOPT 4.1 constructed the following irreducible infeasibility set (IIS).
The IIS consists of 1 constraint and 1 variable.

HWH(6) .. [ 9 | 273 | IIS ]

    + 1 * Techflow(HW,6) - 0.800 * NGflow(HWH,6) = 0 ; (lhs=-25630, scale=3600000) ****

    name              lower   level   upper   scale
    Techflow(HW,6)     -inf  -25630     inf 3600000
    NGflow(HWH,6)         0       0     inf 3600000  <--- pivot column

The constraint is stated like this:

HWH(t):

Techflow('HW',t)=EfficiencyNG('HWH')*NGflow('HWH',t)

Attached is the zipped file for my model. I would appreciate if anyone could help me to solve this.

icon

Best answer by Marcel Hunting 4 May 2022, 10:43

View original

4 replies

Userlevel 5
Badge +4

Hi @zling. Your project uses the GMP-AOA module to solve an MINLP problem. If I run the project, after loading the case file, then the AIMMS Presolver used by the GMP-AOA module concludes that the model is infeasible, and therefore CONOPT is not called. So I do not know how you obtained that CONOPT 4.1 related message.

The model is infeasible, that is, no feasibile solution exists. AIMMS will print an infeasibility analysis, in the listing file, if you switch on the Solvers General option ‘Display infeasibility analysis’.

The model only seems to be nonlinear because you are using the max() function in the definition of some of the variables. For example, you defined:

maxBPT = max(t,Energyflow('HPS','HPS-MPS',t))

This maxBPT variable is only used in the definition of the variable ccBPT:

ccBPT = (maxBPT*a('BPT'))+b('BPT')

The variable ccBPT is only used, with a positive term, in the objective variable, which you are minimizing. Instead of using the current definition of maxBPT you can therefore use the following constraint:

Constraint c_maxBPT {
IndexDomain: (t);
Unit: hour*kW;
Definition: maxBPT >= Energyflow('HPS','HPS-MPS',t);
}

If you use this constraint then in any optimal solution maxBPT will become equal to max(t,Energyflow('HPS','HPS-MPS',t)). The advantage of using this constraint is that you do not need the max() function, and if you apply this reformulation trick to all variables using the max() function then you can transform this model into a linear MIP model.

Note that reformulating the model as a linear model will not make the model feasible, but for an MIP model it is often easier to analyze infeasibilities. Moreover, solving an MIP model is often faster than solving an MINLP model, and by solving the MIP model you will find a global optimum while GMP-AOA might only find a local optimum (once the model is feasible).

Badge

 

Hi @zling. Your project uses the GMP-AOA module to solve an MINLP problem. If I run the project, after loading the case file, then the AIMMS Presolver used by the GMP-AOA module concludes that the model is infeasible, and therefore CONOPT is not called. So I do not know how you obtained that CONOPT 4.1 related message.

The model is infeasible, that is, no feasibile solution exists. AIMMS will print an infeasibility analysis, in the listing file, if you switch on the Solvers General option ‘Display infeasibility analysis’.

The model only seems to be nonlinear because you are using the max() function in the definition of some of the variables. For example, you defined:

maxBPT = max(t,Energyflow('HPS','HPS-MPS',t))

This maxBPT variable is only used in the definition of the variable ccBPT:

ccBPT = (maxBPT*a('BPT'))+b('BPT')

The variable ccBPT is only used, with a positive term, in the objective variable, which you are minimizing. Instead of using the current definition of maxBPT you can therefore use the following constraint:

Constraint c_maxBPT {
IndexDomain: (t);
Unit: hour*kW;
Definition: maxBPT >= Energyflow('HPS','HPS-MPS',t);
}

If you use this constraint then in any optimal solution maxBPT will become equal to max(t,Energyflow('HPS','HPS-MPS',t)). The advantage of using this constraint is that you do not need the max() function, and if you apply this reformulation trick to all variables using the max() function then you can transform this model into a linear MIP model.

Note that reformulating the model as a linear model will not make the model feasible, but for an MIP model it is often easier to analyze infeasibilities. Moreover, solving an MIP model is often faster than solving an MINLP model, and by solving the MIP model you will find a global optimum while GMP-AOA might only find a local optimum (once the model is feasible).

Hi @Marcel Hunting ! Thank you for your reply! I will try to solve the model again.

I would like to say sorry that I attached a wrong file in the post. Here I will attach the correct file which gives me the CONOPT related message. However, in my latest model, there is more non-linear functions existing and the listing file still gives me the infeasible sign for the HWH constraint. 

Userlevel 5
Badge +4

Hi @zling. The new version of the model is also infeasible but the irreducible infeasibility set printed by CONOPT is not complete. Better would be to switch on the Solvers General options ‘Nonlinear presolve’ and ‘Display infeasibility analysis’ to get a complete infeasibility analysis.

Your model contains the constraint HWH(6):

Techflow(HW,6) = 0.800 * NGflow(HWH,6)

NGflow is a nonnegative variable and therefore this constraint implies that Techflow(HW,6) must be nonnegative. However, this contradicts the constraint HWB(6):

Techflow(HW,6) = -25630

 

Badge

@Marcel Hunting Thank you so much for your help!😊

Reply


Didn't find what you were looking for? Try searching on our documentation pages:

AIMMS Developer & PRO | AIMMS How-To | AIMMS SC Navigator