26 비공개사전<튜플<문자열, 문자열>,
더블> 거리 =
신규사전<Tuple<문자열, 문자열>,
더블>()
28{
신규튜플<문자열,문자열> (
"시애틀",
"뉴욕"), 2.5 },
29{
신규튜플<문자열,문자열> (
"시애틀",
"시카고"), 1.7 },
30{
신규튜플<문자열,문자열> (
"시애틀",
"토피카"), 1.8 },
31{
신규튜플<문자열,문자열> (
"샌디에고",
"뉴욕"), 2.5 },
32{
신규튜플<문자열,문자열> (
"샌디에고",
"시카고"), 1.8 },
33{
신규튜플<문자열,문자열> (
"샌디에고",
"토피카"), 1.4 }
36 비공개사전<문자열, 더블> 용량 =
신규사전<string, double>()
42 비공개사전<문자열, 더블> 수요 =
신규사전<문자열, 더블>()
51 비공개 더블phiSteps = 0.05;
53 비공개사전<string, List<Tuple<String,String,double>>> resultX;
58this.chart1.Series.Clear();
59this.chart1.Visible =
거짓;
60this.chart1.ChartAreas[0].AxisY.Title =
"$ (x1000)";
61this.chart1.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Horizontal;
62this.chart1.ChartAreas[0].AxisX.Title =
"파이";
63this.chart1.ChartAreas[0].AxisX.TextOrientation = TextOrientation.Horizontal;
65 foreach(튜플<문자열, 문자열> t
in거리.키)
66this.dataGridDistance.Rows.Add(
신규 문자열[] t.Item1, t.Item2, 거리[t].ToString() );
68this.dataGridCapacity.Rows.Add(
신규 문자열[] t, 용량[t].ToString() );
70this.dataGridDemand.Rows.Add(
신규 문자열[] t, 수요[t].ToString() );
71this.dataGridPhi.Rows.Add(
신규 문자열[] phiMin.ToString(), phiMax.ToString(), phiSteps.ToString() );
74 비공개 공허button1_Click(
객체발신자, EventArgs e)
76this.dataGridView1.Rows.Clear();
77this.chart1.Series.Clear();
78this.chart1.ResetAutoValues();
79this.chart1.Visible =
참;
80this.chart1.Series.Add(
"비용");
82this.resultX =
신규사전<string, List<Tuple<string, string, double>>>();
90 foreach(DataGridViewRow 행
에this.dataGridDistance.Rows)
91d.
AddRecord(row.Cells[0].Value.ToString(), row.Cells[1].Value.ToString()).
값= Convert.ToDouble(row.Cells[2].Value);
93 GAMSSeti = 데이터.AddSet(
"나", 1,
"통조림 공장");
94 슬롯 게임매개변수a = data.AddParameter(
"a", 1,
"케이스에 있는 식물 i의 용량");
95 for (
intidx = 0; idx < this.dataGridCapacity.Rows.Count - 1; idx++)
97i.
AddRecord(this.dataGridCapacity.Rows[idx].Cells[0].Value.ToString());
98a.
AddRecord(this.dataGridCapacity.Rows[idx].Cells[0].Value.ToString()).
값= Convert.ToDouble(this.dataGridCapacity.Rows[idx].Cells[1].Value);
101 GAMSSetj = 데이터.AddSet(
"j", 1,
"시장");
102 슬롯 게임매개변수b = data.AddParameter(
"b", 1,
"경우에 따라 시장 j의 수요");
103 용 (
intidx = 0; idx < this.dataGridDemand.Rows.Count - 1; idx++)
105j.
AddRecord(this.dataGridDemand.Rows[idx].Cells[0].Value.ToString());
106b.
AddRecord(this.dataGridDemand.Rows[idx].Cells[0].Value.ToString()).
값= Convert.ToDouble(this.dataGridDemand.Rows[idx].Cells[1].Value);
111opt.AllModelTypes =
"conopt";
112 GAMSJobt7 = ws.AddJobFromString(GetModelText());
125목록<더블> 필리스트 =
신규목록<더블>();
126 더블v = Convert.ToDouble(this.dataGridPhi.Rows[0].Cells[0].Value);
130v += Convert.ToDouble(this.dataGridPhi.Rows[0].Cells[2].Value);
131}
그동안(v < Convert.ToDouble(
이것.dataGridPhi.Rows[0].Cells[1].Value) + 1e-10);
133 foreach (
더블파이값
in필리스트)
135phi.FirstRecord().Value = phiValue;
137 더블obj = mi.SyncDB.GetVariable(
"z").FindRecord().레벨;
138 문자열[] 행 =
신규 문자열[] phiValue.ToString(
"0.00"), mi.ModelStatus.ToString(), mi.SolveStatus.ToString(), obj.ToString(
"0.00") };
139this.dataGridView1.Rows.Add(행);
141목록<Tuple<String,String, double>> l =
신규목록<Tuple<String,String, double>>();
143l.추가(
신규튜플<문자열, 문자열, 더블>(rec.Key(0),rec.Key(1),rec.
레벨));
145this.resultX.Add(phiValue.ToString(
"0.00"), l);
147 if(mi.ModelStatus ==
ModelStat.OptimalGlobal || mi.ModelStatus ==
ModelStat.OptimalLocal)
149this.chart1.Series[
"비용"].Points.AddXY(phiValue, obj);
156 비공개 무효button2_Click(
객체발신자, EventArgs e)
158OpenFileDialog 브라우저 =
신규OpenFileDialog();
160browser.DefaultExt =
"accdb";
161browser.Filter =
"액세스 데이터베이스(*.accdb)|*.accdb";
162browser.InitialDirectory = 환경.CurrentDirectory;
164 if(browser.ShowDialog() == DialogResult.OK)
167OleDbConnection 연결 =
널;
170연결 =
신규OleDbConnection(
"공급자=Microsoft.ACE.OLEDB.12.0;데이터 소스="+ 브라우저.파일 이름);
173this.dataGridDistance.Rows.Clear();
174OleDbCommand cmd =
신규OleDb명령(
"공장, 시장, 거리 FROM 거리 선택", 연결);
176OleDbDataReader 리더 = cmd.ExecuteReader();
178this.dataGridDistance.Rows.Add(
신규 문자열[] reader.GetString(0), reader.GetString(1), reader.GetValue(2).ToString() );
181this.dataGridCapacity.Rows.Clear();
182cmd =
신규OleDb명령(
"공장 선택, 공장에서 용량", 연결);
183reader = cmd.ExecuteReader();
185this.dataGridCapacity.Rows.Add(
신규 문자열[] reader.GetString(0), reader.GetValue(1).ToString() );
188this.dataGridDemand.Rows.Clear();
189cmd =
신규OleDb명령(
"시장 선택, 시장 수요", 연결);
190reader = cmd.ExecuteReader();
192this.dataGridDemand.Rows.Add(
신규 문자열[] reader.GetString(0), reader.GetValue(1).ToString() );
197MessageBox.Show(
"데이터베이스에서 데이터를 읽는 동안 오류가 발생했습니다. \n"+ 예: 메시지);
204 비공개 무효dgvCellBeginEdit(
객체발신자, DataGridViewCellCancelEventArgs e)
206((DataGridView)발신자).Tag = ((DataGridView)발신자).Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
209 비공개 무효dgvCellEndEdit(
객체발신자, DataGridViewCellEventArgs e)
211DataGridView dgv = ((DataGridView)발신자);
212 객체값 = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
215 if(e.ColumnIndex == 0)
218 if(dgv.Equals(
이것.dataGridCapacity))
224 if((dgv.Tag ==
널|| dgv.Tag.Equals(String.Empty)) && 값 !=
널&& !value.Equals(String.Empty))
228 for (
inti = 0; i < this.dataGridDemand.Rows.Count - 1; 나++)
229this.dataGridDistance.Rows.Add(값,
이것.dataGridDemand.Rows[i].Cells[0].Value);
232 for (
inti = 0; i < this.dataGridCapacity.Rows.Count - 1; 나++)
233this.dataGridDistance.Rows.Add(
이것.dataGridCapacity.Rows[i].Cells[0].값, 값);
239 foreach(DataGridViewRow r
inthis.dataGridDistance.Rows)
240 if(r.Cells[colIdx].Value.Equals(dgv.Tag))
241r.Cells[colIdx].Value = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
246 비공개 공허dgvSelectionChanged(
객체발신자, EventArgs e)
248 if(((DataGridView)sender).SelectedRows.Count != 0)
249((DataGridView)발신자).Tag = ((DataGridView)발신자).SelectedRows[0].Cells[0].Value;
252 비공개 공허dgvRows제거됨(
객체발신자, DataGridViewRowEventArgs e)
254DataGridView dgv = ((DataGridView)발신자);
256 if(dgv.Equals(
이것.dataGridCapacity))
260 용 (
inti = this.dataGridDistance.RowCount - 1; 나는 >= 0; 나--)
262DataGridViewRow r = this.dataGridDistance.Rows[i];
263 if(r.Cells[colIdx].Value.Equals(dgv.Tag))
264this.dataGridDistance.Rows.Remove(r);
268 비공개 무효updateResultX()
270this.dataGridViewX.Rows.Clear();
271 문자열selectedPhi = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
272 foreach(튜플<문자열, 문자열, 더블> 행
에this.resultX[selectedPhi])
273this.dataGridViewX.Rows.Add(row.Item1, row.Item2, row.Item3.ToString(
"0.00"));
276 비공개 무효dataGridView1_CellClick(
객체발신자, DataGridViewCellEventArgs e)
301스칼라 f 운임(1,000마일당 케이스당 달러) /90/ ;
302스칼라 파이 수요 및 비용 탄력성 계수 /1/;
304매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
306c(i,j) = f * d(i,j) / 1000 ;
316공급(i) 공장 i의 공급 제한을 준수합니다.
317수요(j)는 시장 j의 수요를 충족합니다. ;
319비용 .. z =e= sum((i,j), c(i,j)*x(i,j)**phi) ;
321공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
323수요(j) .. sum(i, x(i,j)) =g= sqr(1-phi)*b(j) ;