# Integer part of a variable

• 6 replies
• 283 views

### 6 replies

Userlevel 5
+5

@QueraltA , do you always want to use the rounded down value ?

Is the variable total_power_plants involved in other constraints ? Where is the value 2.7 coming from ?

Something like `total_power_plants = sum[index_plants, power(index_plants)]` ..

I believe the approach in Model a Rounded Variable — AIMMS How-To should work in your case, can you elaborate how it does not fit your needs ?

If you only need the rounded down value, you could even drop the auxilliary variable aux1 and just have `var1 = value - aux2` as your constraint. Set the range of aux2 as [0,1] and the integer variable var1’s will be equal to rounddown(value).

Userlevel 5
+7

Looking at the variable name, I am assuming you cannot have 0.7 powerplants (it is either 0, or 1, or 2, etc).

In your case, you can set the range of the variable total_power_plants to integer and this should result in the variable only taking integer values.

Thanks for your quick response. You are right, we only can have a integer number of power plants but I can’t set the range of this variable to integer because it is calculated from the production of the plant and this variable doesn’t have to be integer.

Thanks a lot for your answer. I have changed my model and now, due to these changes, I want to have the top value of total_power_plants.  I have solved it as follows:

total_power_plants_integer = total_power_plants + aux1

Where total_power_plants_integer is an integer variable and the range of aux1 is [0,1]. Generally, this solution works but when “total_power_plants” is an integer value I want to keep its value. For instance:

total_power_plants = 10

I want:

total_power_plants_integer=10

aux1=0

I tried to solve this problem changing the aux1 range: [0,1) but the solution with AIMMS was:

Warning: Postsolve indicates that solution to funciton_objetive is not reliable (see message window).

And the solution obtained does not make sense because some variables were outside their bounds.

` `

` `
` `

Userlevel 5
+5

@QueraltA

if you need only the roundUp value, you could even just do the below.

`total_power_plants_integer >= total_power_plants`

Include total_power_plants_integer to your objective function, with a minimize direction. If your problem is a minimization, then obj + total_power_plants_integer and if it is a maximization problem, then obj - total_power_plants_integer.

Regarding the “postsolve indicates solution is unreliable” warning, can you review this thread on our (deprecated) google groups forum ? https://groups.google.com/g/aimms/c/67sYx0ZHFMo/m/sUWlkLe_0dIJ

Setting the integrality option to 1 should work in most cases.

You can also review this post to improve the scaling of your model: Marcel Hunting on the AIMMS Scaling tool | AIMMS Community

Userlevel 4
+6

Hi @QueraltA ,

Hope all is well.