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

- Subscribe to 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
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-13-2017 02:08 PM

Hi,

I want to use something similar to Heaviside function to create a unit pulse. Unit pulse is required because I want to define some objective function and constraint which are piece-wise linear. For example from x=0 to 10, y=x , x>=10 , y=20-x. I am unable to find out a function which could help me to write such formulation without having to write multiple if-else statement.

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

Posted in reply to gupta_shubham

12-13-2017 02:17 PM

Does your x variable have an upper bound? Is the rest of your optimization model linear?

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

Posted in reply to RobPratt

12-13-2017 02:29 PM

Ideally I don't want to have any upper bound on x. Lower bound is x>0. Also my whole optimization has non linear constraints and objective function but I can simple approximated version with linear constraints

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

Posted in reply to gupta_shubham

12-13-2017 03:21 PM

If y - x is in [-M_1,M_1] and y - (20 - x) is in [-M_2,M_2] for suitably chosen constants M_1 and M_2, you can linearize the relationship between x and y by introducing a binary variable z and the following constraints:

-M_1 * z <= y - x <= M_1 * z

-M_2 * (1 - z) <= y - (20 - x) <= M_2 * (1 - z)

If z = 0, the first pair of constraints force y = x. If z = 1, the second pair of constraints force y = 20 - x.

Depending on your objective and other constraints, you might be able to avoid the bounds and binary variables. For example, if you want to maximize y, you can just impose y <= x and y <= 20 - x.