36     public static void main(String[] args) 
 
   43         File workingDirectory = 
new File(System.getProperty(
"user.dir"), 
"Transport12");
 
   44         workingDirectory.mkdir();
 
   58         double[] bmultlist = 
new double[] { 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3 };
 
   67         for (
double b : bmultlist)
 
   69             bmult.addRecord(
"s" + i).setValue(b);
 
   70             scen1.addRecord(
"s" + i);
 
   75         dict.addRecord( 
new String[]{ scen1.getName(), 
"scenario", 
"" } );
 
   76         dict.addRecord( 
new String[]{
"bmult", 
"param", bmult.getName() } );
 
   77         dict.addRecord( 
new String[]{
"z", 
"level", zscen1.getName()} );
 
   79         GUSSCall(dict, mi, 
"transport use lp min z", 
null, 
null, 
null); 
 
   82              System.out.println(rec.getKey(0) + 
" obj: " + rec.getValue());
 
   93         for (
int j = 0; j < 4; j++) {
 
   97                     String[] keys = 
new String[] { 
"s" + j, irec.getKey(0), jrec.getKey(0) };
 
   98                     xup.addRecord(keys).setValue(j+1);
 
  100              scen2.addRecord(
"s" + j);
 
  104         dict2.addRecord( 
new String[] {scen2.getName(), 
"scenario", 
""} );
 
  105         dict2.addRecord( 
new String[] {
"x", 
"lower", xup.getName()} );
 
  106         dict2.addRecord( 
new String[] {
"z", 
"level", zscen2.getName()} );
 
  108         GUSSCall(dict2, mi2, 
"transport use lp min z", 
null, 
null, System.out);
 
  111             System.out.println(rec.getKey(0) + 
" obj: " + rec.getValue());
 
  117         List<Object[]> modifierList = Collections.synchronizedList( 
new ArrayList<Object[]>() );
 
  119         if (dict.getDimension() != 3)
 
  122         String scenName = dict.getFirstRecord(
new String[] { 
" ", 
"scenario", 
" " }).getKey(0);
 
  123         GAMSSet scenSymbol = dict.getDatabase().getSet(scenName);
 
  128             if (rec.getKey(1).toLowerCase().equals(
"scenario"))
 
  130             if (rec.getKey(1).toLowerCase().equals(
"param"))
 
  132                 int modifierDim = dict.getDatabase().getParameter(rec.getKey(2)).getDimension() - scenSymbol.getDimension();
 
  134                     throw new GAMSException(
"Dimension of " + rec.getKey(2) + 
" too small");
 
  136                 GAMSParameter param = dict.getDatabase().getParameter( rec.getKey(2)); 
 
  138                     new Object[] { mod, param }
 
  141             else  if ((rec.getKey(1).toLowerCase().equals(
"lower")) ||
 
  142                      (rec.getKey(1).toLowerCase().equals(
"upper")) ||
 
  143                      (rec.getKey(1).toLowerCase().equals(
"fixed")))
 
  145                       int modifierDim = (int) (dict.getDatabase().getParameter(rec.getKey(2)).getDimension() - scenSymbol.getDimension());
 
  147                          throw new GAMSException(
"Dimension of " + rec.getKey(2) + 
" too small");
 
  150                          modifierVar = dict.getDatabase().getVariable(rec.getKey(0));
 
  152                       catch (Exception e) {
 
  153                           modifierVar = mi.
SyncDB().
addVariable(rec.getKey(0),modifierDim, GAMSGlobals.VarType.FREE, 
"");
 
  155                       if (rec.getKey(1).toLowerCase().equals(
"lower"))
 
  158                           GAMSParameter param = dict.getDatabase().getParameter(rec.getKey(2));
 
  160                               new Object[] { mod , param }
 
  163                       else if (rec.getKey(1).toLowerCase().equals(
"upper"))
 
  166                              GAMSParameter param = dict.getDatabase().getParameter(rec.getKey(2));
 
  168                                 new Object[] { mod , param }
 
  173                                    GAMSParameter param = dict.getDatabase().getParameter(rec.getKey(2));
 
  175                                       new Object[] { mod , param }
 
  179                   else if ((rec.getKey(1).toLowerCase().equals(
"level")) || (rec.getKey(1).toLowerCase().equals( 
"marginal")))
 
  182                           @SuppressWarnings(
"unused")
 
  183                           GAMSParameter x = dict.getDatabase().getParameter(rec.getKey(2));
 
  186                            throw new GAMSException(
"Cannot handle UpdateAction " + rec.getKey(1));
 
  189         List<GAMSModifier> mL = Collections.synchronizedList( 
new ArrayList<GAMSModifier>() );
 
  190         for (Object[] tuple : modifierList) {
 
  198         List<Object[]> outList = Collections.synchronizedList( 
new ArrayList<Object[]>() );
 
  202            for (Object[] tuple : modifierList)
 
  217                 String[] filter = 
new String[pscen.getDimension()];
 
  218                 for (
int i = 0; i < scenSymbol.getDimension(); i++)
 
  219                     filter[i] = s.getKey(i);
 
  220                 for (
int i = scenSymbol.getDimension(); i < pscen.getDimension(); i++)
 
  225                     rec = pscen.getFirstRecord(filter);
 
  230                 {   String[] myKeys = 
new String[p.getDimension()];
 
  231                     for (
int i = 0; i < p.getDimension(); i++)
 
  232                        myKeys[i] = rec.getKey(scenSymbol.getDimension()+i);
 
  233                     p.addRecord(myKeys).setValue( rec.
getValue() );
 
  234                 } 
while (rec.moveNext());
 
  238             if (outList.size() == 0)
 
  242                     if ((rec.getKey(1).toLowerCase().equals(
"level")) || (rec.getKey(1).toLowerCase().equals(
"marginal")))
 
  245                         GAMSParameter param = dict.getDatabase().getParameter(rec.getKey(2));
 
  246                         String str = rec.getKey(1).toLowerCase();
 
  248                                 new Object[] { sym, param, str }
 
  253             for (Object[] tuple : outList)
 
  257                 String str = (String)tuple[2];
 
  258                 String[] myKeys = 
new String[scenSymbol.getDimension() + symbol.
getFirstRecord().getKeys().length];
 
  259                 for (
int i = 0; i < scenSymbol.getDimension(); i++)
 
  260                     myKeys[i] = s.getKey(i);
 
  262                 if ((str.equals(
"level")) && (symbol instanceof 
GAMSVariable))
 
  267                         for (
int i = 0; i < rec.getKeys().length; i++)
 
  268                             myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
 
  269                         param.addRecord(myKeys).setValue( rec.getLevel() );
 
  272                 else if ((str.equals(
"level")) && (symbol instanceof 
GAMSEquation))
 
  277                             for (
int i = 0; i < rec.getKeys().length; i++)
 
  278                                 myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
 
  279                             param.addRecord(myKeys).setValue( rec.getLevel() );
 
  282                      else if ((str.equals(
"marginal")) && (symbol instanceof 
GAMSVariable))
 
  287                                 for (
int i = 0; i < rec.getKeys().length; i++)
 
  288                                     myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
 
  289                                 param.addRecord(myKeys).setValue( rec.getMarginal() );
 
  292                           else if ((str.equals(
"marginal")) && (symbol instanceof 
GAMSEquation))
 
  297                                       for (
int i = 0; i < rec.getKeys().length; i++)
 
  298                                           myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
 
  299                                       param.addRecord(myKeys).setValue( rec.getMarginal() );
 
  306    static String model =
 
  308          "     i   canning plants   / seattle, san-diego /                    \n" +
 
  309          "     j   markets          / new-york, chicago, topeka / ;           \n" +
 
  313          "     a(i)  capacity of plant i in cases                             \n" +
 
  314          "       /    seattle     350                                         \n" +
 
  315          "            san-diego   600  /                                      \n" +
 
  317          "     b(j)  demand at market j in cases                              \n" +
 
  318          "       /    new-york    325                                         \n" +
 
  320          "            topeka      275  / ;                                    \n" +
 
  322          "Table d(i,j)  distance in thousands of miles                        \n" +
 
  323          "                  new-york       chicago      topeka                \n" +
 
  324          "    seattle          2.5           1.7          1.8                 \n" +
 
  325          "    san-diego        2.5           1.8          1.4  ;              \n" +
 
  327          "Scalar f      freight in dollars per case per thousand miles  /90/ ;\n" +
 
  328          "Scalar bmult  demand multiplier /1/;                                \n" +
 
  330          "Parameter c(i,j)  transport cost in thousands of dollars per case ; \n" +
 
  332          "          c(i,j) = f * d(i,j) / 1000 ;                              \n" +
 
  335          "     x(i,j)  shipment quantities in cases                           \n" +
 
  336          "     z       total transportation costs in thousands of dollars ;   \n" +
 
  338          "Positive Variable x ;                                               \n" +
 
  341          "     cost        define objective function                          \n" +
 
  342          "     supply(i)   observe supply limit at plant i                    \n" +
 
  343          "     demand(j)   satisfy demand at market j ;                       \n" +
 
  345          "cost ..        z  =e=  sum((i,j), c(i,j)*x(i,j)) ;                  \n" +
 
  347          "supply(i) ..   sum(j, x(i,j))  =l=  a(i) ;                          \n" +
 
  349          "demand(j) ..   sum(i, x(i,j))  =g=  bmult*b(j) ;                    \n" +
 
  351          "Model transport /all/ ;                                             \n" +