SAS Optimization, and SAS Simulation Studio

turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

Topic Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-10-2016 10:22 AM

In an item assignment project, based on the request from our client, we would like to prioritize some of the items because they are produced under a new set of standards. In other words, we would like to have PROC OPTMODEL work on assigning these new items FIRST when trying to meet all the constraints that have been specified. To us, it sounds like some type of weight thing which assigns a higher probability of selection to newer items. *Weight* is just a terminology that came to us naturally but it may not be the right language in the literature of constrained optimization.

We went through the documentation of PROC OPTMODEL but did not find any information related to this topic: Priortize newer items over older ones when trying to satisfy the constraints. So, we are wondering if this request from our client is really a "legitimate" one under the framework of constrained optimization?

Accepted Solutions

Solution

03-11-2016
05:04 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to PatrickYang

03-10-2016 03:07 PM

The idea of the new constraint for the second solve is to force the first objective to be as good as in the first solve. See in particular the Objective_cut constraint in this example (but reverse the sense of the inequality since you are maximizing):

http://support.sas.com/documentation/cdl/en/ormpex/68157/HTML/default/viewer.htm#ormpex_ex19_toc.htm

All Replies

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to PatrickYang

03-10-2016 10:34 AM

Yes, adjusting the weights (objective coefficients) is a natural approach, but it requires you to come up with the "right" weights as input. An alternative approach is to use multiple objectives. The first objective is to maximize the contribution from the new items. After solving this, you add a constraint on this objective and then maximize the original objective in a second solve. This idea generalizes to an arbitrary number of objectives when you have some ordering on the importance of the objectives.

You can find several examples of this approach by searching for "multiple objectives" in the mathematical programming examples doc:

http://support.sas.com/documentation/cdl/en/ormpex/68157/HTML/default/viewer.htm#titlepage.htm

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to RobPratt

03-10-2016 11:49 AM

Hi Rob:

Thank you for your prompt reply. I understand just a little bit the use of multiple objective functions. Based on the information from the documentation, given multiple objective functions, PROC OPTMODEL handles them in a sequential manner unless I combine them into one (say, maximize obj_combo=obj1+obj2+obj3, which I learned from you here at the SAS community. :-)).

After reading the message you posted above, I could think of a case where multiple objective functions could be used:

Step 1: I set up/declare the first objective function OBJ1 to "maximize the contribution from the newer items" followed by the set of constraints.

Step 2: I set up/declare the second objective function OBJ2 to maximize the contribution from the older items followed by the same set of contraints as in Step 1.

Step 3: SOLVE with milp OBJ1; /*To optimize the contribution of newer items first*/

Step 4: SOLVE with milp OBJ2; /*To optimize the contribution of older items second*/

Because PROC OPTMODEL processes the above two SOLVE statements in a sequential manner, I would be able to achieve the goal of assigning newer items first when adhering to one set of constraints and assigning older items second when satisfying the same set of constraints.

I understand I need to read through the mathematical programming book on multiple objectives. But there is one thing in your post I do not quite understand: "After solving this, you add a constraint on this objective...." So, I am not sure what TYPE of constraint would need to be imposed on the first objective function specified for newer items? Using very general terms, what is the goal of the constraint that you suggest should be imposed on the first objective function?

Thank you so much, Rob.

Solution

03-11-2016
05:04 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to PatrickYang

03-10-2016 03:07 PM

The idea of the new constraint for the second solve is to force the first objective to be as good as in the first solve. See in particular the Objective_cut constraint in this example (but reverse the sense of the inequality since you are maximizing):

http://support.sas.com/documentation/cdl/en/ormpex/68157/HTML/default/viewer.htm#ormpex_ex19_toc.htm

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to RobPratt

03-11-2016 05:05 PM

Thank you, Rob. This response of yours clarifies everything. Really helpful!!