Can Binary Variables Help Maximize Revenue in MATLAB Linear Programming?

  • Thread starter Thread starter rularn
  • Start date Start date
Click For Summary

Discussion Overview

The discussion revolves around the optimization of revenue from a heating plant using MATLAB linear programming, specifically focusing on the constraints related to the operation of boilers, which can only operate at specific power levels or be turned off. Participants explore the feasibility of implementing these constraints within a linear programming framework.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant inquires about the possibility of setting constraints in MATLAB for boiler operation, suggesting the use of help variables to represent the operational states.
  • Another participant expresses skepticism about optimization algorithms succeeding due to the lack of small incremental steps between 0% and 40%, proposing a workaround by relabeling operational percentages.
  • A different viewpoint suggests that a brute force approach may work for a single boiler but could become inefficient with multiple boilers, recommending alternative methods like simulated annealing.
  • One participant questions whether the boilers are interchangeable, proposing that if they are, a brute force method could be simplified. They also suggest two potential approaches: allowing all boilers to range from 0 to 1 and adjusting after finding an optimal solution, or first determining which boilers to turn off and then rerunning the optimization with those constraints.

Areas of Agreement / Disagreement

Participants express differing opinions on the effectiveness of brute force methods versus alternative optimization strategies. There is no consensus on the best approach to implement the constraints for the boilers.

Contextual Notes

Participants note potential limitations in the optimization approach, including the challenge of operational constraints and the efficiency of different methods as the number of boilers increases. The discussion does not resolve these limitations.

Who May Find This Useful

This discussion may be useful for individuals interested in optimization techniques in engineering contexts, particularly those working with linear programming and operational constraints in MATLAB.

rularn
Messages
8
Reaction score
0
Hello!

I'm trying to create a script in MATLAB in which I can maximize the revenue from a heating plant.

This problem is, each boiler can only be turned off or run in between 40 and 100 % of the maximum power. So I want the boiler input x to be equal to 0 or in between 0.4 and 1. But how can I put this constraint in a linear programming script? Is it even possible?

If I introduce help variables, x1, x2 x3 ... xn, can that help me to achieve this?

It might be possible to use non linear constraints, but I want to do it with only linear constraints first if it's possible?

regards,
 
Physics news on Phys.org
I think many optimization algorithms will fail at that task, as there are no small steps between 0% and 40%. You can introduce other variables, sure - re-label 0% as "39.999%" and adjust the formulas correspondingly. But that does not solve the main problem that you get steps (assuming you cannot switch the boilers on/off without any delay).
 
Are you just trying a brute force aproach?
There are some better methods depending on the range of possibilities. If you only have 1 boiler a brute force method probably would work.
But if you had more than 2 or 3 brute force will likely start taking longer.

take a look at: http://en.wikipedia.org/wiki/Simulated_annealing
 
Are the boilers interchangeable? Because if they are then you could brute force the problem: instead of ##2^n## on/off combinations you only have ##n## (if all off, one on, two on, ...).

Two other approaches that *might* work, depending on the problem, are
(1) allowing them all to range from 0 to 1, then when you get an optimal solution try converting it into a feasible good one by setting all x < 0.4 to 0 and possibly increase the other ones or rerun the problem with additional constraints for those boilers

(2) first try to solve the problem of "which boilers will be switched off", either as a separate model or by allowing x to be just 0 or 1 and then rerunning with x = 0 as additional constraints for those boilers that were off in the first solution.
 

Similar threads

  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
8K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 26 ·
Replies
26
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 2 ·
Replies
2
Views
5K