Dear OR-Exchange Experts,

I would like to know if it is possible to linearize the following objective function:

$$\text{minimize } Z(\textbf{x}) = m_1 * x_1 + m_2 * x_2 + c_1 * \max((x_1 + x_2) - C_{\epsilon}, 0) - c_2 * \min((x_1 + x_2) + C_{\chi}, 0)$$

subject to

$$L_1 \le x_1 \le U_1$$

$$L_2 \le x_2 \le U_2$$

\(L\) and \(U\) are the lower and the upper bound. \(x_1\), \(x_2\) can adopt any real value between the bounds (either negative or positive values)

where the following parameters are constant and positive, i.e. $$m_1, m_2, c_1, c_2, C_{\epsilon}, C_{\chi} \ge 0$$.

My first approach is to move the maximum and minimum into a constraint with two new continuous variables of a special ordered set of type 1: $$\{k_1, k_2\}$$ with exactly that order.

and add the following two constraints: $$k_1 \ge c_1 * ((x_1 + x_2) - C_{\epsilon})$$ $$k_2 \ge -c_2 * ((x_1 + x_2) + C_{\chi})$$

such that the objective function becomes $$\text{minimize } Z(\textbf{x}) = m_1 * x_1 + m_2 * x_2 + k_1 + k_2$$

I am not sure if it is not too complex. Maybe someone of you know some hints or a better way. I am thankful for any help. Thank you.

asked 11 Aug '16, 09:14

Thomas's gravatar image

Thomas
236
accept rate: 0%

edited 11 Aug '16, 18:02

Paul%20Rubin's gravatar image

Paul Rubin ♦♦
14.6k412


Your method is fine, but you need only constraint \(k_1 \ge 0\) and \(k_2 \ge 0\). The SOS1 requirement is correct (given that both \(C_\epsilon\) and \(C_\chi\) are nonnegative), but it is unnecessary.

link

answered 11 Aug '16, 18:05

Paul%20Rubin's gravatar image

Paul Rubin ♦♦
14.6k412
accept rate: 19%

Thank you very much, Paul.

(12 Aug '16, 03:43) Thomas
Your answer
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:

×28
×14
×4
×1

Asked: 11 Aug '16, 09:14

Seen: 1,030 times

Last updated: 12 Aug '16, 03:43

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