## How to compute matrix arithmetic in Gams

Archiver
User
Posts: 7876
Joined: 2 years ago

### How to compute matrix arithmetic in Gams

Hello,

How to compute matrix A multiplied by matrix B in Gams?
And how to compute matrix A divided by matrix B in Gams?

In the example below, how can I compute matrix pmax divided by matrix vmax in Gams?

sets
i /i1*i5/
j /j1/
k /k1*k2/

scalars
b1 /5/
b2 /10/
b3 /4/
b4 /8/
b5 /6.67/
d1 /0/
d2 /6.83/
d3 /-1.25/
d4 /7.06/
d12
d23
d34
d14
d24
H;

d12=d2-d1;
d23=d3-d2;
d34=d4-d3;
d14=d4-d1;
d24=d4-d2;

table
p(j,i)
i1 i2 i3 i4 i5
j1 2.23 -1.95 -1.95 2.23 0.28;
table
v(j,k)
k1 k2
j1 0.77 -0.64;

parameters
pmax
vmax;
pmax(i,j)=p(j,i);
vmax(k,j)=v(j,k);

display pmax,p,vmax,v;

Sincerely

--
To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.

Archiver
User
Posts: 7876
Joined: 2 years ago

### RE: How to compute matrix arithmetic in Gams

Hi Songming

Multiplication can be done as follows:

parameter

vmaxt(j,k) Transposed vmax,

pmaxvmax(i,k) Matrix multiplicationof pmax and vmax;

vmaxt(j,k) = vmax(k,j);

pmaxvmax(i,k) = prod(j, pmax(i,j) * vmaxt(j,k));

display pmaxvmax;

The division of pmax by vmax is not defined, but I assume you want to have the vector divided by the first value of vmax and then by the second value.

parameter

pmaxvmaxdiv(j,i,k) Division of pmax by vmax;

pmaxvmaxdiv(j,i,k) = pmax(i,j)/vmax(k,j);

display pmaxvmaxdiv;

As set j only has one element, you could also write

parameter

pmaxvmaxdiv(i,k) Division of pmax by vmax;

pmaxvmaxdiv(i,k) = pmax(i,â€j1â€)/vmax(k,â€j1â€);

display pmaxvmaxdiv;

Cheers

Renger

_________________________________________________________________

Renger van Nieuwkoop, PhD

Department of Management, Technology and Economics | Director

Centre for Energy Policy and Economics | Modelworks

Swiss Federal Institute of Technology Zurich | Gewerbestrasse 15

ZÃ¼richbergstrasse 18, CH-8032 Zurich | CH-3600 Thun

Mobile: +41 79 818 53 73

E-Mail: rengerv@vannieuwkoop.ch

Blog: http://blog.modelworks.ch

Sent: Dienstag, 13. Januar 2015 02:37
Subject: Re: How to compute matrix arithmetic in Gams

Hello,

How to compute matrix A multiplied by matrix B in Gams?

And how to compute matrix A divided by matrix B in Gams?

In the example below, how can I compute matrix pmax divided by matrix vmax in Gams?

sets

i /i1*i5/

j /j1/

k /k1*k2/

scalars

b1 /5/

b2 /10/

b3 /4/

b4 /8/

b5 /6.67/

d1 /0/

d2 /6.83/

d3 /-1.25/

d4 /7.06/

d12

d23

d34

d14

d24

H;

d12=d2-d1;

d23=d3-d2;

d34=d4-d3;

d14=d4-d1;

d24=d4-d2;

table

p(j,i)

i1 i2 i3 i4 i5

j1 2.23 -1.95 -1.95 2.23 0.28;

table

v(j,k)

k1 k2

j1 0.77 -0.64;

parameters

pmax

vmax;

pmax(i,j)=p(j,i);

vmax(k,j)=v(j,k);

display pmax,p,vmax,v;

Sincerely

--
To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.

--
To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.