Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Optimization of inputs to produce an optimized ouput

Asked by Peter on 12 Dec 2012

The user inputs 10 length values (1-10) and inputs another value length A which is a total length. Values 1-10 can range from 0 to infinity which are the quantities of lengths and input A is the maximum length which is larger then the largest length from value 1-10.

The optimization comes in where I need to figure how many values of A are need to cover all the lengths but keeping the scrap value of A to a minimum. Example A=25 and value 2= 3(qty) and value 5 = 3(qty) the sum of values 2 and 5 = 21 so the left over of A is 4.

I could have time were only two inputs of values 1-10 being used up to having all ten values being used.

I can't add the left overs of A together to eliminate more values. I need to output the combinations of values 1-10, the number of Value A and the total left overs of A added together. The combinations of values 1-10 can be placed into an array and the number of rows will tell me how many Values of A will be needed.

I've started to use a while loop with a counter to keep track of the numbers of A's required but I'm not sure how to write the proper code to make the proper optimization of the values into A keep A and the left over a minimum.

Any help would be greatly appreciated and if any clarification is need just ask.

Thank you very much.

2 Comments

Walter Roberson on 12 Dec 2012

This is a "knapsack with repeated elements" problem. It is known to be non-polynomial to solve.

Peter on 12 Dec 2012

Is there any prebuilt functions in Matlab that deal with something like this?

Peter

Products

1 Answer

Answer by Walter Roberson on 12 Dec 2012
Accepted answer

A small number of people have asked about the same kind of problem in the past. I am not sure how they solved it. I think some of them used a PSO (particle swarm) approach.

There is a MATLAB routine in the optimization toolbox that could in theory be used. See Binary Integer Programming

To get an idea of how to implement this using bintprog(), see http://www.mathworks.com/help/optim/ug/binary-integer-programming-example.html

1 Comment

Peter on 12 Dec 2012

That gets me started in the right direction, thank you

Walter Roberson

Contact us