Sample2.java
/*
* Created on 2011/02/23
* Copyright (C) 2011 Koga Laboratory. All rights reserved.
*
*/
package org.mklab.sdpj;
import java.io.IOException;
import org.mklab.mpf.ap.MPFloat;
import org.mklab.mpf.ap.MPFloatComplexMatrix;
import org.mklab.mpf.ap.MPFloatComplexNumber;
import org.mklab.mpf.ap.MPFloatMatrix;
import org.mklab.nfc.matrix.ComplexNumericalMatrix;
import org.mklab.nfc.matrix.RealNumericalMatrix;
import org.mklab.nfc.scalar.ComplexNumericalScalar;
import org.mklab.nfc.scalar.RealNumericalScalar;
import org.mklab.sdpj.solver.Sdpj;
/**
* The Class Sample2 is a sample usage of SDPJ.
*
* More detail information about usage, you can refer to Class {@link org.mklab.sdpj.solver.Sdpj}, or you can call the function Sdpj.showUsage().
*
* And if you run SDPJ based on multiple precision arithmetic and occur the exception as follows:
*
* Exception in thread "main" java.lang.ExceptionInInitializerError at org.mklab.jsdpa.example.Sample2.main(Sample2.java:39) Caused by: java.lang.RuntimeException:
* There is not an available library. at org.mklab.mpf.MPFloat.getDefaultBaseMPF(MPFloat.java:93) at org.mklab.mpf.MPFloat.(MPFloat.java:82) ... 1 more
*
* This time you should set an attribute of run based on eclipse as like:
*
* Firstly, click "Run" -- click "Run Configurations..." -- click "(x)= arguments"
*
* Lastly, set the value "-Djava.library.path="${workspace_loc}/MPFloat;${workspace_loc}/cga""
*
* on the frame of VM arguments.
*
* @author wu
* @version 0.6.3, 2011/02/23
*
*/
public class Sample2 {
/**
* @param args command line arguments
* @throws IOException when
*/
public static void main(String[] args) throws IOException {
Sample2Run<MPFloat, MPFloatMatrix, MPFloatComplexNumber, MPFloatComplexMatrix> run = new Sample2Run<>(new MPFloat(1));
run.run();
// for (int i = 1; i <= 11; i++) {
// run.run("sdplib/control" + i + ".dat-s");
// }
}
}
class Sample2Run<RS extends RealNumericalScalar<RS, RM, CS, CM>, RM extends RealNumericalMatrix<RS, RM, CS, CM>, CS extends ComplexNumericalScalar<RS, RM, CS, CM>, CM extends ComplexNumericalMatrix<RS, RM, CS, CM>> {
RS sdpjType;
public Sample2Run(RS type) {
// TODO 自動生成されたコンストラクター・スタブ
this.sdpjType = type;
}
public void run() throws IOException {
final String ProblemFile = "sdplib/example_sdplib.dat-s"; //$NON-NLS-1$
//SDPJ based on multiple precision arithmetic
//Example 1
Sdpj<RS, RM, CS, CM> sdpj1 = new Sdpj<>(this.sdpjType, ProblemFile);
sdpj1.setPrecision(16);
sdpj1.run();
// //Example 2
// Sdpj<MPFloat> sdpj2 = new Sdpj<MPFloat>(ProblemFile);
// sdpj2.setDataType(new MPFloat(1));
// sdpj2.run();
//
// //SDPJ based on double precision arithmetic
// //Example 3
// Sdpj<DoubleNumber> sdpj3 = new Sdpj<DoubleNumber>(new DoubleNumber(1), ProblemFile);
// sdpj3.run();
// //Example 4
// Sdpj<DoubleNumber> sdpj4 = new Sdpj<DoubleNumber>(ProblemFile);
// sdpj4.setDataType(new DoubleNumber(1));
// sdpj4.run();
//
// //show the usage of SDPJ
// Sdpj.showUsage();
}
/**
* @param problemFile problem file
* @throws IOException when
*/
public void run(String problemFile) throws IOException {
Sdpj<RS, RM, CS, CM> sdpj1 = new Sdpj<>(this.sdpjType, problemFile);
sdpj1.setPrecision(16);
sdpj1.run();
}
}