Hello fellow OR Exchangers,

I have the following Max problem:


Max f = sum_i( a_i * y_i) problem
{ a_i all Positive is the parameter and y_i is variable}

s.t

constraints on x

constraints on x and z

and the problem making constraints:

y <= ( (d - t(x,z)) / 4d) + 1
{ d is a parameter, and t(x,z) at most can be = 4d }


y is NOT a decision variable, z is the decision variable, and x is a function of z, and y is a function of x; y is an indicator variable, I want y to indicate: if t(x,z) > d then set y = 0 else if t(x,z) <= d set y = 1,

and what y <= ( (d - t(x,z)) / 4d) + 1 does is :

(1) when t(x,z) <= d ---> 0 < (d - t(x,z)) / 4d < 1 ---> 1 <= (d - t(x,z)) / 4d + 1 < 2

(2) when t(x,z) > d ---> (d - t(x,z)) / 4d < 0 ---> 0 < (d - t(x,z)) / 4d + 1 < 1

The integer (integer on y) version of the model is irrationally slow even for small instances. The LP relaxation gives the optimal solutions with y either >= 1 or y < 1. The point is every feasible solution of the LP relaxation has ONLY ONE corresponding feasible integer solution and that is to always Round Down on y_values, so that in case (1) y = 1 and in case (2) y = 0. I think I could actually represent this in the objective function as (?):

Max f = sum_i( a_i * RoundDown(y_i) )

So I figured I can get rid of y > 1 ( e.g. y = 1.46) by setting ub = 1 for y. But I don't know how to get rid of y < 1 (e.g. y = 0.35), what if I could tell the solver, CPLEX or Gurobi to always Rounddown when branching on a variable? How can I do that? Is that the right way of solving my intended problem, Or should I reformulate and revise my model? Do you think this is the right way of approaching for what I aim for?

Thank you very much in advance

asked 20 Oct '14, 21:22

Danny's gravatar image

Danny
113
accept rate: 0%

edited 23 Oct '14, 11:46

Your parentheses in the upper limit of y are unbalanced, which makes interpretation of the expression impossible.

(21 Oct '14, 15:28) Paul Rubin ♦♦
1

Thanks Paul for pointing that out, I have revised it now.

(23 Oct '14, 11:32) Danny
Be the first one to answer this question!
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×231
×101
×71
×22

Asked: 20 Oct '14, 21:22

Seen: 1,097 times

Last updated: 23 Oct '14, 11:46

OR-Exchange! Your site for questions, answers, and announcements about operations research.