/*
* Copyright (C) 2013 Vinu K.N
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.domainmath.gui.packages.optim;
import java.io.File;
import javax.swing.JOptionPane;
import org.domainmath.gui.MainFrame;
public class GlpkPanel extends javax.swing.JPanel {
/**
* Creates new form GlpkPanel
*/
public GlpkPanel() {
initComponents();
}
private String createOctMtx(String text) {
String val = text.replaceAll("\t", ",");
return val.replaceAll(" ", ";");
}
private void declare(String name, String value) {
MainFrame.octavePanel.eval(name+"="+value+";");
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jSplitPane1 = new javax.swing.JSplitPane();
jPanel2 = new javax.swing.JPanel();
AButton = new javax.swing.JButton();
jLabel14 = new javax.swing.JLabel();
ATextField = new javax.swing.JTextField();
jLabel15 = new javax.swing.JLabel();
bTextField = new javax.swing.JTextField();
bButton = new javax.swing.JButton();
ubTextField = new javax.swing.JTextField();
jLabel16 = new javax.swing.JLabel();
lbButton = new javax.swing.JButton();
lbTextField = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
vartypeTextField = new javax.swing.JTextField();
jLabel18 = new javax.swing.JLabel();
helpButton = new javax.swing.JButton();
ubButton = new javax.swing.JButton();
jLabel19 = new javax.swing.JLabel();
ctypeTextField = new javax.swing.JTextField();
jLabel20 = new javax.swing.JLabel();
jSeparator2 = new javax.swing.JSeparator();
jLabel21 = new javax.swing.JLabel();
cButton = new javax.swing.JButton();
cTextField = new javax.swing.JTextField();
runButton = new javax.swing.JButton();
senseComboBox = new javax.swing.JComboBox();
jLabel22 = new javax.swing.JLabel();
jLabel23 = new javax.swing.JLabel();
jLabel24 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jSeparator1 = new javax.swing.JSeparator();
param_branchComboBox = new javax.swing.JComboBox();
jLabel9 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
param_itcntTextField = new javax.swing.JTextField();
param_priceComboBox = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
param_roundComboBox = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
param_dualComboBox = new javax.swing.JComboBox();
jLabel10 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
param_btrackComboBox = new javax.swing.JComboBox();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
param_scaleComboBox = new javax.swing.JComboBox();
jLabel11 = new javax.swing.JLabel();
param_msglevComboBox = new javax.swing.JComboBox();
param_lpsolverComboBox = new javax.swing.JComboBox();
param_itlimTextField = new javax.swing.JTextField();
param_presolTextField = new javax.swing.JTextField();
jSplitPane1.setDividerLocation(400);
AButton.setText("[mxn]");
AButton.setToolTipText("Convert the text to Octave matrix style");
AButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
AButtonActionPerformed(evt);
}
});
jLabel14.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel14.setText("Constraints Coefficients");
ATextField.setToolTipText("<html>A matrix containing the <b>constraints coefficients</b></html>");
jLabel15.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel15.setText("Lower Bound");
bTextField.setToolTipText("<html>A column array containing the<b> right-hand side value for<br> each constraint in the constraint matrix</b></html>");
bButton.setText("[mxn]");
bButton.setToolTipText("Convert the text to Octave matrix style");
bButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bButtonActionPerformed(evt);
}
});
ubTextField.setToolTipText("<html>An array containing the <b>upper bound</b> on each of the variables.<br> If ub is not supplied, the default upper bound is assumed to be infinite</html>");
jLabel16.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel16.setText("Upper Bound");
lbButton.setText("[mxn]");
lbButton.setToolTipText("Convert the text to Octave matrix style");
lbButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
lbButtonActionPerformed(evt);
}
});
lbTextField.setToolTipText("<html>An array containing the<b> lower bound</b> on each of the variables.<br> If lb is not supplied, the default lower bound for the variables is zero</html>");
jLabel17.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel17.setText("sense");
vartypeTextField.setText("\"CCC\"");
vartypeTextField.setToolTipText("<html>A column array containing the types of the variables.<br>\"C\"<br> A continuous variable.<br>\"I\"<br> An integer variable.</html> ");
jLabel18.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel18.setText("ctype");
helpButton.setText("Help");
helpButton.setToolTipText("<html> Function File: [<var>xopt</var>,\n<var>fmin</var>, <var>status</var>, <var>extra</var>]\n= <b>glpk</b> (<var>c, A, b, lb, ub, ctype, vartype,\nsense, param</var>)<var><a name=\"index-glpk-2449\"></a></var><br>\n<p>Solve a linear program using the GNU <span class=\"sc\">glpk</span>\nlibrary. Given three\narguments, <code>glpk</code> solves the following standard\nLP: </p>\n<pre class=\"example\"> min C'*x<br></pre>\n<p>subject to </p>\n<pre class=\"example\"> A*x = b<br> x >= 0<br></pre>\n<p>but may also solve problems of the form </p>\n<pre class=\"example\"> [ min | max ] C'*x<br></pre>\n<p>subject to </p>\n<pre class=\"example\"> A*x [ \"=\" | \"<=\" | \">=\" ] b<br> x >= LB<br> x <= UB<br></pre></html>");
helpButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
helpButtonActionPerformed(evt);
}
});
ubButton.setText("[mxn]");
ubButton.setToolTipText("Convert the text to Octave matrix style");
ubButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ubButtonActionPerformed(evt);
}
});
jLabel19.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel19.setText("vartype");
ctypeTextField.setText("\"UUU\"");
ctypeTextField.setToolTipText("<html>An array of characters containing the sense of each constraint in the constraint matrix.<br> Each element of the array may be one of the following values<br>\"F\"<br> A free (unbounded) constraint (the constraint is ignored).<br>\"U\"<br> An inequality constraint with an upper bound (A(i,:)*x <= b(i)).<br>\"S\"<br> An equality constraint (A(i,:)*x = b(i)).<br>\"L\"<br> An inequality with a lower bound (A(i,:)*x >= b(i)).<br>\n\"D\"<br> An inequality constraint with both upper and lower bounds (A(i,:)*x >= -b(i) and (A(i,:)*x <= b(i)).</html>");
jLabel20.setForeground(new java.awt.Color(0, 0, 255));
jLabel20.setText("Data");
jLabel21.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel21.setText("Objective Function");
cButton.setText("[mxn]");
cButton.setToolTipText("Convert the text to Octave matrix style");
cButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cButtonActionPerformed(evt);
}
});
cTextField.setToolTipText("<html>A column array containing<br> the <b>objective function coefficients<b><html>");
runButton.setText("Run");
runButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
runButtonActionPerformed(evt);
}
});
senseComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "minimization", "maximization" }));
jLabel22.setText("c:");
jLabel23.setText("A:");
jLabel24.setText("b:");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel20)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator2))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(helpButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(runButton)
.addGap(29, 29, 29))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel21)
.addComponent(jLabel14)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel22)
.addComponent(jLabel24)
.addComponent(jLabel23))))
.addGap(36, 36, 36)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(bTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(AButton))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(cTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cButton))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(ATextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bButton))))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel15)
.addComponent(jLabel16))
.addGap(98, 98, 98)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lbTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 132, Short.MAX_VALUE)
.addComponent(ubTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 132, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lbButton)
.addComponent(ubButton)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel18)
.addComponent(jLabel19)
.addComponent(jLabel17))
.addGap(125, 125, 125)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(vartypeTextField, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(ctypeTextField)
.addComponent(senseComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel20))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel21)
.addGap(2, 2, 2)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cButton)
.addComponent(jLabel22))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel14)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel23)
.addComponent(bButton)
.addComponent(ATextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel24)
.addComponent(AButton)
.addComponent(bTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel15)
.addComponent(lbTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lbButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel16)
.addComponent(ubTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ubButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel18)
.addComponent(ctypeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel19)
.addComponent(vartypeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel17)
.addComponent(senseComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 88, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(runButton)
.addComponent(helpButton))
.addContainerGap())
);
jSplitPane1.setLeftComponent(jPanel2);
param_branchComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "Branch on the first variable", "Branch on the last variable", "Branch using a heuristic by Driebeck and Tomlin" }));
jLabel9.setText("Branching Heuristic (for MIP only)");
jLabel12.setText("LP Solver");
param_priceComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "Textbook pricing.", "Steepest edge pricing. " }));
jLabel2.setText("Output Message");
jLabel1.setForeground(new java.awt.Color(0, 0, 255));
jLabel1.setText("Parameters");
param_roundComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "Report all primal and dual values \"as is\"", "Replace tiny primal and dual values by exact zero. " }));
jLabel3.setText("Scaling");
jLabel6.setText("Solution Rounding");
param_dualComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "No dual simplex", "Use dual simplex" }));
jLabel10.setText("Backtracking Heuristic (for MIP only)");
jLabel7.setText("Simplex Iterations Limit");
param_btrackComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "Depth first search", "Breadth first search", "Backtrack using the best projection heuristic" }));
jLabel4.setText("Dual Simplex ");
jLabel5.setText("Pricing");
jLabel8.setText("Output Frequency in Iterations");
param_scaleComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "No scaling", "Equilibration scaling", "Geometric mean scaling" }));
jLabel11.setText("LP Presolver");
param_msglevComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "No output", "Error messages only", "Normal output", "Full output (includes informational messages)" }));
param_msglevComboBox.setToolTipText("");
param_lpsolverComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Revised simplex method.", "Interior point method. " }));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel4)
.addComponent(jLabel5)
.addComponent(jLabel6)
.addComponent(jLabel7)
.addComponent(jLabel8)
.addComponent(jLabel9)
.addComponent(jLabel10)
.addComponent(jLabel11)
.addComponent(jLabel12))
.addGap(24, 24, 24)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(param_priceComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_roundComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_itlimTextField)
.addComponent(param_itcntTextField)
.addComponent(param_branchComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_btrackComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_lpsolverComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_presolTextField)
.addComponent(param_msglevComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_scaleComboBox, 0, 1, Short.MAX_VALUE)
.addComponent(param_dualComboBox, 0, 1, Short.MAX_VALUE))
.addGap(87, 87, 87)))
.addGap(55, 55, 55))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(param_msglevComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(param_scaleComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(9, 9, 9)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(param_dualComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(param_priceComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(param_roundComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(param_itlimTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(param_itcntTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9)
.addComponent(param_branchComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(param_btrackComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(param_presolTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(param_lpsolverComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(97, Short.MAX_VALUE))
);
jSplitPane1.setRightComponent(jPanel1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 774, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jSplitPane1)
.addGap(0, 0, 0)))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 413, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1))
);
}// </editor-fold>//GEN-END:initComponents
private void AButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AButtonActionPerformed
String text = this.ATextField.getText();
this.ATextField.setText("["+createOctMtx(text)+"]");
}//GEN-LAST:event_AButtonActionPerformed
private void bButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bButtonActionPerformed
String text = this.bTextField.getText();
this.bTextField.setText("["+createOctMtx(text)+"]");
}//GEN-LAST:event_bButtonActionPerformed
private void lbButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lbButtonActionPerformed
String text = this.lbTextField.getText();
this.lbTextField.setText("["+createOctMtx(text)+"]");
}//GEN-LAST:event_lbButtonActionPerformed
private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpButtonActionPerformed
}//GEN-LAST:event_helpButtonActionPerformed
private void ubButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ubButtonActionPerformed
String text = this.ubTextField.getText();
this.ubTextField.setText("["+createOctMtx(text)+"]");
}//GEN-LAST:event_ubButtonActionPerformed
private void cButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cButtonActionPerformed
String text = this.cTextField.getText();
this.cTextField.setText("["+createOctMtx(text)+"]");
}//GEN-LAST:event_cButtonActionPerformed
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_runButtonActionPerformed
String c= this.cTextField.getText();
String A =this.ATextField.getText();
String b=this.bTextField.getText();
String lb =this.lbTextField.getText();
String ub =this.ubTextField.getText();
String ctype =this.ctypeTextField.getText();
String vartype =this.vartypeTextField.getText();
int sense = this.senseComboBox.getSelectedIndex();
int param_msglev = this.param_msglevComboBox.getSelectedIndex();
int param_scale = this.param_scaleComboBox.getSelectedIndex();
int param_dual = this.param_dualComboBox.getSelectedIndex();
int param_price = this.param_priceComboBox.getSelectedIndex();
int param_round = this.param_roundComboBox.getSelectedIndex();
String param_itlim =this.param_itlimTextField.getText();
String param_itcnt = this.param_itcntTextField.getText();
int param_branch = this.param_branchComboBox.getSelectedIndex();
int param_btrack = this.param_btrackComboBox.getSelectedIndex();
String param_presol = this.param_presolTextField.getText();
int param_lpsolver = this.param_lpsolverComboBox.getSelectedIndex();
if(c.equals("") ||
A.equals("") ||
b.equals("") ||
lb.equals("") ||
ub.equals("") ||
ctype.equals("") ||
vartype.equals("")) {
JOptionPane.showMessageDialog(this, "Insufficient data.", "DomainMath IDE", JOptionPane.ERROR_MESSAGE);
}else{
declare("c",c);
declare("A",A);
declare("b",b);
declare("lb",lb);
declare("ub",ub);
declare("ctype",ctype);
declare("vartype",vartype);
if(sense ==0) {
declare("sense","1");
}else{
declare("sense","-1");
}
declare("param.msglev",""+param_msglev);
if(param_scale != 0) {
declare("param.scale",""+(param_scale-1));
}
if(param_dual != 0) {
declare("param.dual",""+(param_dual-1));
}
if(param_price != 0) {
declare("param.price",""+(param_price-1));
}
if(param_round != 0) {
declare("param.round",""+(param_round-1));
}
if(!param_itlim.equals("")) {
declare("param.itlim",param_itlim);
}
if(!param_itcnt.equals("")) {
declare("param.itcnt",param_itcnt);
}
if(!param_presol.equals("")) {
declare("param.itlim",param_presol);
}
if(param_branch != 0) {
declare("param.brach",""+(param_branch-1));
}
if(param_btrack != 0) {
declare("param.btrack",""+(param_btrack-1));
}
if(param_lpsolver != 0) {
declare("param.lpsolver",""+(param_lpsolver-1));
}
if(param_lpsolver ==0) {
declare("param.lpsolver","1");
}else{
declare("param.lpsolver","2");
}
MainFrame.octavePanel.eval("[xopt, fmin, status, extra] = glpk (c, A, b, lb, ub, ctype, vartype, sense, param)");
}
}//GEN-LAST:event_runButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton AButton;
private javax.swing.JTextField ATextField;
private javax.swing.JButton bButton;
private javax.swing.JTextField bTextField;
private javax.swing.JButton cButton;
private javax.swing.JTextField cTextField;
private javax.swing.JTextField ctypeTextField;
private javax.swing.JButton helpButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JButton lbButton;
private javax.swing.JTextField lbTextField;
private javax.swing.JComboBox param_branchComboBox;
private javax.swing.JComboBox param_btrackComboBox;
private javax.swing.JComboBox param_dualComboBox;
private javax.swing.JTextField param_itcntTextField;
private javax.swing.JTextField param_itlimTextField;
private javax.swing.JComboBox param_lpsolverComboBox;
private javax.swing.JComboBox param_msglevComboBox;
private javax.swing.JTextField param_presolTextField;
private javax.swing.JComboBox param_priceComboBox;
private javax.swing.JComboBox param_roundComboBox;
private javax.swing.JComboBox param_scaleComboBox;
private javax.swing.JButton runButton;
private javax.swing.JComboBox senseComboBox;
private javax.swing.JButton ubButton;
private javax.swing.JTextField ubTextField;
private javax.swing.JTextField vartypeTextField;
// End of variables declaration//GEN-END:variables
}