120 demand =
new double[
T];
130 consttdeq =
new int[
T];
131 constseq =
new int[
T];
132 constcseq =
new int[
T];
133 constdeq =
new int[
T];
134 constreq =
new int[
T];
135 constdrev =
new int[
T];
140 for (
int t = 0; t <
T; t++) {
141 demand[t] = 1.0 + 2.3 * Math.pow(1.015, t);
146 for (
int t = 0; t <
T; t++) {
181 if (
xkeep.length > 0) {
182 for (
int i = 0; i <
xkeep.length; i++) {
213 for (
int i = 0; i < xstat.length; i++) {
235 double[] objcoeff =
new double[
T];
236 int[] objnlflag =
new int[
T];
238 for (
int t = 0; t <
T; ++t) {
239 objcoeff[t] = Math.pow(1.05, 1 - (t + 1));
246 for (
int t = 0; t <
T; t++) {
251 int[] index = {vartd[t], varp[t]};
252 double[] value = {1.0, 0.13};
253 int[] nlflag = {0, 0};
259 int[] index = {vartd[t], vartd[t - 1], varp[t]};
260 double[] value = {1.0, -0.87, 0.13};
261 int[] nlflag = {0, 0, 0};
265 consttdeq[t] = considx;
270 int[] index = {vars[t], varp[t], varcs[t]};
271 double[] value = {1.0, 0.0, 0.0};
272 int[] nlflag = {0, 1, 1};
278 int[] index = {vars[t], vars[t - 1], varp[t], varcs[t]};
279 double[] value = {1.0, -0.75, 0.0, 0.0};
280 int[] nlflag = {0, 0, 1, 1};
284 constseq[t] = considx;
285 consmapping.putIfAbsent(considx,
new IntPair(CONS_SEQ, t));
290 int[] index = {varcs[t], vars[t]};
291 double[] value = {1.0, -1.0};
292 int[] nlflag = {0, 0};
298 int[] index = {varcs[t], varcs[t - 1], vars[t]};
299 double[] value = {1.0, -1.0, -1.0};
300 int[] nlflag = {0, 0, 0};
304 constcseq[t] = considx;
308 int[] index = {vard[t], vartd[t], vars[t]};
309 double[] value = {1.0, -1.0, 1.0};
310 int[] nlflag = {0, 0, 0};
313 constdeq[t] = considx;
318 int[] index = {varr[t], vard[t]};
319 double[] value = {1.0, 1.0};
320 int[] nlflag = {0, 0};
326 int[] index = {varr[t], varr[t - 1], vard[t]};
327 double[] value = {1.0, -1.0, 1.0};
328 int[] nlflag = {0, 0, 0};
332 constreq[t] = considx;
336 int[] index = {varrev[t], vard[t], varp[t], varr[t]};
337 double[] value = {1.0, 0.0, 0.0, 0.0};
338 int[] nlflag = {0, 1, 1, 1};
341 constdrev[t] = considx;
342 consmapping.putIfAbsent(considx,
new IntPair(CONS_DREV, t));
346 if (estat.length > 0) {
348 for (
int i = 0; i < estat.length; i++) {
406 assert x.length == jac.length;
408 IntPair conspair = consmapping.get(rowno);
409 if (conspair ==
null)
return;
411 int consset = conspair.
first();
412 int t = conspair.
second();
414 assert (consset == CONS_SEQ || consset == CONS_DREV);
416 if (consset == CONS_SEQ) {
420 h1 = (1.1 + 0.1 * x[varp[t]]);
421 h2 = Math.pow(1.02, -x[varcs[t]] / 7.0);
423 jac[varcs[t]] = h1 * h2 * Math.log(1.02) / 7.0;
424 jac[varp[t]] = -h2 * 0.1;
426 else if (consset == CONS_DREV) {
427 jac[vard[t]] = -(x[varp[t]] - 250. / x[varr[t]]);
428 jac[varr[t]] = -x[vard[t]] * 250. / Math.pow(x[varr[t]], 2);
429 jac[varp[t]] = -x[vard[t]];