0

I need some help modelling the following logic as a mixed integer linear programming constraints for a vehicle routing problem.

The Variables involved are the following:

  1. Xij, SDVlmj, and MDVhkbj are binary decision variables. They equal to 1 when a certain link (ij) or route/path (lmj or hkbj) is passed.
  2. SOCLi and SOCjR are both system variables and are continuous between 0 and 100, that represent the state of charge of a vehicle which determines its travelling range at a particular node.

Indices

All indices (i,j,l,m,h,k,b) pertain to nodes in a network and refer to distinct nodes when used within a particular constraint. indices i and j will be the focus of my problem.

Logic

IF (Xij = 1 AND (SDVlmj = MDVhkbj = 0) THEN (SOCLi = SOCjR).

When this logic does not hold true, I want the values for SOCLi and SOCjR to be non-binding.

Additional notes on other current constraints that might shed more light (no need for help on these).

  1. SDVlmj + MDVhkbj <= 1 for all j
  2. SDVlmj or MDVhkbj can only be = 1 if Xij = 1 for all nodes j. But Xij can be = 1 even if both SDVlmj and MDVhkbj are = 0. (I have this down already. Just providing more context for the logic im trying to achieve)

What I have so far...

(1) SOCLi <= SOCjR + BigM(1-Xij)

(2) SOCLi => SOCjR - BigM(1-Xij)

(3) SDVlmj+MDVhkbj<=1

(4) SDVlmj+MDVhkbj<= Xij

The problem with this current formulation however, is that when (SDVlmj + MDVhkbj) = 1, Xij must be equal to 1 based on constraint (4), which multiplies the BigM in constraints (1) and (2) by zero, effectively binding the values SOCLi to equal SOCjR which I am trying to avoid.

Any help would be much appreciated.

2
  • Hi @gravityman123, if the question is still relevant you should consider posting it at www.or.stackexchange.com Commented Jan 9, 2020 at 23:44
  • Hi @dhasson, will do. Thanks for the tip. Commented Jan 28, 2020 at 7:27

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.