Dear all, (or Atharv),
I amended one title "secrub" to "comrub". No duplicate problem anymore.
I encounter the problem "divided by zero" in line 46.
I check the entry: sam('total',j) and sam(i,'total') and am sure they are not zero (by display **,*)
I appreciate it if some one can help me.
Thanks and regards,
Douglas
*Base on the traget value of column J to adjust SAM (R adjustment)
sam('total',j)=sum(i,sam(i,j));
sam(i,j)=(sam(i,j)/sam('total',j))*sam('tartot',j);
* *Base on the traget value of column J to adjust SAM (S adjustment)
sam(i,'total')=sum(j,sam(i,j)) ;
sam(i,j)=(sam(i,j)/sam(i,'total'))*sam(i,'tartot');
divided by zero Topic is solved
-
- User
- Posts: 21
- Joined: 3 years ago
Re: divided by zero
Should be:
*** Error at line 46: division by zero (0)
*** Error at line 46: division by zero (0)
Re: divided by zero
I think this is because of the column 'secede' which is in your set i, but it is not in the initial definition of the parameter sam.
When GAMS executes line 46 for the first time, it does not have any value for sam('total', 'secede') which is why you get first division by zero error as it is undefined.
After this operation, gams adds a column for 'secede' with all undefined values.
When you add columns, the undefined numbers get propagated which results in even more errors.
As you rightly observed, the initial value of sam('total', j) parameter is not zero. However, as your code carries out the iterations, within 2 iterations, it becomes undefined.
To observe this, change your while loop to
while (iter <2, ...
instead of while(iter < 1000 and maxdis > 1e-10,..
just before and after line 46, add a line
display sam;
Actual solution to this question depends on what you would like to do with the column 'secede'.
Hope this helps.
- Atharv
When GAMS executes line 46 for the first time, it does not have any value for sam('total', 'secede') which is why you get first division by zero error as it is undefined.
After this operation, gams adds a column for 'secede' with all undefined values.
When you add columns, the undefined numbers get propagated which results in even more errors.
As you rightly observed, the initial value of sam('total', j) parameter is not zero. However, as your code carries out the iterations, within 2 iterations, it becomes undefined.
To observe this, change your while loop to
while (iter <2, ...
instead of while(iter < 1000 and maxdis > 1e-10,..
just before and after line 46, add a line
display sam;
Actual solution to this question depends on what you would like to do with the column 'secede'.
Hope this helps.
- Atharv
-
- User
- Posts: 21
- Joined: 3 years ago
Re: divided by zero
Great thanks. I want to run RAS adjustment. I got the results. Thanks.