Optmodel from 9.2 to 9.4

Reply
Super Contributor
Posts: 336

Optmodel from 9.2 to 9.4


I migrated from SAS 9.2 to 9.4 and the very same optimiziation problem (proc optmodel) that worked just fine under 9.2 gives an "out-of-memory"-error under 9.4. The program still works, but can only process problems which are about 75 % (in terms of "basis-datasets") smaller than before. The proc options option=memsize spits out 2 GB which is the same amount as before. Any ideas what I didn´t think of?

Super User
Posts: 5,255

Re: Optmodel from 9.2 to 9.4

In cases like this, one need to ask if there are any other changes in the environment, such as if the HW is the same, OS version/setup/configuration, etc.

If you still have access to 9.2, try to run the exact the same code using the same data set in both versions, using the FULLSTIMER option, that could give you some hints of what's going on.

Data never sleeps
Super Contributor
Posts: 336

Re: Optmodel from 9.2 to 9.4

Thanks for your answer. Unfortunately the old version and all the settings are gone. (I wanted a "clean" environment for the new version to avoid any interference from the former version and used the uninstall-wizard.) I am pretty sure that the Windows settings were left unchanged during installation (but I have to admid I can´t prove this).

Still, this is a surprise. I thought that - apart from memsize - there is no cure for insufficient memory when using optmodel. Is there a list of additional options either in SAS or Windows that optimize the optmodel-environment?

SAS Employee
Posts: 340

Re: Optmodel from 9.2 to 9.4

Not sure if this helps: try to specify nothreads option. In 9.2 model generation was singe-threaded.

At which phase do you have the error message? At problem solving? Is it a MILP?

Super Contributor
Posts: 336

Re: Optmodel from 9.2 to 9.4

I did change some options (including the NoThreads option & changing RealMemSize, MaxMemQuery), but without success.

The model is a simple (dual) Simplex model. No integers. The error occurs right after the "Solve" command.

The log looks like:

325        Proc Optmodel;
1480                                                       The SAS System                          16:32 Thursday, February 27, 2014

326          Set <Str,Str> m_w;
326      !                      Num M{m_w};
327          Read Data Daten.Cost Into m_w=[R S] M=M1;
NOTE: There were 210000 observations read from the data set DATEN.Cost.
328          Num K{m_w};
329          Read Data Daten.Cost Into m_w=[R S] K=Cost_R;
NOTE: There were 210000 observations read from the data set DATEN.Cost.
330          Set R=Setof{<m,w> in m_w} m;
330      !                                        Set S=Setof{<m,w> in m_w} w;
331          Set <Str,Str> j_w;
331      !                      Num NM{j_w};
332          Read Data Daten.NM Into j_w=[W S] NM=M1;
NOTE: There were 1422000 observations read from the data set DATEN.NM.
333          Set N=Setof{<j,w> in j_w} j;
334          Num Demand{N};
335          Read Data Daten.Demand Into Demand=M;
NOTE: 9 non-missing values were discarded due to invalid target indices.
NOTE: There were 246 observations read from the data set DATEN.Demand.
336          Num Supply{R};
337          Read Data Daten.Supply Into Supply=M;
NOTE: 191 non-missing values were discarded due to invalid target indices.
NOTE: There were 226 observations read from the data set DATEN.Supply.
338          Var X{N,S}>=0;
339          Con Cns_S{m in R}Smiley Frustratedum{j in N,w in S}X[j,w]*M[m,w]*NM[j,w]<=Supply;
340          Con Cns_D{j in N}Smiley Frustratedum{m in R,w in S}X[j,w]*M[m,w]*NM[j,w]=Demand;
341          Min Ob=Sum{j in N,m in R,w in S}X[j,w]*M[m,w]*K[m,w]*NM[j,w];
342          *Performance NThreads=4;
343          Solve;
NOTE: Problem generation will use 4 threads.
ERROR: Out of memory during problem generation.
NOTE: Unable to create problem instance due to previous errors.

Ask a Question
Discussion stats
  • 4 replies
  • 424 views
  • 0 likes
  • 3 in conversation