1

I had a linear programming problem where I am optimizing some function

$$f(x) = \sum_{j}x_jq_jp_j - \sum_{i}\left(\sum_{j}x_jq_jC_{ij} \right) c_i$$

Where $q, p, C, c$ are known.

I now want to extend this problem to something where my $p$ vector depends on the $x$ vector.

That is, I want to change the value of $p_j$ depending on the $x_j$ and original $p_j$. In particular, I want to do it in the following way. Let's take the example where:

$x = [1,0,1]^T$ and $p=[30,20,50]^T$

In this case, I would like my vector $p$ to be altered using the following rule: redistribute the % lost in $p$ following the multiplication with $x$ over all other $p$. So in this case, because the second element of $x$ is 0, I want to redistribute the 20/100 lost over the other $p$, such that $p_{new} = [36,0,60]$ (the other elements became 20% higher)

I am not sure how to incorporate this logic into my linear programming problem.

BarkingCat
  • 241
  • 1
  • 4
  • Hey, your x variables are binary and you want p = 0 whenever x = 0, and the summation of p values should be the same right? Should it be in linear format? because you can easily model it using multiplications of the binary variable(which is also possible to linearize later)?? – Oguz Toragay May 12 '20 at 14:36
  • I don't think I fully follow.. It is indeed true that p=0 when x=0, but summation of x is not the same. Like in the example, initially it was 30+20+50=100, and after it was 36+0+60=96. – BarkingCat May 12 '20 at 14:43
  • Never mind, I didn't fully read the question... – Oguz Toragay May 12 '20 at 14:49
  • Are you only redistributing when $x_j=0$ (as opposed to when $x_j$ is "small"? In your example, what would $M$ be? You wrote it as if it would be a multiplicand, but it sounds more like a function of the first summation in the objective. – prubin May 12 '20 at 15:58
  • Ah yeah you are right. Multiplying by M makes no sense here. So the solution would probably look different.. Indeed we are only redistributing when $x_j=0$ – BarkingCat May 12 '20 at 18:33
  • Is this question now superseded by (and made irrelevant) by your new question? If so, you can delete this one. – LarrySnyder610 May 12 '20 at 20:26
  • Your example redistribution did not actually redistribute the full 20. Your original $p$ vector sums to 100, whereas $p_{new}$ sums to 96. Did you mean to multiply by 1/0.8=1.25, so that $p_{new}=[37.5, 0, 62.5]^T$? – prubin May 12 '20 at 21:31
  • Is $x$ actually binary, or is $x$ continuous (and you just happened to use only 0 and 1 in your example)? – prubin May 12 '20 at 21:37

0 Answers0