Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Formulate a integer program for the following problem. Schedule a set of 10 powe

ID: 3576081 • Letter: F

Question


Formulate a integer program for the following problem.
Schedule a set of 10 power plants P {1, 2 10) for the state of Arizona. The first four plants are coal plants C (1, 2, 3, 4). The next four are "nuclear plants N (5, 6, 7, 8, and the final two are wind generation facilities W (9, 10). If a power plant i e P is turned on, it is able to produce any amount of power in the range given by values [li l, vi c P. We need to meet Arizona's power demand, and suppose Arizona is broken into a set Dof districts. Each district j cDrequires a total amount of power bi. If plant i is opened, there is a fixed cost fi for each plant i e P .and the unit cost for generating power is cifor each plant i e P. We will seek to meet the demand at a minimum cost, subject to a variety of operating constraints: Each district must receive at least 5% of its power from the wind plants W (9, 10). If all of the coal plants are opened, then we must operate both of the wind plants. If the absolute difference in total nuclear power delivered to any pair of districts is more than Y,then a penalty of A will be imposed in the objective. Use the following decision variables: xi The amount of power transmit from plant i c P to district je D yi The total power produced at plant i e P zi: A binary variable that is one if and only if plan c P is operated "you may need additional auxiliary variables in the model

Explanation / Answer

/* Returns an integer in the range [0, n). * * Uses rand(), and so is affected-by/affects the same seed. */ int randint(int n) { if ((n - 1) == RAND_MAX) { return rand(); } else { // Chop off all of the values that would cause skew... long end = RAND_MAX / n; // truncate skew assert (end > 0L); end *= n; // ... and ignore results from rand() that fall above that limit. // (Worst case the loop condition should succeed 50% of the time, // so we can expect to bail out of this loop pretty quickly.) int r; while ((r = rand()) >= end); return r % n; } }