Solved

Subtraction of Element Valued Expressions

  • 29 May 2019
  • 9 replies
  • 205 views

Hi! I have a constraint (shown at the photo below) wherein two sets need to be subtracted. I tried introducing another set Kw with a definition of k-Ks but it says subtraction of element valued expressions require the set range to be equal, but the ranges domain set "Subblock" and set "Candidate_Subblocks" differ.



Identifier: Subblock

Index: k



Identifier: Candidate_Subblock

Index: Ks



Identifier: Subblock_Difference

Subset of: Subblock, Candidate_Subblocks

Index: Kw

Definition: k-Ks



above is the current code I have. Do you have any Idea on how I can code my constraint?

icon

Best answer by deannezhang 29 May 2019, 12:37

View original

9 replies

Userlevel 4
Badge +3
Making both Candidate_Subblock and Subblock_Difference as a subset of Subblock and change the definition of Subblock_Difference like below should work.



Identifier: Subblock

Index: k



Identifier: Candidate_Subblock

Subset of: Subblock

Index: Ks



Identifier: Subblock_Difference

Subset of: Subblock

Index: Kw

Definition: Subblock - Candidate_Subblock
Thank you so much! It worked! Now my constraint will be written



sum(Kw, x(v,k))=0



or



sum[(k|Kw, x(v,k))] = 0



?
Userlevel 4
Badge +3
sum(Kw, x(v,kw))=0 will work.



you can use the index of the subset so it will only apply those elements in the subset.
Thank you! I have one last question,



how do I code constraint 7 and 9? Cause I’m not quite sure with the “:” in it. Sorry! Thank you

Userlevel 4
Badge +3
what does ": " mean?
it’s “for which”
Userlevel 4
Badge +3
😂care for some more explanation on the meaning of the constraint and index? otherwise, I do not know how to help here.
Constraint 7:



YL(k,t) - Binary Variable(set to 1 if subblock k executes loading activity in period t)

x(v,k) - Binary variable(1 if subblock K is reserved for vessel V)

Tv - subset of period/s when vessel v loads or unloads containers



constraint 7: denotes whether a subblock performs a loading/unloading activity
Userlevel 4
Badge +3
If Tv is input, which means it does not change depending on variables, what you can do is to introduce parameter As Tv. For example, Valid_v_t(v,t) is 1 if vessel v can load/unload at time t. then (7) can be something like



Identifier: constraint7



index domain: (k,t)



definition: gamma(k,t) = sum(v|Valid_v_t(v,t) , x(v,k))

Reply


Didn't find what you were looking for? Try searching on our documentation pages:

AIMMS Developer & PRO | AIMMS How-To | AIMMS SC Navigator