How to analyse sensitivity in multi-optimal solution?

Here is the problem I meet:
image

  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.