1package com.gams.examples.clad;
3 import java.io.BufferedWriter;
4 import java.io.ByteArrayOutputStream;
6 import java.io.FileWriter;
7 import java.io.PrintStream;
8 import java.util.AbstractMap;
9 import java.util.ArrayList;
10 import java.util.List;
34 public static void main(String[] args) {
39 File workingDirectory =
new File(System.getProperty(
"user.dir"),
"Clad");
40 workingDirectory.mkdir();
45 List<Map.Entry<Long,String>> steps =
new ArrayList<Map.Entry<Long,String>>();
46 steps.add(
new AbstractMap.SimpleEntry<Long, String>(
new Long(5),
"epgap 0.1" ) );
47 steps.add(
new AbstractMap.SimpleEntry<Long, String>(
new Long(10),
"epgap 0.2" ));
48 steps.add(
new AbstractMap.SimpleEntry<Long, String>(
new Long(20),
"epagap 1e9" ));
54 BufferedWriter outfile =
new BufferedWriter(
new FileWriter(logFile));
55 outfile.write(
"epgap 0"); outfile.newLine();
56 outfile.write(
"interactive 1"); outfile.newLine();
57 outfile.write(
"iafile cplex.op2"); outfile.newLine();
59 }
catch (Exception e) {
69 ByteArrayOutputStream os =
new ByteArrayOutputStream();
70 PrintStream ps =
new PrintStream(os);
72 Worker w =
new Worker(job, opt, ps);
76 for (Map.Entry<Long, String> entry : steps) {
77 long diffInSeconds = entry.getKey().longValue() - prevStep ;
79 System.out.println(
"** waiting "+ diffInSeconds * 1000+
" milliseconds");
80 w.join( diffInSeconds * 1000 );
81 }
catch( Exception e ) {
82 System.out.println(
"** Exception has been caught : "+e);
86 prevStep = entry.getKey().longValue();
89 BufferedWriter outfile =
new BufferedWriter(
new FileWriter(logFile));
90 outfile.write( entry.getValue() ); outfile.newLine();
92 }
catch (Exception e) {
97 System.out.println(
"** Interrupted Cplex to continue with new option: " + entry.getValue());
102 }
catch (InterruptedException e) { }
105 String log = os.toString();
106 if (!log.contains(
"Interrupted...")) {
107 System.out.println(
"** Solver log **");
108 System.out.println(log);
109 System.out.println();
110 System.out.println(
"** Expected the solver to be interrupted at least once.");
113 System.out.println(
"** Interrupted...");
118 static class Worker
extends Thread {
137 job.
run(option, output);
void setSystemDirectory(String directory)
void setSolveLink(GAMSOptions.ESolveLink x)
String workingDirectory()
GAMSJob addJobFromGamsLib(String modelName)
void setWorkingDirectory(String directory)
This example demonstrates how to implement a complex termination criterion for a difficult MIP using ...