Turn on suggestions

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

Showing results for

Options

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

🔒 This topic is **solved** and **locked**.
Need further help from the community? Please
sign in and ask a **new** question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Posted 03-10-2016 10:22 AM
(961 views)

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?

1 ACCEPTED SOLUTION

Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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

4 REPLIES 4

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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

Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

**If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. **

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.