Why does the [x,fval,ex​itflag,out​put,lambda​] = linprog(f,​A,b,Aeq,be​q,lb,ub) function return only integer numbers?

Hi, I'm doing an optimization problem where I use the [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub) funtion. However, the results I get give me only integer numbers. For example, I'm expecting a result like 1.710, but I get 2.0. When I expect a value of 0.855, I get 1.0
How can I get the rational numbers with decimals, instead of only integer numbers?

8 Comments

Does your "expected result" give a smaller value for f than the "integer result" linprog returns ?
My f was defined as [10 12]'. The result of the linprog returns the 10 perfectly, which is the LMP at bus 1. For LMP at bus 2 I should get 12, but instead the linprog returns a value higher than 12.
Does your non-integer solution satisfy the constraints represented by the A, b, Aeq, and beq matrices?
Does it satisfy the bounds represented by the lb and ub vectors?
If the answer to either of those questions is no, then your non-integer "solution" is not a solution.
My f was defined as [10 12]'. The result of the linprog returns the 10 perfectly, which is the LMP at bus 1. For LMP at bus 2 I should get 12, but instead the linprog returns a value higher than 12.
You should not get f as solution from linprog, but an x that minimizes f'*x under your constraints.
So again the question: is [10 12]*result_linprog or [10 12]*(your result) smaller ?
Does your result satisfy the constraints ?
Does it satisfy the bounds ?
Yes, my x satisfies the constraints, and also the bounds.
And what about the third question:
is [10 12]*result_linprog or [10 12]*(your result) smaller ?
The results are slightly higher than expected, but I can live with that.
If you know a solution you can live with, you don't need an optimizer, do you ?

Sign in to comment.

Answers (1)

Hi Romeo,
I understand that you want to set the precision of the output variable.
You can use the format function to set the precision of the output.
format long
x,fval,exitflag,output,lambda = linprog(f,A,b,Aeq,beq,lb,ub);
To know more information about the format function, you can visit the documentation page of format.
I hope this solves your query.

Categories

Products

Release

R2021b

Asked:

on 27 Oct 2022

Answered:

on 11 Sep 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!