Hi
PROC OPTMILP returns _value_ columns in the PRIMALOUT= output. The documentation only states: "specifies the value of the variable in the current solution". Would anyone know its mathematical meaning?
When running the optimization for a binary variable x (searching for "1" if a term corresponding to a combination of parameters should contribute to the cost function and "0" when the term should vanish), the _value_ is in interval [0, 1]. I guess, the best solutions, i.e., the ones I want, are given by _value_=1.
Because of constrains, each (original) observation can have only one combination of parameters. However, the same combination of parameters is found multiple times in the output table; one once with _value_=1 but several times for _value_<1.
I'll assume that the final solution (for optimized combination of observations) is a data set "where _value_=1". It'd be mathematically reasonable.
How can I interpret lower values? For example, what "kind of a solution" do I get if
(Technical note: with original observation I mean a record ID in the input table. The output table has multiple rows for this ID, one corresponding to each distinct _value_.)
The inputs for PROC OPTMILP are decision variables, bounds, integrality restrictions, linear constraints, and a linear objective. By default, the MILP solver that is invoked by PROC OPTMILP finds one optimal solution, which is an assignment of values to decision variables such that the variable bounds, integrality restrictions, and linear constraints are satisfied and the objective value is the best possible. To retrieve the resulting solution, you can use the PRIMALOUT= option to name an output data table that will contain one observation per decision variable. The _VAR_ column contains the name of each variable, and the _VALUE_ column contains the value of that variable in the solution returned by the MILP solver. For binary variables, the _TYPE_ column will be B, and the _VALUE_ will be "close to" 0 or 1 (within the integer tolerance, whose default is 1e-5).
If this explanation does not provide sufficient clarity, maybe it would help if you can supply your specific input and output that you want to interpret.
Hello,
I have moved your post to the
Home > Analytics > OR/MS - board.
Higher chances for getting a good answer (solution) here.
Koen
The inputs for PROC OPTMILP are decision variables, bounds, integrality restrictions, linear constraints, and a linear objective. By default, the MILP solver that is invoked by PROC OPTMILP finds one optimal solution, which is an assignment of values to decision variables such that the variable bounds, integrality restrictions, and linear constraints are satisfied and the objective value is the best possible. To retrieve the resulting solution, you can use the PRIMALOUT= option to name an output data table that will contain one observation per decision variable. The _VAR_ column contains the name of each variable, and the _VALUE_ column contains the value of that variable in the solution returned by the MILP solver. For binary variables, the _TYPE_ column will be B, and the _VALUE_ will be "close to" 0 or 1 (within the integer tolerance, whose default is 1e-5).
If this explanation does not provide sufficient clarity, maybe it would help if you can supply your specific input and output that you want to interpret.
Could there be multiple _var_ rows, each one having different _value_? If so, how do I choose the "best" one?
Please share your input and output if possible.
Hello @asasgdsfa ,
It would be better for a new question to also start a new topic / post.
You can always refer to an already solved question if your new question builds on that.
Since this topic is already solved, hardly anyone is going to check this out. Only the community members involved in the old question (because we were notified there was an update). In other words : you bring down your chances of getting a quick and good answer.
Coincidentally (well, ... not that coincidentally), that notified members list includes @RobPratt who answers the lion's share of questions in this board, ... but it's still an inadvisable practice to post updates in already solved topics.
Koen
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.