# How to analyse sensitivity in multi-optimal solution?

Here is the problem I meet:

1. find the best plan;
2. How much should the profit per unit of product III increase to make it worthwhile to arrange production?
3. What is the range of variation of the profit of product I that keeps the original optimal plan unchanged?
4. If the capacity of equipment A is 100+\lambda, what is the range of variation of \lambda that maintains the optimal basis unchanged?

I try to use sensitivity analysis,but it has 2 optimal solution,what should I do ?

function p2_19()
A = [1 1 1;10 4 5;2 2 6]
b = [100,600,300]
c = [10,6,4]
model = Model(Gurobi.Optimizer);set_silent(model)
@variable(model,x[1:3] >= 0,Int)
@constraint(model,C[i=1:3],sum(A[i,:] .* x) <= b[i])
@objective(model,Max,sum(x .* c))
optimize!(model)
solution_summary(model)
#     report = lp_sensitivity_report(model)
end

* Status
Result count       : 2
Termination status : OPTIMAL
Message from the solver:
"Model was solved to optimality (subject to tolerances), and an optimal solution is available."

1 Like

Probably this tabular display makes a lot of sense to you but I donâ€™t understand it at all, what do these numbers mean?

Itâ€™s just a basic a linear programming problem,if you know it.

I rarely do this sort of thing, so Iâ€™ll let someone else help you, Iâ€™m just pointing out that if you provide more information you are likely to get more help.

I assume ABC are some machines, I II and III are? Maybe some products? Capacity is some kind of product count per unit time? The numbers in the boxes are? Payoffs? Profits?

Spend two minutes writing a description of your problem and you will get better help.

Is this a homework question?

One thing I would suggest you look at is the Int annotation on your variables. Does a mixed-integer program have a dual solution?

I just started self-studying operations research recently and this is a question from the book. I found that integer programming problems can apparently use Lagrangian duality on the internet, but I donâ€™t know if itâ€™s feasible.

Try out this code:

A = [1 1 1; 10 4 5; 2 2 6]
b = [100, 600, 300]
c = [10, 6, 4]
model = Model(Gurobi.Optimizer)
set_silent(model)
@variable(model, x[1:3] >= 0)
@constraint(model, cons, A * x .<= b)
@objective(model, Max, c' * x)
optimize!(model)
solution_summary(model)
report = lp_sensitivity_report(model)
value.(x)
report[x[3]]
report[x[1]]
report[cons[1]]


In general, you canâ€™t do sensitivity analysis for a mixed-integer program in the same way you can for an LP (which is one reason the function is called lp_sensitivity_report). You could search for â€śmixed-integer program sensitivity analysis,â€ť but if youâ€™re just getting started studying OR, the textbook almost certainly refers to the LP case.